Dalvik VM vs. ART (Android Runtime): ¿Impacto para los usuarios finales?

22

Con Nexus 5 (Android 4.4 KitKat), Google ha enviado dos tiempos de ejecución para ejecutar aplicaciones.

Seleccione la opción Tiempo de ejecución en Android 4.4 KitKat Dalvik y ART Runtimes en Android 4.4 KitKat

¿Cuáles son las diferencias entre Dalvik y ART para usuarios finales? ¿Cómo pueden verse afectados los usuarios finales por esto? ¿Hay alguna razón específica por la que deba elegir el nuevo tiempo de ejecución ART?

Android Quesito
fuente
3
El hecho de que tenga que habilitar y buscar a través de las opciones de Desarrollador para encontrar esta configuración debería indicar que no está destinado a usuarios finales.
Dan Hulme
1
@DanHulme Buen punto, pero aún los entusiastas que no son desarrolladores juegan con las opciones de Desarrollador e incluso lo usan muchas veces para fines positivos de no desarrollo.
Android Quesito
En lo que respecta a la experiencia del usuario, solo notará que la batería se ahorra en gran medida ... sin embargo, no podrá ver la diferencia de velocidad al cambiar de Dalvik a ART.
Rahul Raina

Respuestas:

26

Dalvik VM (Virtual Machine) es la versión de Google de una VM Java (en la que se ejecutan las aplicaciones). Las máquinas virtuales mantienen las aplicaciones aisladas e independientes del hardware real y otras aplicaciones. Pero, para que esto funcione, Dalvik necesita convertir el llamado bytecode (diseñado para máquina virtual) en código de máquina nativo. Para minimizar la penalización de rendimiento que introduce la conversión de código de bytes a código nativo, se realiza un proceso llamado compilación Just-In-Time (JIT), que convierte el código de bytes caliente, es decir, de uso frecuente, en código nativo. 1

ART (Android Runtime) es un reemplazo para Dalvik que utiliza la compilación Ahead-Of-Time (AOT), lo que significa que sus aplicaciones se compilan en un estado listo para ejecutarse incluso antes de que las inicie. Esto generalmente se hace, en el momento de la instalación de la aplicación, haciendo que el proceso de lanzamiento y uso sea mucho más rápido y fluido. Y dado que esto significa que la compilación solo se realiza una vez, también puede ver una mejor duración de la batería.

Si ART tiene una mejor perspectiva de rendimiento y duración de la batería, ¿debería comenzar a usarlo?

No. Si haces eso, puedes romper las aplicaciones de terceros. Google ha enviado esta vista previa de ART con Android 4.4 para que los desarrolladores prueben sus aplicaciones en ella.

Nota al margen: el enfoque de Google con ART es vencer a iOS (las aplicaciones de iOS son nativas, por lo que funciona mejor incluso en especificaciones de hardware de gama baja), pero no sé hacia dónde se dirige ... ¿Otra fragmentación? Vea que los OEM son libres de construir dispositivos usando uno o ambos . Si bien la versión final no debería afectar a la mayoría de las aplicaciones, no es 100% multiplataforma.

1 Tenga en cuenta que JIT se agregó a Dalvik en Android 2.2

Android Quesito
fuente
3
Quizás valga la pena mencionar dos hechos: los resultados de AOT de ART en aplicaciones que usan 20..25% más de almacenamiento en comparación con DEX. Además, las pruebas en un Nexus-5 que he leído no mostraron diferencias en la velocidad subjetiva ni en la resistencia de la batería. Sin duda, ambos mejorarán, considerando que ART en KitKat es solo una vista previa de los desarrolladores y una verificación de compatibilidad (que, por ejemplo, falló WhatsApp). Así que secundo la conclusión de Sachin: todavía no es bueno para los usuarios finales.
Izzy
2
Excelente respuesta Me tomé la libertad de mejorarlo un poco. Pero no estoy de acuerdo con el último párrafo: ART no aumenta la fragmentación: si ART se considera listo para la producción, no debería importar si su aplicación está ejecutada por Dalvik o ART, ambos usan el mismo formato .dex como punto de partida. Solo que ART compila AOT el .dex en código nativo.
Flujo