Está en la página 1de 10

ARQUITECTURA ANDROID

Para empezar con el desarrollo de aplicaciones en Android es importante conocer


cmo est estructurado este sistema operativo. A esto le llamamos arquitectura y
en el caso de Android est formada por varias capas que facilitan al desarrollador
la creacin de aplicaciones. Adems, esta distribucin permite acceder a las capas
ms bajas mediante el uso de libreras para que as el desarrollador no tenga que
programar a bajo nivel las funcionalidades necesarias para que una aplicacin
haga uso de los componentes de hardware de los telfonos.
Cada una de las capas utiliza elementos de la capa inferior para realizar sus
funciones, es por ello que a este tipo de arquitectura se le conoce tambin
como pila.











Para entender mejor, a continuacin cito el diagrama de la arquitectura de Android
tomada del sitio oficial de Android developers:


Explicamos ahora cada una de las capas iniciando de abajo hacia arriba.

Kernel de Linux. Qu es Android?, el ncleo del sistema operativo Android est
basado en el kernel de Linux versin 2.6, similar al que puede incluir cualquier
distribucin de Linux, como Ubuntu, solo que adaptado a las caractersticas del
hardware en el que se ejecutar Android, es decir, para dispositivos mviles.
El ncleo acta como una capa de abstraccin entre el hardware y el resto de las
capas de la arquitectura. El desarrollador no accede directamente a esta capa,
sino que debe utilizar las libreras disponibles en capas superiores. De esta forma
tambin nos evitamos el hecho de quebrarnos la cabeza para conocer las
caractersticas precisas de cada telfono. Si necesitamos hacer uso de la cmara,
el sistema operativo se encarga de utilizar la que incluya el telfono, sea cual sea.
Para cada elemento de hardware del telfono existe un controlador (o driver)
dentro del kernel que permite utilizarlo desde el software.
El kernel tambin se encarga de gestionar los diferentes recursos del telfono
(energa, memoria, etc.) y del sistema operativo en s: procesos, elementos de
comunicacin (networking), etc.


Libreras. La siguiente capa que se sita justo sobre el kernel la componen las
bibliotecas nativas de Android, tambin llamadas libreras. Estn escritas en C o
C++ y compiladas para la arquitectura hardware especfica del telfono. Estas
normalmente estn hechas por el fabricante, quien tambin se encarga de
instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de las libreras
es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con
frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan
a cabo de la forma ms eficiente.
Algunas de estas libreras son:
System C library: una derivacion de la librera BSD de C estndar (libc),
adaptada para dispositivos embebidos basados en Linux.
Media Framework: librera basada en PacketVideo's OpenCORE; soporta
codecs de reproduccin y grabacin de multitud de formatos de audio vdeo e
imgenes MPEG4, H.264, MP3, AAC, AMR, JPG y PNG.
Surface Manager: maneja el acceso al subsistema de representacin
grafica en 2D y 3D.
WebKit: soporta un moderno navegador web utilizado en el navegador Android
y en la vista Webview. Se trata de la misma librera que utiliza Google Chrome
y Safari de Apple.
SGL: motor de graficos 2D.
Libreras 3D: implementacin basada en OpenGL ES 1.0 API. Las libreras
utilizan el acelerador harware 3D si est disponible, o el software altamente
optimizado de proyeccin 3D.
FreeType: fuentes en bitmap y renderizado vectorial.
SQLite: potente y ligero motor de base de datos relacionales disponible para
todas las aplicaciones.
SSL: proporciona servicios de encriptacin secure socket layer

Entorno de ejecucin. Como podemos apreciar en el diagrama, el entorno de
ejecucin de Android no se considera una capa en s mismo, dado que tambin
est formado por libreras. Aqu encontramos las libreras con las funcionalidades
habituales de Java as como otras especficas de Android.
El componente principal del entorno de ejecucin de Android es la mquina
virtual Dalvik.Las aplicaciones se codifican en Java y son compiladas en un
formato especfico para que esta mquina virtual las ejecute. La ventaja de esto es
que las aplicaciones se compilan una nica vez y de esta forma estarn listas para
distribuirse con la total garanta de que podrn ejecutarse en cualquier dispositivo
Android que disponga de la versin mnima del sistema operativo que requiera la
aplicacin.
Cabe aclarar que Dalvik es una variacin de la mquina virtual de Java, por lo
que no es compatible con el bytecode Java. Java se usa nicamente como
lenguaje de programacin, y los ejecutables que se generan con el SDK de
Android tienen la extensin .dex que es especfico para Dalvik, y por ello no
podemos correr aplicaciones Java en Android ni viceversa.

