Entradas populares

viernes, 29 de mayo de 2015

Máquina virtual Dalvik


Dalvik es la máquina virtual usada en los dispositivos Android (DalvikVM), la cual está basada en registro, diseñada y escrita por "Dan Bornstein" y algunos otros ingenieros de Google, la cual tiene una serie de características que la diferencian de las máquinas virtuales JAVA. Las aplicaciones Android están hechas en el lenguaje de programación java, pero usan un bytecode diferente al resto de aplicaciones creadas con las máquinas virtuales anteriores.


Dalvik VM es un intérprete que sólo ejecuta los archivos ejecutables con formato .dex (Dalvik Executable). Este formato está optimizado para el almacenamiento eficiente de la memoria, lo cual consigue delegando en el kernel la gestión de hilos (multithreading), de memoria y de procesos. 

Características de Dalvik
         
        :) El bytecode generado, primero es transformado al bytecode de Java y posteriormente se transforma en el usado por Android. Es decir, primero son generados los .class típicos de JAVA, y posteriormente se transforman al tipo de archivo .dex (dalvik executable). Estos archivos dex son comprimidos en los conocidos APK (Android Package).

         :)  Está diseñada para ejecutar varias instancias de la propia máquina simultáneamente.

          :) Optimizada para necesitar poca memoria.

         :) Se basa en registros en vez de en pilas aprovechando así el mejor rendimiento de los móviles con estos.

          :)  Está distribuida como software libre, usando la licencia Apache.

La herramienta "dx" incluida en el SDK de Android permite transformar las clases compiladas (.class) por un compilador de lenguaje Java en formato .dex.



La máquina virtual de Dalvik toma los archivos generados por las clases Java y los combina en uno o más archivos ejecutables Dalvik (. dex), los cuales a su vez son comprimidos en un sólo fichero .apk (Android Package) en el dispositivo. De esta forma, reutiliza la información duplicada por múltiples archivos .class, reduciendo así la necesidad de espacio (sin comprimir) a la mitad de lo que ocuparía un archivo .jar.


Android proporciona una biblioteca de C optimizada para acceder a la base de datos SQLite, pero esta biblioteca está encapsulada en un nivel superior del API de Java.


No hay comentarios:

Publicar un comentario