Desde que el nuevo ARTE en tiempo de ejecución es la compilación de las aplicaciones AOT, me preguntaba si ejecuta una aplicación todavía incluye una máquina virtual, o el código que se ejecuta directamente en el sistema. No he sido capaz de extraer esta información de artículos alrededor de la web como algunos mencionan una máquina virtual, donde habla acerca de las aplicaciones compiladas para archivos ELF (a mi conocimiento, el formato binario usado por el kernel de Linux lo que sugiere que las aplicaciones se ejecutan de forma nativa).
Alguien me puede ayudar en esto?
BPou
Respuesta
¿Demasiados anuncios?Cuento corto: sí, el ARTE se traduce apps a código nativo para el teléfono real de la arquitectura y, por tanto, las aplicaciones se ejecuten de forma nativa sin necesidad de un compilador JIT.
Largo de la historia: Por razones de compatibilidad, aplicaciones todavía están agrupados en la apk de llevar el código java compilado en dex archivos. Pero en lugar de la optimización de la .dex código y ejecutarlo dentro de Dalvik VM (DVM), el código es compilado hacia abajo para código nativo. Esto se realiza en el dispositivo mediante el uso de una herramienta llamada dex2oat, donde avena archivos están incrustados dentro de los regulares ELF formato de archivo.
La figura siguiente muestra la diferencia entre el uso de DVM y el ARTE:
(Wikipedia: Diagrama de Android Tiempo de Ejecución de arquitectura, recreada a partir de la información publicada en Un Vistazo más de Cerca a Android RunTime (ART) en Android L.)
La mejora en el rendimiento proviene del hecho de que el DVM utiliza la compilación JIT y cada vez que una aplicación se ejecuta, mientras que AOT compilación sólo ocurre en el momento de la instalación.