Framework de aplicaciones. La siguiente capa est formada por todas las clases
y servicios que utilizan directamente las aplicaciones para realizar sus funciones.
La mayora de los componentes de esta capa son libreras Java que acceden a los
recursos de las capas anteriores a travs de la mquina virtual Dalvik. Siguiendo
el diagrama encontramos:
1. Activity Manager. Se encarga de administrar la pila de actividades de nuestra
aplicacin as como su ciclo de vida.
2. Windows Manager. Se encarga de organizar lo que se mostrar en pantalla.
Bsicamente crea las superficies en la pantalla que posteriormente pasarn a ser
ocupadas por las actividades.
3. Content Provider. Esta librera es muy interesante porque crea una capa que
encapsula los datos que se compartirn entre aplicaciones para tener control
sobre cmo se accede a la informacin.
4. Views. En Android, las vistas los elementos que nos ayudarn a construir las
interfaces de usuario: botones, cuadros de texto, listas y hasta elementos ms
avanzados como un navegador web o un visor de Google Maps.
5. Notification Manager. Engloba los servicios para notificar al usuario cuando algo
requiera su atencin mostrando alertas en la barra de estado. Un dato importante
es que esta biblioteca tambin permite jugar con sonidos, activar el vibrador o
utilizar los LEDs del telfono en caso de tenerlos.
6. Package Manager. Esta biblioteca permite obtener informacin sobre los paquetes
instalados en el dispositivo Android, adems de gestionar la instalacin de nuevos
paquetes. Con paquete nos referimos a la forma en que se distribuyen las
aplicaciones Android, estos contienen el archivo .apk, que a su vez incluyen los
archivos .dex con todos los recursos y archivos adicionales que necesite la
aplicacin, para facilitar su descarga e instalacin.
7. Telephony Manager. Con esta librera podremos realizar llamadas o enviar y
recibir SMS/MMS, aunque no permite reemplazar o eliminar la actividad que se
muestra cuando una llamada est en curso.
8. Resource Manager. Con esta librera podremos gestionar todos los elementos que
forman parte de la aplicacin y que estn fuera del cdigo, es decir, cadenas de
texto traducidas a diferentes idiomas, imgenes, sonidos o layouts. En un post
relacionado a la estructura de un proyecto Android veremos esto ms a fondo.
9. Location Manager. Permite determinar la posicin geogrfica del dispositivo
Android mediante GPS o redes disponibles y trabajar con mapas.
10. Sensor Manager. Nos permite manipular los elementos de hardware del telfono
como el acelermetro, giroscopio, sensor de luminosidad, sensor de campo
magntico, brjula, sensor de presin, sensor de proximidad, sensor de
temperatura, etc.
11. Cmara: Con esta librera podemos hacer uso de la(s) cmara(s) del dispositivo
para tomar fotografas o para grabar vdeo.
12. Multimedia.Permiten reproducir y visualizar audio, vdeo e imgenes en el
dispositivo.

Aplicaciones. En la ltima capa se incluyen todas las aplicaciones del dispositivo,
tanto las que tienen interfaz de usuario como las que no, las nativas (programadas
en C o C++) y las administradas (programadas en Java), las que vienen
preinstaladas en el dispositivo y aquellas que el usuario ha instalado.
En esta capa encontramos tambin la aplicacin principal del sistema: Inicio
(Home) o lanzador (launcher), porque es la que permite ejecutar otras aplicaciones
mediante una lista y mostrando diferentes escritorios donde se pueden colocar
accesos directos a aplicaciones o incluso widgets, que son tambin aplicaciones
de esta capa.

Como podemos ver, Android nos proporciona un entorno sumamente poderoso
para que podamos programar aplicaciones que hagan cualquier cosa. Nada dentro
de Android es inaccesible y podemos jugar siempre con las aplicaciones de
nuestro telfono para optimizar cualquier tarea.
El potencial de Android se sita en el control total que se le da al usuario para que
haga de su telfono un dispositivo a su medida.


