Vous êtes sur la page 1sur 6

Omar Josue Regino Zuiga, Leonel Salas Reyes, Instituto Tecnolgico Latino Americano: ITLAPachuca

Carretera Pachuca - Cd. Sahagn Km 7 Mral. de la Reforma, Hidalgo


C.P: 42083 Telfono: (01771) 7181020 y 7181030 Fax: (01771) 7181020 Ext. 117

ARTICULO DE INVESTIGACIN

ACCESO LIBRE

ART(Android Runtime) y Dalvik como entornos de ejecucin en


Android.
Autor: Omar Josue Regino Zuiga, Leonel Salas Reyes.
Email: omarjrz21@gmail.com, leonel_salas@live.com.mx )

ABSTRACT : This paper looks to understand the architecture of Dalvik virtual machine and
understand the technical reasons for why chose to developer a non-standard virtual machine.
While there are most likely also business reasons behind creating Dalvik, this paper only addresses
technical considerations.
Keywords: Android, JVM, Dalvik.
I. INTRODUCTION

sistemas operativos y arquitecturas de


hardware.
Bsicamente
existen
dos
maneras
de
implementar una Mquina Virtual, una es
basada en Stack (Pila) y la segunda es basada en
Registros. Un ejemplo de basada en Pila es la
Mquina Virtual de Java (JVM).

Ms de la mitad de los telfonos inteligentes en


todo el mundo estn actualmente empleando la
plataforma Android, que emplea a Java como
lenguaje de programacin para sus aplicaciones.
Java siempre ha sido comercializado como
"escribelo una vez, ejecutalo en cualquier lado."
Esta capacidad en gran medida ha sido posible
gracias a la Mquina Virtual de Java (JVM).
Aunque este objetivo se ha cumplido en su
mayora para los ambientes de escritorio y
servidores, el ecosistema de mviles es un poco
ms fragmentado, causando que sean necesarias
modificaciones significativas a las aplicaciones
para que estas sean soportadas en diferentes
dispositivos.
Java en Android es ejecutado por la Mquina
Virtual Dalvik, que es bastante diferente de la
tradicional Java VM.
Una mquina virtual (VM) es un alto nivel de
abstraccin ubicado en la parte superior del
sistema operativo, que tiene como objetivo
emular una mquina fsica, para que una
misma plataforma se ejecute en mltiples
www.itla.edu.mx

Dalvik a diferencia de la Mquina Virtual de


Java, que est basada en una arquitectura de
pila, la Mquina Virtual Dalvik utiliza una
arquitectura basada en registros esto quiere
decir que requiere un me nor
nmero
de
instrucciones
para la ejecucin de los
programas o aplicaciones.
II.

ARQUITECTURA DE DALVIK VM
Dalvik es una Mquina Virtual implementada
para el sistema operativo Android, y funciona
como el intrprete de cdigo Java que se
ejecutan en los dispositivos con dicho sistema
operativo.
Antes de analizar la arquitectura de Dalvik, hay
que conocer un poco acerca de la arquitectura
misma del Kernel de Linux, sobre el cual corre
Android.
1|Page

Omar Josue Regino Zuiga, Leonel Salas Reyes, Instituto Tecnolgico Latino Americano: ITLAPachuca
Carretera Pachuca - Cd. Sahagn Km 7 Mral. de la Reforma, Hidalgo
C.P: 42083 Telfono: (01771) 7181020 y 7181030 Fax: (01771) 7181020 Ext. 117

Dentro de Android existe algo antes del Kernel


de Linux, llamado System Bootup, el cual se
encarga de cargar el Kernel en memoria e
inicializar los parmetros del sistema, despus
de realizado este proceso, el Kernel inicializa un
proceso llamado INIT, el cual tiene como
funcionalidad iniciar otro proceso muy
importante llamado Zygote y a su vez iniciar los
procesos secundarios del sistema tambin
conocidos como demonios.
Una vez inicializados los procesos anteriores el
proceso conocido como Zygote, se encargara de
crear una instancia una instancia de la Mquina
Virtual Dalvik, y de establecer un canal de
escucha, por el cual se atendern todas las
peticiones provenientes de los Activities de las
aplicaciones, mismas que posteriormente Dalvik
se encargara de atender.

dispositivos
con
una
capacidad
de
procesamiento, memoria y almacenamiento
limitado.
Dalvik VM es un intrprete que ejecuta archivos
en formato *.dex (Dalvik Executable), un
formato optimizado para el almacenamiento y
ejecucin eficiente en memoria. Su objetivo
fundamental es el mismo que cualquier mquina
virtual, permite que el cdigo sea compilado a
un bytecode independiente de la mquina en la
que se va a ejecutar, y la mquina virtual
interpreta este bytecode a la hora de ejecutar el
programa.
Una de las razones por las cules no se opt por
utilizar la mquina virtual de Java es debido a
que Dalvik est basada en registros haciendo
posible que pueda ejecutar clases previamente
compiladas por un compilador de Java y que
posteriormente puedan ser convertidas al
formato .dex.
A continuacin se explica esto un poco ms a
detalle.
Dalvil VM como intrprete toma los archivos
generados por las clases Java y los combina en
uno o ms archivos ejecutables Dalvik (. dex), los
cuales a su vez son comprimidos en un slo
fichero .apk (Android Package) dentro el
dispositivo. De esta forma, reutiliza la
informacin duplicada por mltiples archivos
.class, reduciendo as la necesidad de espacio.

