Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resumen
Android es una pila de software de código abierto basado en Linux desarrollado
inicialmente para dispositivos móviles y posteriormente hacia otros instrumentos. Es
desarrollado por el conglomerado de empresas: Open Handset Alliance, el cual
encabeza Google.
La arquitectura de este sistema operativo está compuesta por cuatro capas; la
primera de ellas es un kernel basado en Linux, le siguen las bibliotecas entre las
que se encuentran las básicas correspondientes a la máquina virtual, se encuentra
el marco de aplicaciones o framework y finalmente las aplicaciones.
A continuación, se presentan los cuatro tipos de capas:
1. Kernel de Linux:
Linux es un núcleo mayormente libre semejante al núcleo de Unix. Linux es uno de
los principales ejemplos de software libre y de código abierto. Linux está licenciado
bajo la GPL v2 salvo el hecho que tiene blobs binarios no libres y la mayor parte del
software incluido en el paquete que se distribuye en su sitio web es software libre.
Está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día
tiene lugar en la Linux Kernel Mailing List Archive.
El núcleo Linux fue concebido por el entonces estudiante de ciencias de la
computación finlandés Linus Torvalds en 1991. Linux consiguió rápidamente
desarrolladores y usuarios que adoptaron códigos de otros proyectos de software
libre para usarlos con el nuevo núcleo de sistema. A día de hoy miles de
programadores de todo el mundo contribuyen en su desarrollo.
Linux es multiprogramado, dispone de memoria virtual, gestión de memoria,
conectividad en red y permite bibliotecas compartidas. Linux es multiplataforma y es
portable a cualquier arquitectura siempre y cuando esta disponga de una versión de
GCC compatible.
2. Bibliotecas:
La siguiente capa que se sitúa justo con el kernel la componen las bibliotecas
nativas de Android, estas están escritas en C o C++ y compiladas para la
arquitectura hardware especifica en cada dispositivo. Normalmente están hechas
por el fabricante que también se encarga de instalarlas en el dispositivo antes de
ponerlo en el mercado. El objetivo de las bibliotecas es proporcionar funcionalidad a
las aplicaciones para tareas que se repiten con frecuencias, evitando codificarlas
cada vez y garantizando que las tareas se lleven a cabo de manera más eficiente.
Estas bibliotecas se ofrecen a los desarrolladores a través del marco de trabajo de
aplicaciones de Android; algunas son: System C library {implementación biblioteca
C estándar}, bibliotecas de medios, bibliotecas de gráficos, 3D, SQLite, FreeType,
WebKit {navegador}, SSL {cifrado de comunicaciones}.
Los frameworks pueden ser utilizados para programar con diferentes lenguajes
de programación, aunque bien es cierto que en general suelen especializarse en
alguno o algunos en concreto, incluyendo funciones especiales para los mismos.
Ejemplos de frameworks
4. Aplicaciones:
La arquitectura en una aplicación Android son como los planos de una casa cuando
queremos construirla, nos brindan la estructura base de nuestra aplicación. Lo que
nos permite tener un código mantenible a lo largo del tiempo. Así como en el plano
de una casa dividimos las secciones como cocina, sala, baños, dormitorios, etc. Así
mismo los componentes de arquitectura nos permiten dividir nuestro código en
clases. Existen muchas formas de arquitecturar una aplicación móvil, todo depende
de las necesidades de la aplicación.
Hay diferentes formas de organizar nuestro código {clases, interfases, etc.} a lo cual
le llamamos patrones de arquitectura; como por ejemplo: MVVM,MVP, MVC, etc.
Google recomienda el patrón de arquitectura MVVM para el desarrollo de
aplicaciones nativas y además ha creado una serie de librerías que nos brindan
componentes para facilitar la implementación de dicho patrón. Algunos de esos
componentes son: LifeCycle, LifeCycles Observes, ViewModel, LiveData.
Este es un patrón de arquitectura multipropósito basada en MVVM.
En este punto entran los principios de diseño de software, y uno de ellos es la
separación de responsabilidades. Nuestra aplicación debe estar dividida en
clases donde cada una tenga cierta responsabilidad. Las tres clases que se van a
utilizar son: UI Crontroller, ViewModel y LifeData.