La máquina virtual Dalvik


Como vimos en el post “Arquitectura de Android”, este sistema operativo hace uso de una máquina virtual llamada Dalvik que se encuentra en la capa de ejecución y que ha sido diseñada para optimizar la memoria y los recursos de hardware en el entorno de los teléfonos móviles.
Un dato curioso para “telonear” este post: el nombre “Dalvik” proviene de un pueblo en Islandia, lugar de dónde proviene el ingeniero que diseñó la máquina virtual para Android.

Los engranes que mueven a Dalvik
Dalvik es una máquina virtual intérprete que ejecuta archivos en el formato Dalvik Executable (*.dex), un formato optimizado para el almacenamiento eficiente y ejecución mapeable en memoria. Su objetivo fundamental es el mismo que cualquier máquina virtual, permite que el código sea compilado a un bytecode independiente de la máquina en la que se va a ejecutar, y la máquina virtual interpreta este  bytecode a la hora de ejecutar el programa. Una de las razones por las cuáles no se optó por utilizar la máquina virtual de Java es la necesidad de optimizar al máximo los recursos y enfocar el funcionamiento de los programas hacia un entorno dónde los recursos de memoria, procesador y almacenamiento  son escasos.
Dalvik está basada en registros y puede ejecutar clases compiladas (válgase la redundancia) por un compilador Java y que posteriormente han sido convertidas al formato nativo usando la herramienta “dx”. El hecho de que corra sobre un kernel Linux le permite delegar las tareas relacionadas con la gestión de hilos y memoria a bajo nivel.
Otra característica importante de Dalvik es que ha sido optimizada para que múltiples instancias de ella puedan funcionar al mismo tiempo con un impacto muy bajo en el rendimiento de la memoria del dispositivo. El objetivo de esto es proteger a las aplicaciones, de forma que el cierre o fallo inesperado de alguna de ellas no afecte de ninguna forma a las demás.
Dalvik != Java Virtual Machine
La máquina virtual de Java, que podemos encontrar en casi todas las PC’s actuales, se basa en el uso de las pilas. De modo contrario, Dalvik utiliza los registros, ya que los teléfonos móviles están optimizados para la ejecución basada en los mismos.
Aunque utilizamos el lenguaje Java para programar las aplicaciones Android, el bytecode de Java no es ejecutable en un sistema Android. De igual forma, las librerías Java que utiliza Android son ligeramente distintas a las utilizadas en Java Standard Edition (Java SE) o en Java Mobile Edition (Java ME), guardando también características en común.
Dalvik y la optimización en aplicaciones Android
El uso de Dalvik permite reducir bastante el tamaño del programa buscando información duplicada en las diversas clases y reutilizándola.
Lo que llamamos en Java como “recolectar basura”, que libera el espacio en memoria de objetos que ya no utilizamos en nuestros programas, ha sido perfeccionada en Android con el fin de mantener siempre libre la máxima memoria posible.
De igual forma, el hecho de que Android haga un uso extenso del lenguaje XML para definir las interfaces gráficas y otros elementos, implica que estos archivos deben ser linkeados a la hora de compilar y para que su conversión a bytecode pueda mejorar el rendimiento de nuestras aplicaciones.
A lo largo de nuestro aprendizaje en Android veremos también algunos tips y mejores prácticas para que no dependamos únicamente de Dalvik a la hora de hablar de rendimiento en aplicaciones.

Crear una AVD en Eclipse


Antes de iniciar con el tutorial de la primera aplicación en Android es importante que tengamos disponible una AVD (Android Virtual Device) en Eclipse.
Las AVD son unas herramientas imprescindibles para los desarrolladores y testers, ya que nos permiten emular en una computadora un entorno móvil a los que apuntará nuestra aplicación Android. Cuando recién hemos instalado el SDK (que incluye el AVD Manager) no contaremos con ningún dispositivo virtual. Así que te explicaré los pasos necesarios para crear una AVD para que puedas trabajar:
1. Abrimos el AVD Manager desde la opción Window > Android SDK and AVD Manager o desde el siguiente icono que puedes encontrar en la barra de herramientas de Eclipse:
2. Elegimos la opción Virtual devices del panel situado a la izquierda y damos clic sobre el botón New… 
3. En la ventana Create new Android Device (AVD) llenaremos los siguientes campos:
  • Name: El nombre que recibirá el dispositivo virtual y el que aparecerá en la bandeja de dispositivos disponibles. Te recomiendo que le asignes un nombre descriptivo a la versión de Android con la que está configurada.
  • Target: Es la versión de Android que correrá en el dispositivo virtual. Esta versión deberá ser como mínimo la que utilices para crear tus proyectos. De igual forma, puedes crear tantos dispositivos virtuales como versiones de la plataforma tengas instaladas en Eclipse.
De forma opcional puedes llenar los campos:
  • SD Card: Aquí configuramos lo relacionado con la SD Card. Se puede seleccionar el tamaño o cargar el archivo de una SD Card existente.
  • Skin: Es la sección donde configuramos las características de la pantalla del dispositivo. Puedes dejar la opción por default si posees un monitor grande, de caso contrario te recomiendo que selecciones la opción HVGA que te permitirá que el emulador se adapte al tamaño de la pantalla que tengas en tu computadora y se te facilite ver el resultado visual de tus demos.
En el último apartado de Hardware, tienes la opción de agregar características de hardware más específicas del dispositivo que vayas a emular como el acelerómetro, cámara, teclado físico, etc. Lo único que tendrás que hacer dar clic sobre el botón New… que resalto en la siguiente imagen y agregar las opciones que necesites.
En este link puedes encontrar la lista de opciones de harware disponibles con sus respectivas descripciones.
4. Da clic en el botón OK y automáticamente aparecerá esta AVD en el panel principal. Para probarla, sólo da clic sobre el botón Start…


5. En la siguiente ventana da clic sobre el botón Launch y podrás ver tu ADV corriendo. 

Instalando el entorno de desarrollo Android



En un post anterior te platiqué acerca de todas las cosas que necesitas conocer para desarrollar en Android. Ahora vamos a configurar nuestro entorno de desarrollo para que podamos saltar de la parte teórica a la parte divertida que es la de codear nuestros ejemplos en Android.
Este tutorial abarcará la instalación de Eclipse, la descarga del SDK y la configuración del ADT plugin para que después de esto podamos pasar a crear un ejemplo básico de aplicación en Android. ¡Comencemos!
1. Lo primero que haremos será descargarnos todos los archivos que necesitaremos:
  • IDE Eclipse que te puedes descargar desde este link. En esta página verás una lista con varias versiones de esta herramienta. Te recomiendo la versión Eclipse Classic 3.7 que es la que está vigente a la fecha de este tutorial. También he trabajado con Eclipse Galileo que también tiene una versión Classic con el release 3.5.0.
  • SDK de Android que se encuentra disponible en la página oficial de Android developers. Este kit de desarrollo incluye un conjunto de herramientas tales como un debugger, librerías, un emulador, documentación, código de ejemplo y tutoriales.
  • Plugin ADT. Es conveniente que le eches un vistazo a la documentación que está en la página oficial de Android Developers. Este plugin está diseñado especialmente para hacer de Eclipse un ambiente integrado y poderoso para desarrollar aplicaciones en Android.
2. Antes de que empecemos con la instalación de cada cosa, es importante que revises los requerimientos que necesita tener tu computadora de trabajo para asegurarte de que todo va a salir bien. Lo puedes checar en la página de Android developers.
3. Descomprimimos el archivo .rar de Eclipse en el directorio de tu preferencia  (yo lo dejaré directamente en C:/) y ejecutamos la aplicación contenida en esta carpeta.
La primera vez que lo ejecutemos nos lanzará un cuadro de diálogo en dónde indicaremos la carpeta en la que Eclipse guardará todos los proyectos Android que vayamos creando. De manera opcional podemos elegir la opción de no preguntar de nuevo para evitar darleOK cada vez que abramos Eclipse para trabajar.

