Diferencia entre Dalvik y ART en Android

El tiempo de ejecución de Android (ART ) es el tiempo de ejecución administrado que utilizan las aplicaciones y algunos servicios del sistema en Android. ART y su predecesor Dalvik se crearon originalmente específicamente para el proyecto Android. ART y Dalvik son tiempos de ejecución compatibles que ejecutan el código de bytes Dex, por lo que las aplicaciones desarrolladas para Dalvik deberían funcionar cuando se ejecutan con ART. 

Dalvík

Máquina virtual Dalvik o DVMes una máquina virtual basada en registros que fue diseñada y escrita por Dan Bornstein. La máquina virtual Dalvik fue nombrada por Bornstein en honor al pueblo de pescadores “Dalvík” en Eyjafjörður, Islandia, donde solían vivir algunos de sus antepasados. Dalvik es una máquina virtual de proceso (VM) descontinuada en el sistema operativo Android que ejecuta aplicaciones escritas para Android. El formato de código de bytes Dalvik todavía se usa como formato de distribución, pero ya no en tiempo de ejecución en las versiones más nuevas de Android. Android en sí es un sistema Linux con Dalvik encima. DVM toma la aplicación de Android, la convierte de código Java en código de bytes que el sistema Linux puede ejecutar. Básicamente, un código Java simple se compila en el compilador JIT a bytecode durante el tiempo de ejecución para ejecutarlo en la máquina. Esto podría conducir a una ralentización porque la compilación en tiempo de ejecución, especialmente durante el tiempo de ejecución, consume mucho tiempo. Por eso, los fabricantes y los OEM a veces publican sus aplicaciones como indexadas. Hay 2 tipos de archivos:

  • El archivo .dex (Dalvik Executable file) es un archivo de código compilado de Android. Estos archivos .dex luego se comprimen en un solo archivo .apk.
  • El sistema operativo Android crea un archivo .odex para ahorrar espacio y aumentar la velocidad de arranque de una aplicación de Android (un archivo .apk).

dexopt se utiliza para optimizar DEX a ODEX (DEX optimizado) que contiene el código de bytes optimizado. Entonces, todo el proceso en DVM se puede resumir como:

Código fuente JAVA (.java) –> Código de bytes (.dex) –> DVM

DVM es mejor para dispositivos de almacenamiento bajo. Pero es más lento ya que la compilación se realiza después de la instalación.

Dalvik

ARTE

Con una versión más nueva de Android específicamente de la versión 4.4 KitKat, existe el concepto de ART como una alternativa a DVM. ART (Android Run Time) es un sucesor de DVM que usa el mismo código de bytes y archivos .dex (pero no archivos .odex), y la sucesión apunta a mejoras de rendimiento transparentes para los usuarios finales. Android 5.0 “Lollipop” es la primera versión en la que ART es el únicotiempo de ejecución incluido. Ahora, lo que hace ART es traer aplicaciones que están completamente compiladas cuando se instalan en el dispositivo. Por lo tanto, mayor rendimiento ya que no es necesario convertir el código a código de bytes y luego compilar. Pero la desventaja es que necesita más espacio de almacenamiento y un poco más de tiempo para instalar debido a la compilación durante la instalación, lo que significa que tiene que vivir en el dispositivo todo el tiempo. Por lo tanto, en lugar de un código Java relativamente pequeño, tenemos un código bytecode/código de máquina más grande. Es posible que haya escuchado los términos odexado y desodexado. Lo que se hace en este caso es tomar una pequeña parte de la aplicación y luego precompilarla. Pueden continuar y optimizar una parte de su aplicación para que se ejecute en su dispositivo, por lo que ya han precompilado esa sección de la aplicación y el resto de su compilado en tiempo de ejecución. Así que esto lo hace un poco más rápido y con más rendimiento que en Dalvik. Pero este enfoque requiere un poco más de espacio de almacenamiento.

Ej.: Samsung con TouchWiz … Un montón de cosas en las que se basa TouchWiz están precompiladas y, por lo tanto, cuando se des-odexan, puede cambiarles el tema o la apariencia mientras se pierden algunos beneficios de rendimiento.

Antes de seguir leyendo, recuerde que dex2oat se usa para optimizar y compilar .dex en un archivo .oat que puede contener código de máquina en formato ELF. ART compila aplicaciones usando la herramienta dex2oat en el dispositivo. Esta utilidad acepta archivos DEX como entrada y genera un ejecutable de aplicación compilado para el dispositivo de destino. Cuando se instala una aplicación, Android optimiza automáticamente los datos de la aplicación y crea un archivo OAT correspondiente. El sistema operativo Android crea un archivo OAT para acelerar el tiempo de carga de una aplicación de Android (archivo .APK). Android usa este archivo para cargar la aplicación más rápidamente, creando una mejor experiencia de usuario.

ART

Diferencia entre DVM y ART

MÁQUINA VIRTUAL DALVIK

TIEMPO DE EJECUCIÓN DE ANDROID

Tiempo de arranque más rápido El reinicio es significativamente más largo
El caché se acumula con el tiempo El caché se construye durante el primer arranque.
Ocupa menos espacio debido a JIT Consume mucho espacio de almacenamiento interno debido a AOT
Funciona mejor para pequeños dispositivos de almacenamiento. Funciona mejor para dispositivos de almacenamiento grandes
Máquina virtual estable y probada Experimental y nuevo: no hay mucho soporte de aplicaciones comparativamente
Mayor tiempo de carga de la aplicación Extremadamente más rápido y fluido Tiempo de carga de aplicaciones más rápido y menor uso del procesador
Utiliza el compilador JIT (JIT: ​​Just-In-Time),
lo que resulta en un menor consumo de espacio de almacenamiento
Utiliza el compilador AOT (Ahead-Of-Time), por lo que compila las aplicaciones cuando se instalan
Retraso en la aplicación debido a pausas en el recolector de basura y JIT Reducción del retraso de la aplicación y mejor experiencia del usuario
El tiempo de instalación de la aplicación es comparativamente menor ya que la compilación se realiza más tarde El tiempo de instalación de la aplicación es más largo ya que la compilación se realiza durante la instalación
DVM convierte el código de bytes cada vez que inicia una aplicación específica.

ART lo convierte solo una vez en el momento de la instalación de la aplicación. Eso facilita la ejecución de la CPU. 

Mayor duración de la batería debido a una ejecución más rápida.

¿Que es mejor?

Depende del dispositivo, del propio dispositivo y de las preferencias: a la larga, ART es mejor, pero las aplicaciones aumentan de tamaño y requieren un gran espacio de almacenamiento con el tiempo, a diferencia de Flappy Bird, que solo ocupaba 1 MB y requería menos espacio. Por lo tanto, los dispositivos en el futuro necesitan expandir el almacenamiento si ART va a dominar el mercado en los próximos años. En Android Lolipop, DVM ha sido reemplazado por ART. Porque DVM convierte el código de bytes cada vez que inicia una aplicación específica. Pero ART lo convierte solo una vez durante la instalación de la aplicación. Eso facilita la ejecución de la CPU. ARM es una arquitectura. Como MIPS, x86, etc. DVM/ART se ejecuta sobre ARM. Ambos no pueden reemplazarse entre sí. 

Publicación traducida automáticamente

Artículo escrito por jelonmusk y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *