martes, 2 de junio de 2015

La máquina virtual Dalvik

La máquina virtual Dalvik
“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.

No hay comentarios.:

Publicar un comentario