martes, 29 de octubre de 2013

Arquitectura Android

En esta entrada voy a escribir unas pequeñas pinceladas sobre la Arquitectura de 
Android. La arquitectura del sistema se basa en 4 capas (todas ellas desarrolladas con software libre).
  1. Linux Kernel
  2. Android Runtime
  3. Application Framework
  4. Applications
Arquitectura de Android
Las capas están producidas como un stack, desarrollando en primer lugar la capa inferior y después su superior.


1) Linux Kernel 

- El núcleo del sistema es una capa del Kernel de Linux versión 2.6.
- Esta capa resuelve servicios esenciales como el manejo de memoria, multiproceso, pila de protocolos, drivers...
- Es la única capa que realmente depende del hardware del dispositivo, por lo que es responsabilidad de fabricante su óptimo funcionamiento.

2) Runtime de Android

- Se basa en un concepto de máquina virtual Java.
- Fue necesario crear un nuevo tipo de máquina virtual, llamada Dalvik, la cual su principal función es la optimización de la capacidades de proceso del sistema.
- Cada Aplicación que se ejecuta en el sistema, corre en su propio proceso, por lo que se instancia una máquina virtual Dalvik para cada aplicación en ejecución.
- Contiene Core Library con las librerías más importantes de Java.
- En lugar de manejar ficheros .class habituales de Java, se utiliza ficheros .dex de la máquina virtual Dalvik, los cuales se suponen que están desarrollados para ahorrar memoria.
- Esta basado en registros.
- Lo interesante de esta máquina virtual es que delega al Kernel el manejo de memoria a bajo nivel.

Dentro de esta capa también encontramos las Librerías Nativas, que es un conjunto de librerías la mayoría de ellas desarrolladas en C/C++, la mayoría de las librerías que podemos encontrar son de código abierto.
Entre ellas podemos destacar:

- System C Library, que es una derivación estándar de la librería BSD de C (libc), adaptada para dispositivos embebidos basados en Linux.
- PacketVideo´s OpenCORE, que es la librería que contiene los codecs multimedia, tanto de grabación como de reproducción y personalmente opino que ya es hora de añadir aun más codecs al sistema ya que hay formatos de video y audio que aun no soportan, por lo que empobrece al visor de video nativo de Android y los usuarios del bicho verde tienen que recurrir a aplicaciones de terceros para poder reproducir sus videos o audio. 
-Webkit, es el motor de renderizado del navegador web, Google Chorme, y añadir que tambien es el de Safari de Apple.
- SSL, Secure Socket Layer, para conexiones algo más seguras con servicios de encriptación.
- FreeType, para fuentes y bitmaps renderizados vectorialmente.
- Y por último que comentar y para mi parecer lo más importante de hoy en día de los sistemas móviles y sus respectivas aplicaciones, es el uso de SQLite, un motor de base de datos en la que almacena toda la información de las aplicaciones.

3) Entorno de Aplicacion

- Proporciona una plataforma de desarrollo libre para funciones mas novedosas como sensores, localización por GPS, acelerómetro...
- Views, parte visual de los componentes.
- Content Providers, mecanismo sencillo para acceder a datos de otras aplicaciones (como los contactos, llamadas perdidas...).
- Notification Manager, permite a las aplicaciones mostrar alarmas customizadas en la barra de estado.

4) Aplicaciones

- Lo que realmente interactua el usuario con todas las funcionalidades de su dispositivo es mediante las aplicaciones tales como el teléfono, el navegador o algunos juegos absurdos.
- Hay dos maneras de desarrollar aplicaciones para Android.

  • Para la máquina virtual Dalvik, con código Java mediante el SDK (Software Development Kit) de Android.
  • O bien, utilizar el código nativo de nuestro propio terminal, las aplicaciones suelen ser escritas en C/C++  mediante NDK (Native Development Kit) de Android.

Y con esto le he pegado un pequeñito repaso a la arquitectura de Android, que no esta de más en una tecnología tan puntera como es este gran sistema operativo.


Fuente: Universitat Politècnica de València - UPV

Saludos | *
Diego Oliva

No hay comentarios:

Publicar un comentario