Android, un vistazo rápido
Históricamente los desarrolladores de las diferentes plataformas de teléfonos móviles debían conocer el hardware específico para el que estaban programando. Recientemente, sistemas como Symbian han proporcionado a sus desarrolladores aplicaciones que aprovechan mejor el hardware. Estas plataformas ofrecen acceso al hardware, pero esto supone trabajar con APIs propietarias difíciles de entender. Además la dificultad aumenta cuando se tiene que trabajar con diferentes implementaciones de hardware.
El mayor desarrollo producido ha sido la aparición de los MIDlets de Java, que se ejecutan sobre la máquina virtual de Java, lo que les hace independientes del hardware subyacente, siempre que exista la máquina virtual de Java que interprete los programas escritos en este lenguaje. El inconveniente es que tienen acceso restringido al hardware de los dispositivos.
En el desarrollo de aplicaciones para móviles, lo normal ha sido que las aplicaciones de terceros tengan unos permisos para acceder al hardware diferentes a los de las aplicaciones nativas escritas por los fabricantes de dispositivos. Los MIDlets de Java supusieron un gran avance pero, el no tener acceso completo al hardware de bajo nivel y otras cuestiones, hacía que no se aprovechara todo el potencial de los diferentes dispositivos.
Android forma parte de una nueva generación de sistemas operativos para móviles como Windows Mobile, iOS del Apple Iphone, Blackberry. Sin embargo, estos sistemas operativos están construidos sobre sistemas propietarios que normalmente priorizan las aplicaciones nativas a las creadas por terceros.
Android ofrece nuevas posibilidades ya que dispone de un entorno de desarrollo abierto construido sobre un kernel Linux de código abierto. El hardware está disponible para todas las aplicaciones a través de unas APIs y la interacción entre aplicaciones está completamente soportada.
En Android todas las aplicaciones son iguales, y todas, nativas o no, están escritas con las mismas APIs. Incluso podemos borrar o reemplazar las aplicaciones nativas por otras de terceros.
Android está compuesto de una serie de aplicaciones que se ejecutan sobre un framework de Java de aplicaciones orientadas a objetos, sobre un núcleo de bibliotecas de Java en una máquina virtual Dalvik, con compilación en tiempo de ejecución. Es la combinación de tres componentes:
- Un sistema operativo libre, de código abierto para dispositivos móviles.
- Una plataforma de desarrollo, de código abierto para crear aplicaciones para móviles.
- Dispositivos que funcionan con el sistema operativo Android y con las aplicaciones creadas bajo este sistema.
Los teléfonos con Android vienen con un conjunto de aplicaciones instaladas:
- Un cliente de e-mail.
- Una aplicación para la gestión de SMS.
- Un total PIM (Personal Information Management) que incluye calendario y lista de contactos.
- Un navegador web.
- Un reproductor de música y galería de imágenes.
- Una cámara y una aplicación para grabar en vídeo.
- Una calculadora.
- La pantalla de inicio.
- Un reloj despertador.
En muchos casos los dispositivos Android vienen con las siguientes aplicaciones:
- El cliente de Android Market para la descarga de aplicaciones de terceros.
- La aplicación Google Maps con todas sus funciones.
- El cliente de correo Gmail.
- Google Talk, que es un cliente de mensajería instantánea.
- El reproductor de vídeo de YouTube.
Los distribuidores personalizan su interfaz y las aplicaciones que vienen con cada dispositivo Android.
Las aplicaciones Android están escritas en Java, y se ejecutan en una máquina virtual llamada Dalvik en lugar de la tradicional Java Virtual Machine. Cada aplicación Android corre en un proceso separado dentro de su propia instancia de Dalvik.
El SDK (Software Development Kit) incluye lo necesario para crear aplicaciones en Android. Vamos a ver lo que incluye:
- Las APIs de Android. El corazón del SDK son las APIs que nos ofrecen las librerías para desarrollar las aplicaciones. Son las mismas APIs usadas por Google para crear las aplicaciones nativas.
- Herramientas de desarrollo. Herramientas que nos permiten compilar, depurar y convertir nuestro código en ejecutable.
- El Android Virtual Device Manager and Emulator. El emulador Android nos permite comprobar el aspecto y el comportamiento de las aplicaciones que creamos.
- Documentación completa. Detallada información de lo que incluye cada paquete y clase y cómo usarlos. Además, también cómo empezar y los fundamentos del desarrollo de Android.
- Código de ejemplo. Incluye una selección de aplicaciones de ejemplo que muestran algunas de las posibilidades que nos ofrece Android.
- Apoyo online. Rápidamente se ha desarrollado una comunidad activa de desarrolladores. En Google Groups tenemos http://developer.android.com/resources/community-groups.html, foro activo de desarrolladores Android. Stackoverflow en http://www.stackoverflow.com/questions/tagged/android también popular para cuestiones sobre Android.
Para ver todos los paquetes contenidos en el SDK visita http://developer.android.com/reference/packages.html.
Cada versión del SDK ofrece una versión actualizada de la API, a cada API se le asigna un número entero que es almacenado en el sistema. Este identificador es el "API level", permite al sistema determinar si una aplicación es compatible con el sistema antes de instalar la aplicación, si este valor es mayor o igual que el "API level" de la aplicacion, ésta es compatible, en caso contrario no es compatible. Cada aplicación indica el "API level" más bajo con el que es compatible mediante el atributo android:minSdkVersion, este atributo va en el archivo AndroidManifest.xml que veremos más adelante. Es importante también probar las aplicaciones en los sistemas compatibles con la API para la que está diseñada la aplicación.
Vamos a ver las diferentes versiones de Android y sus características, según Wikipedia:
1.0 (Apple Pie) |
Liberado el 23 de septiembre de 2008 |
---|---|
1.1 (Banana Bread) |
Liberado el 9 de febrero de 2009 |
1.5 (Cupcake) Basado en el kernel de Linux 2.6.27 |
El 30 de abril de 2009, la actualización 1.5 (Cupcake) para Android fue liberada. Hubo varias características nuevas y actualizaciones en la interfaz de usuario en la actualización 1.5:
|
1.6 (Donut) Basado en el kernel de Linux 2.6.29 |
El 15 de septiembre de 2009, el SDK 1.6 (Donut) fue liberado. Se incluyó en esta actualización:
|
2.0 / 2.1 (Eclair) Basado en el kernel de Linux 2.6.29 |
El 26 de octubre de 2009, el SDK 2.0 (Eclair) fue liberado. Los cambios incluyeron:
El SDK 2.0.1 fue liberado el 3 de diciembre de 2009. El SDK 2.1 fue liberado el 12 de enero de 2010. |
2.2 (Froyo) Basado en el kernel de Linux 2.6.32 |
El 20 de mayo de 2010, el SDK 2.2 (Froyo) fue liberado. Los cambios incluyeron:
|
2.3 (Gingerbread) Basado en el kernel de Linux 2.6.35.7 Actual en smat |
El 6 de diciembre de 2010, el SDK 2.3 (Gingerbread) fue liberado. Los cambios incluyeron:
|
3.0 / 3.1 / 3.2 (Honeycomb) |
|
4.0 (Ice Cream Sandwich) |
|
4.1 (Jelly Bean) |
|
Fuente: Wikipedia
Para los que utilizan el entorno de desarrollo Eclipse, Android tiene un plug-in especial que simplifica la creación de proyectos e integra Eclipse con el emulador Android y herramientas de desarrollo.
Los componentes principales del sistema operativo Android son:
- Kernel de Linux. Servicios básicos tales como controladores hardware, gestión de procesos y memoria, administración de seguridad, red y energía son manejados por el kernel. Asimismo proporciona una abstracción genérica para el acceso al hardware y gestiona la interfaz de usuario y recursos de la aplicación.
- Librerías. Se incluyen varias librerías del núcleo escritas en C/C++, que se ejecutan sobre el propio núcleo, tales como libc y SSL, así como:
- Una librería multimedia para reproducir audio y vídeo.
- Librerías gráficas entre las que se incluyen SGL y OpenGL para gráficos en 2D y 3D.
- SQLite para bases de datos.
- SSL y WebKit para el navegador web y seguridad en Internet.
- Runtime de Android. El Android Runtime es el motor que impulsa las aplicaciones y junto con las librerías es la base del framework.
- Librerías del núcleo. El desarrollo de aplicaciones está hecho en Java pero Dalvik no es una máquina virtual Java normal. Las librerías del núcleo de Android proporcionan casi toda la funcionalidad disponible en las librerías del núcleo de Java así como librerías Android específicas.
- Máquina virtual Dalvik. Dalvik es una máquina virtual Java optimizada para asegurar que un dispositivo puede correr múltiples instancias eficientemente.
- Framework de aplicaciones. Proporciona las clases usadas para crear aplicaciones. Asimismo proporciona una abstracción genérica para el acceso al hardware y gestiona la interfaz de usuario y recursos de la aplicación. La arquitectura permite la reutilización de componentes, cualquier aplicación puede publicar sus capacidades y otra aplicación puede hacer uso de esas capacidades (sujeto a las reglas de seguridad del framework). Este mecanismo permite que los componentes puedan ser reemplazados por el usuario.
- Aplicación. Todas las aplicaciones, nativas y de terceros, son construidas sobre la capa de aplicación a través de las APIs. La capa de aplicación se ejecuta en el Android Runtime, utilizando las clases y servicios puestos a disposición desde el Framework de aplicaciones.
Componentes principales del Sistema Operativo Android
Fuente: Wikipedia
Fuentes utilizadas para este post: Wikipedia y el libro Professional Android 2 Application Development, autor Reto Meier.
Reader Comments (2)
Estupendo el artículo, me ha encantado.
Enhorabuena, muchas gracias y mucho ánimo!
Muchas gracias, la verdad es que ha sido bastante trabajo, pero merece la pena si a la gente le gusta. Gracias por los ánimos, animan a seguir trabajando.