martes, 22 de enero de 2013

Arquitectura de Android OS - Curso Android Nivel 1


¿Qué es Android?

Android es un sistema operativo desarrollado por Google para Dispositivos Móviles el cual posee una gran comunidad de desarrolladores. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Este sistema operativo esta basado en Linux y posee una Java Core Library basada en Apache Harmony.

A pesar de utilizar la librerías de Apache Harmony, la JVM es diferente, y es llamada “Dalvik Virtual Machine” (DVM). Debido a que esta maquina virtual es diferente, el bytecode estandard de Java no peude ser ejecutado directamente por la DVM, sino que debe ser convertido a archivos “.dex”.

Arquitectura del sistema operativo

Como puede observarse en la figura, el sistema se compone en 4 capas:
  • Kernel de Linux : El kernel es el núcleo del sistema operativo, posee todas las librerías de bajo nivel que permiten la interacción con el hardware, las librerías para el manejo del display, cámara, módem Wifi, GSM, Audio y memorias están en esta capa.

  • DVM y Librerías : En esta capa se encuentra la máquina virtual de Dalvik, junto con las librerías que utiliza (las que provienen de Apache Harmony) y las librerías de nivel “medio” programadas en C y C++ que proveen un nivel de abstracción con respecto a las librerías de bajo nivel que se encuentran en el kernel.

  • Application Framework : Son librerías programadas en lenguaje Java las cuales proveen al desarrollador de aplicaciones Android un fácil acceso a el hardware del dispositivo, evitando al programador tener que utilizar las librerías de nivel medio o bajo. Estas librerías serán las que utilizaremos a lo largo del curso para desarrollar aplicaciones.
  • Aplicaciones : La última capa del sistema operativo son las aplicaciones, aquí se encontrarán los programas que desarrollaremos, y como puede observarse, todo con lo que interactuamos en un dispositivo móvil, es una aplicación: Cuando marcamos un numero de teléfono, estamos utilizando una aplicación que se encarga de interactuar con el hardware del módem telefónico, cuando revisamos nuestra agenda de contactos, estamos utilizando una aplicación que lee la información de una memoria y nos la muestra en pantalla; inclusive la lista de iconos de las aplicaciones que tenemos instaladas en el “home” de nuestro teléfono, también es una aplicación.

    Detalles sobre la DVM

    La maquina virtual que utiliza Android esta optimizada para trabajar con sistemas embebidos, esto quiere decir es es rápida en procesadores chicos y posee pocos requerimientos de memoria.

    La DVM es energéticamente mas eficiente: El bytecode para DVM es más compacto, esto implica menos instrucciones, y eso se traduce en menos ciclos de CPU, que conlleva un menor consumo de batería.

    Como se mencionó anteriormente, no puede ejecutarse código de java standard sobre esta maquina virtual directamente, el proceso que se lleva a cabo es el siguiente:

    • Se escribe el programa en Java
    • Se compila a bytecode de Java estandard para aprovechar todas las optimizaciones que éste posee.
    • Se “traduce” el bytecode de Java (.class) al bytecode para la DVM (.dex).

    Esto también trae como ventaja el poder reutilizar archivos .class ya compilados.