Android hace uso de una mquina virtual


llamada Dalvik que se encuentra en la capa de
ejecucin y que ha sido diseada para optimizar
la memoria y los recursos de hardware en
www.itla.edu.mx

Sin embargo esto conlleva un problema, ya que


este procedimiento tiene que ser repetido cada
vez que una aplicacin en ejecutada.
2|Page

Omar Josue Regino Zuiga, Leonel Salas Reyes, Instituto Tecnolgico Latino Americano: ITLAPachuca
Carretera Pachuca - Cd. Sahagn Km 7 Mral. de la Reforma, Hidalgo
C.P: 42083 Telfono: (01771) 7181020 y 7181030 Fax: (01771) 7181020 Ext. 117
Aun cabe mencionar que otra caracterstica
importante de Dalvik es que ha sido optimizada
para que se puedan crear mltiples instancias de
ella y 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 dems.

III.

DALVIK VS ART

Al principio, Dalvik comenz como una simple


mquina virtual de poca complejidad, sin
embargo y por las necesidades que se
presentaron en cuanto a rendimiento y los
avances en hardware, se le decidio aadir un
Compilador Just In Time (JIT), de tal manera
que se adquiriera la capacidad de multi-tareas o
Multi-Threading.
Sin embargo, esta capacidad no fu suficiente
para las exigencias de hoy en da y es por eso
que Google ha presentado lo que ser su nueva
mquina virtual llamada Android RunTime o
ART, quien sustituir a la ya mencionada
Dalvik.

Entre los cambios que posee, destaca su nuevo


tipo de compilacin, que pasa de ser un Just In
Time (JIT) a una compilacin Ahead of Time
(AOT), de manera que se deja de lado el
compilar de bytecode a cdigo nativo cada vez
que se inicia la aplicacin y se comienza a
compilar desde la instalacin de la aplicacin, de
manera que en la ejecucin posterior de la
misma ya exista el cdigo nativo completo y
compilado.
El proceso que hace esto es un nuevo
componente llamado "dex2oat", que entra en
sustitucin de su equivalente en Dalvik
"dexopt". De igual manera el archivo Odex
tambin desaparecera en ART, siendo
reemplazado por el archivo ELF.

www.itla.edu.mx

3|Page

Omar Josue Regino Zuiga, Leonel Salas Reyes, Instituto Tecnolgico Latino Americano: ITLAPachuca
Carretera Pachuca - Cd. Sahagn Km 7 Mral. de la Reforma, Hidalgo
C.P: 42083 Telfono: (01771) 7181020 y 7181030 Fax: (01771) 7181020 Ext. 117

IV.

En el archivo ELF es donde se definen las


regiones del ejecutable o biblioteca que es
necesario cargar para crear la imagen del
proceso e iniciar su ejecucin.
Con ART se genera un ELF enlazado con
bibliotecas y el entorno de ejecucin ART. Con
Dalvik se genera un Odex enlazado con el
entorno de ejecucin Dalvik y mediante JIT
algunas partes del Odex se convierten en cdigo
ensamblador del procesador. El ELF que genera
ART ya esta en ensamblador, es un ejecutable
nativo. El Odex en cambio ha de ser compilado
entiempo de ejecucin (Just In Time).
El nico inconveniente de todo esto, es que en
ART esta nica compilacin tardar ms tiempo
en completarse aunque se afirma que esto no es
demasiado dramtico, ya que se espera que el
tiempo de ejecucin y envo sea equivalente o
incluso ms rpido que Dalvik.

AOT VS JIT

Las aplicaciones de Android vienen en un archivo


de formato *.apk, con las clases de Java ya
convertidas en archivos .dex. El archivo de
formato .dex es independiente de la arquitectura
del dispositivo y debe ser traducido a cdigo
mquina nativo para ejecutarse en el mismo.
El cambio ms significativo de Dalvik con respecto
a ART es que Dalvik se basa en compilacin Justin-Time (JIT), mientras que ART se basa en
compilacin Ahead-Of-Time (AOT).
Cada vez que se ejecuta una aplicacin Dalvik con
su compilador JIT traduce dinmicamente una
parte del archivo .dex de Dalvik en cdigo
mquina. Conforme la ejecucin avanza, ms
archivos .dex se compilan y almacenan en cach.
Por otro lado, ART est equipado con un
compilador Ahead-Of-Time, durante la fase de
instalacin de la aplicacin, se traduce
estticamente a un archivo ELF en cdigo
mquina y lo almacena en el dispositivo. Este
proceso se repite una sola vez y solo cuando la
aplicacin es instalada en el dispositivo.
Rendimiento

