jueves, 18 de febrero de 2010

lunes, 1 de febrero de 2010

Bienvenido Android

Como la gran mayoría sabe Google se expande a rangos extremadamente grandes , tal es que llego a los dispositivos moviles. Google creo un sistema operativo móvil basado en software libre, por lo que pude revisar sobre su arquitectura y n cosas mas es mucho mejor que "Iphone OS", pero aun no tiene muchas aplicaciones, lo cual nos invita a los desarrolladores a entrar a ese gran mundo que es la computación móvil.

En la siguientes describiré un poco que es Android, su arquitectura, en si es una traducción de la web original de Android-dev.

Bienvenido a Android!

¿Que es Android?

Android es una pila de softwares para dispotivos moviles que incluyen un sistema opeativo, middleware y aplicaciones clave. El android SDK provee las herramientas y API's necesarios para iniciar en el desarrollo de aplicaciones en plataforma Android usando el lenguaje de programacion JAVA.

Caracteristicas
  • Application framework disponible reusa y reemplazo de componentes.
  • Dalvik virtual machine optimizado para dispositivos moviles
  • Integrated browser basado en el motor WebKit de open source.
  • Optimized graphic soportado por un acostumbrada libreria grafica 2D ;graficos 3D basedos en OpenGL ES 1.0 especificaciones (acceleration de hardware opcional).
  • SQLite para estructurar los datos almacenados.
  • Media support para audio, videos, y estilos de formato de images (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
  • GSM Telephony (depende del hardware)
  • Bluetooth, EDGE, 3G, and WiFi (depende del hardware).
  • Camera, GPS, compass, and accelerometer (dependen del hardware).
  • Generoso ambiente de desarrollo incluye un emulador de dispositivo, herramientas para el depurado, memoria y perfilada performance , y un plugin para Eclipse IDE

Arquitectura de Android

El siguiente diagrama muestra los mayores componentes de el sistema operativo Android. Cada seccion es descrita en mayor detalle acontinuacion


  • Applications
Android es montado con un conjunto de aplicaciones de nucleo incluyendo un cliente de email, programa de SMS, calendario, mapas, navegador, contactos, y otros. Todas las aplicaciones son escritas en el lenguaje de programacion Java.

  • Application Framework

Para proveer una plataforma de desarrollo abierto, Android ofrece desarrollar la habilidad para una rica contruccion extrema y aplicaciones innovadoras. Desarrolladores son libres de tomar el hardware del dispositivo, información de acceso local, correr servicio de fondo, juego de alarmas, agrega notificaciones en la barra de estados, y mucho mucho mas.
Desarrolladores tienen full acceso a los mismos API's de framework usados para aplicaciones de nucleo. La arquitectutra de aplicacion es diseñada para simplificar el reuso de componentes; cualquier aplicacion puede ser publicada estas capacidades y cualquier otra aplicacion podria tomar estas capacidades (sujeta a la seguridad contrastada esfuerzada por el framework). Es el mismo mecanismo solo que los componentes son reemplazados por el usuario.
Todas las aplicaciones subyacentes es un conjunto de servicios y sistemas, incluyen: Una rica y un juego extensible de Views que pueden ser usadas para construir aplicaciones, incluido listas, grids, text boxes, buttons, y incluso un navegador web empotrado.
Content Providers que activa aplicaciones para acceder a formularios de datos desde otra aplicación (como los contactos) , o para compartir estos datos.
Resource Manager, provee acceso al no-codigo del recurso como localización de strings, graficos y archivos de layout.
Notification Manager que activa todas las aplicaciones de las alertas comunes del display en el barra de estado.
Activity Manager que administra el ciclo de vida de las aplicaciones y provee una navegación común backstack.
Librerias
Android incluye un conjunto de librerias en C/C++ usadas por varios componentes del sistema Android. Estas capacidades son expuestas a los desarrolladores la linea de framework en aplicaciones en Android. Algunas librerias de nucleo son listadas acontinuación :
Sistema de librerias en C l- a BSD- implementaciones derivadas del sistema de librerias standard de C (libc) , refinado para dispositivos basados en Linux
Librerias de Media- basadas en PacketVideo's OpenCORE; las librerias soportan playback and recording de muchos formatos populares de audio y video, como archivos de imagen estatica, incluida MPEG4, H.264, MP3, AAC, AMR, JPG, y PNG
Administrador de Superficie- administra el acceso al subsistema de pantalla y fundamentalmente compuesto por 2D y 3D capas graficas desde multiples aplicaciones.
LibWebCore - un moderno motor navegador web en el que potencia junto al navegador Android y una vista web empotrada.
SGL - Los fundamentos de un motor 2D grafico.
3D libraries - una implementacion basada en el API OpenGL ES 1.0 ; las librerias usan enteramente la aceleracion del hardware 3D (donde sea disponible) o la incluya, software de rasterizacion 3D altamente optimizado
FreeType - bitmap y vector fuentes de rendering
SQLite - un potente y ligero motor de bases de datos relacionales disponibles para todas las aplicaciones.

Android Runtime
Android incluye un conjunto de librerias de nucleo que proveen mas funcionalidades disponibles que del nucleo de librerias del lenguaje de programacion Java.
Cada aplicacion Android corre en un proceso propio con instancias propias de la maquina virtual Dalvik . Dalvik se ha escrito de modo que un dispositivo puede ejecutar varias máquinas virtuales de manera eficiente.El Dalvik VM ejecuta archivos en el Dalvik Ejecutable (.dex) formato que es optimizado para minimizar el paso de memoria. La VM es registrada-basada, y corriendo en clases compiladas en un compilador de Java que tendra transformado dentro el formato .dex para incluir la herramienta "dx" l.
La Dalvik VM depende del kernel de Linux para fundamenta funcionalidad como los hilos en administracion de bajo-nivel.

Linux Kernel
Android depende de Linux version 2.6 para servicios de sistema de nucleo como seguridad, administracion de memoria, administracion de procesos , píla de redese, y un driver modelado. El kernel tambien actua como una capa de abstraciones entre el hardaware y el resto de la pila de sofware.


En mis siguientes post hablara mas de android y iphone OS , documentacion y trabajos que realizare. Hasta otro post =)