4. Si la versión del SDK que te descargaste viene en archivo .zip o .tgz (no el archivo .exe), deberás descomprimirlo en algún directorio de tu computadora. Por default, el directorio que te crea el SDK al descomprimirlo es android-sdk-<machine-platform>. Nuevamente, yo pondré esta carpeta en C:/.
Nota: Antes de seguir, deberás tener instalado en tu máquina tu entorno Java con sus respectivas variables de entorno configuradas. En este link puedes checar cada uno de los pasos para que no tengas problemas con eso.
5. Para instalar el ADT plugin, vamos a situarnos en nuestro Eclipse y elegimos la opción Help > Install New Software…
  • En la esquina superior derecha damos clic sobre el botón Add.
  • En el cuadro de diálogo Add Repository, escribimos “ADT Plugin” en el campo Name y en el campo Location escribimos la URL ?”https://dl-ssl.google.com/android/eclipse/”como te muestro a continuación:


  • Damos clic en OK y seleccionamos el checkbox Developer Tools que nos aparecerá y damos clic en Next. 

    • Nota: Si por alguna razón algo salió mal, revisa que la URL ingresada tenga el prefijo https que es recomendable usar por razones de seguridad.
    • En la siguiente ventana verás la lista de herramientas que serán descargadas. Da clic en el botón Next.
    • Lee y acepta los acuerdos de la licencia y da clic en el botón FinishNota: Durante el proceso de instalación está te saldrá una alerta de seguridad diciéndote que la autenticidad o validez del software no puede ser establecida, lo cual es normal, sólo da clic en OK.
    • Una vez que la instalación finalice deberás reiniciar Eclipse.
    6. Ahora vamos a modificar las preferencias del plugin ADT en Eclipse para que podamos indicarle dónde va a encontrar el SDK Android para trabajar.
    • Nos vamos a la opción Window > Preferences… para visualizar el Panel de preferencias. (Si usas Mac OS X la opción será Eclipse > Preferences).
    • Seleccionamos la opción Android en el panel situado a la izquierda.
    • En el panel principal da clic sobre el botón Browse… para seleccionar la carpeta que elegimos para descomprimir nuestro SDK.

  • Da clic en el botón Apply y después en el botón OK.
  • Si todo ha salido genial hasta este paso puedes continuar con este tutorial. Si algo salió mal, te invito a que revises las posibles causas de error en la instalación a través deeste link.
7. La última parte de la configuración corresponde a la descarga de los componentes esenciales del SDK en nuestro entorno de desarrollo. Es importante saber que el SDK de Android utiliza una estructura modular que separa las partes principales del mismo (las versiones del SDK, complementos, herramientas, ejemplos y documentación) en un conjunto de componentes que podemos instalar por separado. El SDK que descargamos en el paso uno incluye únicamente la última versión de las herramientas del SDK.
Para desarrollar una aplicación en Android necesitamos al menos descargar una plataforma Android con sus herramientas asociadas. Si así lo prefieres puedes instalar tantos componentes como plataformas quieras, aquí puedes consultar los que tienes disponibles.
  • Seleccionamos la opción Window > Android SDK and AVD Manager.
  • Elegimos la opción Available packages del panel situado a la izquierda.
  • En el panel principal podremos ver todas las opciones disponibles para descargar. En este link puedes consultar los componentes mínimos que te recomiendan descargar desde la página oficial de Android developers.