www.itla.edu.mx

El beneficio ms importante de ART sobre Dalvik


es el tiempo de ejecucin, debido a que Dalvik
durante el tiempo de ejecucin necesita ms
memoria cach para almacenar el byte-code
(archivos .dex ya compilado) en memoria. En el
4|Page

Omar Josue Regino Zuiga, Leonel Salas Reyes, Instituto Tecnolgico Latino Americano: ITLAPachuca
Carretera Pachuca - Cd. Sahagn Km 7 Mral. de la Reforma, Hidalgo
C.P: 42083 Telfono: (01771) 7181020 y 7181030 Fax: (01771) 7181020 Ext. 117
caso de ART una aplicacin ocupa un menor
consumo de memoria porque solo almacena el
cdigo nativo ya compilado.

espacio de almacenamiento, pero con


tiempos de carga de aplicaciones ms
largos.

conlleva a comp
instalacin, resu
ejecucin de las

Duracin de la batera

Genera un Odex enlazado con el entorno de ejecucin


Dalvik para su posterior compilacin.

Con Dalvik, la compilacin JIT es limitada por la


CPU, debido a que cada vez que una aplicacin se
inicia este es compilada y una vez se haya dejado
de utilizar esta es eliminada de la memoria, ART
libera a la CPU de la traduccin de los archivos
.dex a cdigo mquina, lo que reduce el consumo
de energa.

Se genera un
entorno de ejecu
siendo ya un eje

La compilacin JIT es limitada por la CPU debido a que


cada vez que una aplicacin se inicia este es compilada y
una vez se haya dejado de utilizar esta es eliminada de la
memoria

ART libera a
bytecode a cdig
aplicacin, lo qu

VII.

Tiempo de instalacin
Debido a que el compilador AOT de ART los
archivos .dex a cdigo mquina durante la
instalacin de aplicaciones, una aplicacin necesita
ms tiempo para ser instalada en un dispositivo.

V.

PROCEDIMIENTO EXPERIMENTAL
Metodologa utilizada para la recopilacin de
informacin presentada en este articulo.

VI.

Consulta de la arquitectura de Android


de fuentes oficiales (Google).
Anlisis de la arquitectura.
Extraccin de los elementos especficos
a analizar.
Comprensin de la arquitectura de los
elementos extrados.
Obtencin de las caractersticas de cada
una de las maquinas virtuales de
Android.
Comparacin
de las principales
caractersticas
de
las
maquinas
virtuales.

RESULTADOS Y DISCUSIONES

Dalvik
Utiliza un compilador Jus-In-Time (JIT), lo
que resulta en un menor consumo de

www.itla.edu.mx

CONCLUSIONES
Puede haber muchas o pocas conclusiones en
base al funcionamiento y ejecucin de ART y
Dalvik, lo que s es verdad es que ART sin duda
traer mejores a la plataforma Android. Para
los usuarios, esto ser transparente aunque es
importante que conozcan qu es lo que est
sucediendo detrs. Para los desarrolladores, en
general ART promete hacer las cosas ms
sencillas y ayudar a los a que las aplicaciones
tengan un mejor desempeo.
Mientras tanto, por otro lado, Dalvik en su
sistema de ejecucin lo ms notable es que lo
hace en tiempo real, mientras tanto ART lo hace
cacheando la informacin y compilando. Las
diferencias entre ART y Dalvik son muchas,
pero a da de hoy, el problema no es el sistema
ejecucin de Android, sino de las aplicaciones.

REFERENCIAS

"Meet ART, Parte 1: El Nuevo Super-Fast Android


Runtime Google ha estado trabajando en en
secreto por ms de 2 aos debuta en KitKat
http://www.androidpolice.com/2013/11/06/meetart-part-1-the-new-super-fast-android-runtimegoogle-has-been-working-on-in-secret-for-over-2years-debuts-in-kitkat/

Utiliza un compilador Ahead-On-Time (AOT), lo que

5|Page

Omar Josue Regino Zuiga, Leonel Salas Reyes, Instituto Tecnolgico Latino Americano: ITLAPachuca
Carretera Pachuca - Cd. Sahagn Km 7 Mral. de la Reforma, Hidalgo
C.P: 42083 Telfono: (01771) 7181020 y 7181030 Fax: (01771) 7181020 Ext. 117
"JIT
Dalvik"
http://androiddevelopers.blogspot.com/2010/05/dalvik-jit.html
Stack based vs Register based Virtual Machine
Architecture, and the Dalvik VM
http://www.codeproject.com/Articles/461052/Stack
-based-vs-Register-based-Virtual-Machine-Arch

www.itla.edu.mx

Verifying App Behavior on the Android Runtime


(ART)
https://developer.android.com/guide/practices/verif
ying-apps-art.html
Will my Android App still run with ART instead
of
Dalvik?
https://software.intel.com/enus/blogs/2014/07/23/will-my-android-app-still-runwith-art-instead-of-dalvik

6|Page