In-the-box

In-the-box es un proyecto open source o de fuente abierta cuyo objetivo es el portar la máquina virtual de Dalvik y la API o interfaz de desarrollo de aplicaciones de Android Gingerbread para que se pueda ejecutar sobre el iOS, es decir, iPhone y iPad. A continuación os dejo un vídeo de demostración: Me pregunto el tiempo que tardará una aplicación desarrollada de esta forma en el App Store. En cuanto que Apple vea un jar por ahí o algo que diga Android… aplicación muerta :)
Leer más

Dalvik VM: Ficheros .dex

En esta entrada vamos a hablar de la estructura interna de los ficheros .dex. Lo primero, decir que, los ficheros .dex se encuentran empaquetados dentro los archivos .apk (Android Package). A continuación podemos ver una imagen con la estructura interna de estos ficheros:

dex_structure

Como podemos apreciar, un fichero .dex esta divido en distintas secciones llamadas “pools”. El pool de strings contiene todos los Strings que las clases dentro del .dex usan. En pool de tipos (type_ids) se guardan los distintos tipos datos usados en la aplicación, etc. Además de las secciones mostradas en la imagen, en la estructura actual de los ficheros dex existe una sección más por debajo de la de datos (data) llamada link_data o enlace de datos. En este momento dicha sección no está documentada. Todo lo que dice la documentación oficial es que en ella se guarda información sobre los ficheros enlazados estáticamente. Si el fichero no es enlazado esta sección permanece vacía y dicha documentación concluye diciendo que dicha sección se use como mejor se adecue a nuestra implementación.

Veamos la estructura de cada sección.


Leer más

Dalvik VM: Optimización

Una de las tareas críticas de Dalvik es la optimización del código (byte code) para maximizar los recursos del sistema. Recordemos que Dalvik es una máquina virtual para correr sobre sistemas ligeros y con recursos escasos. Esta fase es realmente crítica, especialmente cuando el byte code de Dalvik es generado a partir del de Java, lenguaje con fama de lento y pesado. Este proceso de optimización se lleva a cabo justo antes de que la aplicación es ejecutada por primera vez.
Leer más