En la imagen anterior podrás apreciar que únicamente me bajé la plataforma 2.1 ya que los ejemplos que estaré realizando serán para esa versión de Android. Si tú deseas desarrollar para otras versiones incluyendo esta deberás elegir las plataformas correspondientes. De igual forma, si deseas que tus aplicaciones corran específicamente en alguna marca de teléfono deberás considerar el descargar los complementos de terceros en caso de que se encuentren en esta lista.
Dependiendo del número de plataformas y componentes que hayas decidido descargarte, esta parte puede tardar un poco.
8. ¡Hemos terminado! Ahora te recomiendo que empieces a explorar los directorios del SDK que se encuentra en tu disco duro.
En un siguiente artículo vamos a configurar nuestra AVD y a crear nuestra primera aplicación en Android.
¿Te ha sido de ayuda este artículo? Compártelo en tus perfiles de redes sociales y sobre todo, manténte al pendiente de los artículos posteriores para que sigas aprendiendo más sobre el desarrollo en Android.

¿Qué necesito para programar en Android?



Si estás leyendo este post es porque seguramente estás interesado en entrar al desarrollo de aplicaciones para esta excelente plataforma móvil. El día de hoy te voy a platicar acerca de todo lo que necesitas conocer para que tu introducción en Android sea más sencilla y puedas empezar a construir tus pininos de una manera rápida. 

Herramientas de Software
  • Kit de desarrollo. La versión más nueva del SDK de Android que puedes encontrar en este link.
  • Sistema operativo… Una computadora que corra con Windows, Linux o Mac OS. En Windows y en Linux no importa la arquitectura que tengas  (32 bits o 64 bits), me ha tocado trabajar de las 4 formas y todo ha ido sin problemas.
  • IDE. Elegir entre la instalación de Eclipse con el plugin ADT o bien, la instalación del Motodev Studio.
  • Versión de Java. La versión 6 de Java corre muy bien con Android así que es la que recomiendo. La puedes descargar desde este link.
Equipo Android
  • Uno de los puntos importantes que te recomiendo tener es un teléfono que corra con Android. Esto es porque de esta manera tendrás una auténtica forma de probar cómo es que corren tus aplicaciones en un ambiente real.
Conocimientos técnicos
  • Programación orientada a objetos. Si has programado en algún lenguaje que se base en este paradigma (PHP, Python, Java, .NET, C o C++, etc.) entonces vas por buen camino. Si este no es tu caso, puedes empezar a revisar unos cuantos conceptos básicos para que entre en contexto.
  • Lenguaje Java. Esto viene a complementar el punto anterior y si bien no lo pongo como algo obligatorio, si has programado en Java, la migración a Android será mucho más sencilla ya que las aplicaciones de Android se programan en este lenguaje de programación. Pero como le digo a mis colegas, lo que hace diferente a los lenguajes es sólo la sintaxis, mientras tengas una buena lógica de programación desarrollada ya la hiciste.
  • Manejo de algún IDE de desarrollo. Cualquiera que sea el lenguaje en el que hayas programado seguramente has hecho uso de algún IDE (entorno de desarrollo integrado). Para el caso de Android, tendrás ventaja si has utilizado Eclipse.
    También es importante que sepas que existe una adaptación de Eclipse que realizó Motorola y que se llama Motodev Studio, esta puede ser tu opción si las aplicaciones que quieras hacer estarán encaminadas a correr en dispositivos Motorola.
  • Tener fuertes los conceptos básicos de la plataforma. En este blog intentaré ayudarte con esta parte compartiéndote recursos de interés y cosas que yo misma vaya dominando en mi proceso de aprendizaje. De la misma forma, te invito a participar en este blog para que la experiencia con Android sea más satisfactoria. Creo que siempre puede aprenderse algo nuevo de otras personas que también están desarrollando en el mismo lenguaje.
  • Muchas ganas de aprender. Mi filosofía en el mundo del desarrollo es siempre echarle los kilos a los proyectos que emprendas. Generalmente soy autodidacta y las cosas que aprendo son porque las leí o por el resultado obtenido de prueba-error. Aún así, siempre ando buscando más gente que tenga más experiencia que yo y me pueda compartir cosas que tal vez no conocía.

 
Android Community Network © 2012