¿Qué es Android?

Android es una pila de desarrollo completo para smartphone, basado en el sistema operativo Linux y que ofrece una interfaz de programación (SDK) basada en Java, aunque también es posible actualmente desarrollar en C/C++ (NDK). Esta pila completa de desarrollo nos proporciona pues herramientas tales como un compilador, un depurador y un emulador, así como su propia máquina virtual de Java (Dalvik Virtual Machine – DVM). Android fue un proyecto origialmente concebido por Andy Rubin y tras ser adquirido por Google fue usado como base para crear la Open Handset Alliance.

Android usa una máquina virtual especial, llamada Dalvik que no sigue las reglas de Java y es por esto que Oracle (actual propietario de la patente) está en un juicio con Google sobre esta materia. Dalvik utiliza bytecodes especiales, por lo tanto, no se puede ejecutar bytecodes estándares de Java en Android. Android tiene una herramienta "dx", que permite convertir archivos de clases Java en archivos de formato "dex" (Dalvik ejecutables). Todas las aplicaciones de Android se empaquetan en archivos de formato .apk (Android paquete) usando el programa "AAPT" (Android activos Packaging Tool). Para simplificar el desarrollo Google ofrece herramientas de desarrollo Android (ADT) que es un plugin para Eclipse, que realiza automáticamente la conversión de las clases java a archivos .dex y crea el paquete .apk para su despliegue en los celulares que soportan el sistema operativo.

Android tiene soporte para gráficos 2-D y 3-D usando las librerías OpenGL (que es un estándar de la industria) y admite el almacenamiento de datos en una base de datos en SQLite (que también es otro estándar abierto).

Cada aplicaciones de Android se ejecuta en su propio proceso y bajo su propio nombre de usuario que es generado automáticamente por el sistema Android durante la instalación de la aplicación. Por lo tanto cada aplicación está aislada de las otras durante su ejecución y una aplicación de que colapse no  pude  dañar fácilmente a otras aplicaciones que estén corriendo en ese momento.

Aquí un diagrama tomado directamente de la documentación de Android que nos muestra la arquitectura interna de Android:

Arquitectura de un sistema Android

Ya que android es un sistema Open Source, ¿De donde puedo descargar el código fuente?

Aunque es posible descargar el código fuente de Android, siguiendo los pasos descritos en este URL, no es recomendable tratar de hacer eso a menos que se este involucrado en el diseño de celulares, o se esté trabajando en el desarrollo de una funcionalidad muy específica.

Si deseo implementar una funcionalidad que no está soportada en el API, Qué alternativa tengo?

Para aquellos que se encuentren en la poco probable posición de no encontrar una funcionalidad del teléfono soportado en el API, o requiran una optimización de partes del sistema para poder ganar una mejora en la performace de la aplicación (especialmente en juegos). La alternativa para ellos es NDK (Native Developer Kit), usando este toolkit extendido es posible desarrollar en C/C++ generando binarios para ARMv5TE o ARMv7-A (por ejemplo el procesador del Nexus One).

Google no recomienda desarrollar las aplicaciones enteramente en C/C++ debido a que la complejidad de manejar el código aumenta, es necesario compilaciones condicionales para soportar los dos tipos de arquitecturas disponibles y sobre todo la ganancia de performance en aplicaciones básicas es casi inperceptible.

Leave a reply

You must be logged in to post a comment.