ARQUITECTURAS DE APLICACIN
Ofrece una estructura para pensar, proyectar, elaborar y desarrollar aplicaciones
que se integren y funcionen bien.


Arquitectura Cliente/Servidor en dos capas:
Front/end
Back/end

Modelo de Arquitectura Cliente/Servidor
Front/end
Es la parte de la aplicacin que interacta con el usuario.
Basados en una interfaz grfica con el usuario (GUI). El Cliente corre
la aplicacin que ofrece la interfaz con el usuario.
Back/end
Es la parte no-interactiva de la aplicacin. La mayor parte reside en
las Bases de Datos (relacionales o no).
Aplicaciones Simples: no requieren una gran Base de Datos compartida, pueden
ser elaboradas solamente en el Cliente.
Aplicaciones Complejas: exigen dos capas, una para la aplicacin del usuario
(Cliente) y otra para la base de datos (Servidor).
Eventualmente, el Cliente y el Servidor podrn estar en el mismo equipamiento.


LA IMPORTANCIA DEL MVC EN ANDROID
En Android utilizamos el patrn de arquitectura llamado Modelo Vista
Controlador (MVC) cuya principal bondad consiste en separar los datos de una
aplicacin, la interfaz de usuario y la lgica de negocios en tres componentes
distintos que se relacionarn para al final tener como resultado nuestra aplicacin.
De esta forma podemos seccionar de forma ms fcil nuestro equipo de trabajo y
dedicarnos a desarrollar nuestros componentes de tal forma que construyamos
mdulos o libreras con funcionalidades especficas que incluso podramos
reutilizar en proyectos posteriores y no simplemente en el proyecto actual. Para
lograr esto, el diseo de la arquitectura de nuestra aplicacin juega un papel
importante y la capacidad de abstraccin que tengamos desarrollada.

Por ejemplo, yo me podra dedicar a desarrollar una librera que me permita hacer
conexiones con la API de Twitter. En mis clases puedo disear todas las funciones
que me ayudarn a lograr las llamadas al protocolo OAuth, aquellas que me
permitan twittear, recuperar informacin de tweets, followers, trending topics, etc.
Esta librera, con un buen diseo y abstraccin podra ser til para todos los
proyectos que necesiten conectarse con Twitter.
Volvmonos un poco tericos y expliquemos de qu se tratan los componentes de
este modelo:


Modelo. Nos referimos con modelo a las representaciones que construiremos
basadas en la informacin con la que operar nuestra aplicacin. En Java, el
modelo viene siendo anlogo a los beans que tienen la particularidad de ser
reutilizables y nos ayudan a cumplir con el proverbio de oro Dont Repeat
Yourself (DRY) haciendo a nuestras aplicaciones escalables. En esta parte del
modelo tambin juega la decisin de qu modelo para almacenar informacin
utilizar. Base de datos? Web services? El modelo que elijas depende
obviamente de las necesidades de informacin de tu aplicacin. Actualmente
tenemos tutoriales de SQLite y WebServices que te pueden ayudar.
Vista. La vista no es ms que la interfaz con la que va a interactuar el usuario. En
Android, las interfaces las construimos en XML. Suelo utilizar mucho la analoga
de que esta parte es realmente parecida a lo que hacemos en el desarrollo web
con los CSS. Contruimos nuestro esqueleto en XML que equivale al HTML de un
sitio. Posteriormente, con ayuda de estilos, que tambin los escribimos en XML,
podemos empezar a darle formato de colores, posiciones, formato, etc. a nuestro
esqueleto. Esto equivale a los CSS. Si vienes de un ambiente web, aprovecha ese
conocimiento para aplicarlo a crear aplicaciones Android. Si quieres saber ms
acerca de estilos, checaeste tutorial.
Controlador. Finalmente nos topamos con el controlador que son todas esas
clases que nos ayudarn a darle vida a esas interfaces bonitas que ya
construimos y nos permitirn desplegar y consumir informacin de/para el usuario.
Estos controladores se programan en lenguaje Java y son el core de la aplicacin.

Puedes ver la ventaja? As es, podemos tener perfiles especializados en
construir cada uno de estos componentes y tener un resultado de calidad en cada
uno y al final obtener una buena aplicacin. El truco para que todo salga bien es
ser disciplinados para poder ser programadores ordenados, eso es vital en la
aplicacin de esta arquitectura. Por experiencia, te puedo decir que si te esfuerzas
en construir una buena arquitectura de aplicacin te ahorrars muchos dolores de
cabeza despus y te evitars tener que duplicar lneas de cdigo que hacen lo
mismo, podrs escalar fcilmente tu aplicacin, agregar funcionalidades nuevas
sin tanto embrollo y por qu no?, facilitar el comienzo de nuevos proyectos.

Para empezar a aplicar esta arquitectura debes saber tambin su flujo:
1. Todo parte cuando el usuario interacta con tu aplicacin, el jugador actual es la
vista. (El usuario quiere mandar un Tweet).
2. El controlador recibe la notificacin de la accin solicitada. (Por medio de un
handler verificar si el usuario est logueado o no en su cuenta de Twitter).
3. El modelo es llamado para ser modificado. (Podemos accesar al cach de tweets
que se tenan desde la ltima vez que el usuario abri la aplicacin y se conect a
Internet y agregar el nuevo tweet).
4. Una vez que tenemos los nuevos tweets y la publicacin que quiere hacer el
usuario, el controlador nuevamente toma partida para llamar a la vista correcta
que desplegar el Timeline actualizado.
5. Listo! El usuario ya tiene la nueva interfaz para seguir interactuando con la
aplicacin y volver a iniciar el ciclo cuando solicite otra accin.
Otra de las cosas que te ayudan a seguir este modelo es tener ordenado tu
proyecto. Utiliza las convenciones de los lenguajes que utilices y las buenas
prcticas para que sea ms fcil acoplar a tus compaeros de equipo (no siempre
uno solo se echa el paquete de hacer una aplicacin y menos an si es una
compleja). Te aconsejo empezar con cosas tan sencillas como el nombramiento
de paquetes, clases y variables, y despus organizar los recursos que vayas a
utilizar delegando siempre a cada componente lo que le corresponde.
En la web puedes encontrar muchos recursos que puedes leer para ver ejemplos
de la aplicacin de esta arquitectura. No es algo nuevo pero algunos no la
conocen. Sin importar que encuentres un ejemplo para web, recuerda que en la
programacin nicamente cambia el lenguaje, la lgica y la metodologa es la que
se preserva.

FRAMEWORK PARA EL DESARROLLO DE APLICACIONES ANDROID

1-. Xamarin.Android. Se trata de un completo framework de desarrollo que permite
crear aplicaciones para Android usando C# y la plataforma .NET. Ahora puedes
sacar partido a tus conocimientos de C# y .NET para crear aplicaciones para
Android en tabletas y mviles, y adems reutilizar gran parte del cdigo para
migrar las aplicaciones a iOS y Windows Phone.
2.- PhoneGap es un framework gratuito y open source que permite crear
aplicaciones mviles multiplataforma a partir de tecnologas web como HTML5,
CSS3 y Javascript. PhoneGap est realizado sobre Apache Cordova, fue creado
por Nitobi, actualmente es propiedad de Adobe y crea de las
llamadas aplicaciones hbridas, a mitad de camino entre las nativas y las
puramente web, esto lo consigue a partir de una serie de APIs que permiten
controlar caractersticas de los dispositivos como el acelermetro, la cmara, las
notificaciones o la geolocalizacin.
3.- Sencha Touch 2

Sencha Touch 2 es una framework para el desarrollo de aplicaciones mviles de
alto rendimiento basados en HTML5. Este framework incluye soporte para
Blackberry 10 e IE 10 y es compatible con iOS, Android, BlackBerry, Windows
Phone y otros. Esta desarrollado a partir de la plataforma HTML5 de Sencha, por
lo cual se puede emplear Sencha Cmd, que es una herramienta de lnea comando
multiplataforma que permite realizar muchas tareas de manera automtica como
ser generar un nuevo proyecto.
4.- PhoneJS

PhoneJS es un framework que contiene lo necesario para crear aplicaciones
usando HTML5 y Javascript para desarrollar aplicaciones compatibles con los ms
populares smartphones y tablets. Es compatible para aplicaciones de IOS, Android
y WindowsPhone. PhoneJS aprovecha todas las funcionalidades de JQuery y
opcionalmente se puede incluir Knockout para el desarrollo de las interfaces de
usuario con el modelo MVVM (Model-View-ViewModel).

También podría gustarte