Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

17
Desarrollo de aplicaciones para Android 2: La arquitectura: los limites y las posibilidades Eugenio Jacobo Hernández Valdelamar Diciembre, 2010.

description

La arquitectura de Android y las plataformas para desarrollo de aplicaciones.E J Hernández Valdelamar. Mayo, 2011.

Transcript of Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Page 1: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Desarrollo de aplicaciones para Android

2: La arquitectura: los limites y las posibilidades

Eugenio Jacobo Hernández ValdelamarDiciembre, 2010.

Page 2: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Contenido

● ¿Qué puedo hacer con Android?● La arquitectura de Android

● En la base Linux– Plataformas de aplicaciones

● Librerías y runtime Android● Framework de aplicaciones● Aplicaciones

● Armando el rompecabezas: una aplicación

Page 3: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Introducción

● Todas las plataformas de programación permiten hacer al menos un Hola Mundo, pero por lo general, queremos estas herramientas para hacer mucho más.

● En mi experiencia, los factores que dictan hasta dónde se puede llegar son:● Dispositivo. No será lo mismo una PDA que solo sirve de agenda, que

otra con conectividad a Internet, sensores, etc.

● Sistema operativo. Todo lo que necesitemos hay que solicitarlo al SO, así que hay que saber qué puede darnos y cómo pedírselo.

● Lenguaje de programación. Dicta cómo le indicaremos al dispositivo qué hacer. Si el lenguaje permite fluidez en las expresiones, mejor.

● Framework/SDK/APIs. Siempre hay diferencia entre hacer algo desde cero a consumir algo ya hecho. Para conectarse a Internet, no será muy práctico empezar por implementar el protocolo http.

Page 4: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

¿Qué puedo hacer con el nuevo juguete?

● Conocer la arquitectura de la plataforma es esencial para: ● Evaluar el alcance, las formas de uso, funcionalidad, seguridad,

rendimiento, mantenimiento, extensibilidad, etc.● Saber cómo está organizado el sistema y cuáles son sus partes● Saber qué podemos hacer y qué no (áreas de oportunidad)● Calcular el esfuerzo que nos puede llevar el desarrollo de algo en

la plataforma●

Page 5: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

La foto oficial de la arquitectura

Page 6: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

La base: un kernel Linux

● Android depende de un Linux versión 2.6.x para los servicios base del sistema como seguridad, gestión de memoria, gestión de procesos, stack de red y modelo de drivers.

● El núcleo se encarga de todo lo relativo al hardware, como la administración de energía y los drivers para el hardware del dispositivo.

● El núcleo actúa como una capa de abstracción entre el hardware y el resto del stack de software.

Page 7: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Desarrollo sobre la plataforma base vs plataforma de aplicaciones (middleware)

Si los dispositivos solo tuvieran el SO, para desarrollar habría que codificar en C, y tener un amplio conocimiento a bajo nivel para acceder a las funcionalidades de red, el acceso a periféricos, rehacer UIs, etc.

Para disminuir esos tiempos es que se requiere el soporte de una capa que permita acceder y consumir todas las funcionalidades del dispositivo, sin tener que conocer detalles de bajo nivel.

Este espacio está siendo llenado por diversas ofertas, lo cual es muy sano para las diversas comunidades de desarrolladores.

Page 8: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Linux en dispositivos móviles: “en hombros de gigantes”

Uniting Mobile Linux Application Platforms. 2008.Bill Weinberg, LinuxPundit.com

Page 9: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Ahí viene .Net: Monodroid

La propuesta primaria de plataforma para desarrollo de aplicaciones en Android está basada en un runtime para Java montado sobre el kernel.

Los desarrolladores .Net se beneficiaran de una plataforma para desarrollo de aplicaciones que tendrá el runtime Mono.

Seguramente aparecerán más plataformas con esta misma arquitectura.

De última hora (mayo 2011): “alguien” compró Novell y el futuro de Mono es incierto.

http://monodroid.net/Documentation/Architecture

Page 10: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Un ambiente Monodroid

http://cup-coffe.blogspot.com/2010/09/cuando-me-entere-del-comienzo-de-un.htmlhttp://weblogs.asp.net/chrishardy/archive/2010/08/21/develop-with-c_2D00_sharp-on-the-android-sure-introducing-monodroid.aspx

Monodroid plug-inpara VS 2010

Visual Studio 2010 (standard o +)VS 2008??

Android SDK

Page 11: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

En los hombros del kernel: librerías y una máquina virtual

● En el siguiente nivel se encuentran las librerías del Android SDK, las librerías Java básico y el runtime de ejecución Android, que se basa en la Dalvick Virtual Machine (DVM).

● En Android, todos los procesos se ejecutan en una máquina virtual independiente, de modo que, ningún proceso puede interferir el otro, este trabajo se realiza a través de DVM.

Page 12: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Librerías Android

● Android incluye un set de librerías C/C++ usadas por varios componentes del sistema Android. Éstas capacidades se exponen a los desarrolladores a través del framework de aplicaciones de Android.

● Algunas son: System C library (implementación librería C standard), librerías de medios, librerías de gráficos, 3d, SQLite, entre otras.

● Se puede decir que las librerías son conjuntos de instrucciones que le dicen al dispositivo como lidiar con distintos tipos de datos (p.ej. La librería mediamedia permite manejar diversos formatos de audio y video).

Page 13: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

El framework de aplicaciones

● Esta capa provee bloques de construcción de alto nivel que permiten crear nuevas aplicaciones

● El framework de aplicación incluye programas para administrar el funcionamiento básico del teléfono, switcheo entre procesos o programas, etc.

● Componentes:● Activity manager● Content providers

Page 14: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Aplicaciones y widgets

● En esta capa están las aplicaciones que vienen con Android o las que desarrollemos.

● Aplicaciones: cubren toda la pantalla e interactuan con el usuario.

● Widgets: operan en el área rectangular de la aplicación Home.

Page 15: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Comentarios finales

● Hasta este punto no he tenido el tiempo para dedicarme a prototipar y empaparme de la experiencia de desarrollo.

● Sin embargo, el tsunami de dispositivos Android es un hecho, por lo que hay que plantear la mejor forma de hacer desarrollo en esta plataforma.

Page 16: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

Referencias

● http://developer.android.com/guide/basics/what-is-android.html

● http://electronics.howstuffworks.com/google-phone2.htm

● http://benno.id.au/blog/2007/11/13/android-under-the-hood

● http://technbiz.blogspot.com/2009/05/android-architecture.html

● Android Architecture Tutorial: Developing an App with a Background Service (using IPC) http://mindtherobot.com/blog/37/android-architecture-tutorial-developing-an-app-with-a-background-service-using-ipc/

● OpenGL ES architecture on Android http://blog.graphtech.co.il/opengl-es-architecture-on-android/

● Android GUI Architecture http://androidapps.org.ua/i_sect13_d1e11121.html

● Android Application Development, 1st Edition http://androidapps.org.ua/

● Inside the Android Application Framework http://sites.google.com/site/io/inside-the-android-application-framework

● What is sw architecture? http://msdn.microsoft.com/en-us/library/ee658098.aspx

Page 17: Desarrollo de aplicaciones p/Android. 2: Arquitectura: limites y posibilidades

● Common Tasks and How to Do Them in Android http://developer.android.com/guide/appendix/faq/commontasks.html

● Introduction to Android development : TouchCalculator http://www.codeproject.com/KB/android/androidcalculator.aspx