Android Runtime ( ART ) es un entorno de ejecución de aplicaciones utilizado por el sistema operativo Android . Reemplazando a Dalvik , la máquina virtual de procesos utilizada originalmente por Android, ART realiza la traducción de parte del código de bytes de la aplicación a instrucciones nativas que posteriormente son ejecutadas por el entorno de ejecución del dispositivo. [ 2 ]
Descripción general

Android 2.2 "Froyo" introdujo la compilación justo a tiempo (JIT) basada en trazas en Dalvik, optimizando la ejecución de las aplicaciones mediante el análisis continuo de su rendimiento cada vez que se ejecutan y la compilación dinámica de segmentos cortos de su código de bytes, ejecutados con frecuencia, en código máquina nativo . Mientras que Dalvik interpreta el resto del código de bytes de una aplicación, la ejecución nativa de esos segmentos cortos, denominados "trazas", proporciona mejoras significativas en el rendimiento. [ 3 ] [ 4 ]
A diferencia de Dalvik, ART introduce la compilación anticipada (AOT) compilando las partes más críticas para el rendimiento de las aplicaciones (anteriormente, la aplicación completa) en código máquina nativo durante su instalación. De esta forma, ART mejora la eficiencia general de la ejecución y reduce el consumo de energía, lo que se traduce en una mayor autonomía de la batería en dispositivos móviles . Al mismo tiempo, ART ofrece una ejecución más rápida de las aplicaciones, mecanismos mejorados de asignación de memoria y recolección de basura (GC), nuevas funciones de depuración de aplicaciones y un perfilado de alto nivel más preciso de las aplicaciones. [ 2 ] [ 5 ] [ 6 ]
Para mantener la compatibilidad con versiones anteriores , ART utiliza el mismo código de bytes de entrada que Dalvik, suministrado a través de archivos .dex estándar como parte de los archivos APK , mientras que los archivos .odex se reemplazan por ejecutables en formato ELF (Executable and Linkable Format ). Una vez que una aplicación se compila utilizando la utilidad dex2oat de ART en el dispositivo , se ejecuta desde el ejecutable ELF compilado; como resultado, ART elimina varios gastos generales de ejecución de aplicaciones asociados con la interpretación de Dalvik y la compilación JIT basada en trazas.
Inicialmente, una desventaja de ART era que se requería tiempo adicional para la compilación cuando se instalaba una aplicación, y las aplicaciones ocupaban un poco más de almacenamiento secundario (generalmente memoria flash ) para almacenar el código compilado. [ 2 ] [ 5 ] [ 6 ] La compilación AOT larga se volvió especialmente problemática cuando las actualizaciones de seguridad mensuales se convirtieron en la norma, bloqueando a los usuarios del sistema operativo durante mucho tiempo después de cada actualización.
Para mejorar esto, se introdujo un enfoque híbrido en Android 7.0 (Nougat). Las aplicaciones recién instaladas se ejecutan mediante compilación JIT y el entorno de ejecución las analiza. Cuando el dispositivo está inactivo y cargando, el entorno de ejecución realiza una compilación AOT en el código más utilizado ("caliente"). [ 7 ]
Historia
Android 4.4 "KitKat" introdujo una vista previa de la tecnología ART como un entorno de ejecución alternativo a Dalvik, que siguió siendo la máquina virtual predeterminada. [ 8 ] [ 9 ] En la siguiente versión principal de Android, Android 5.0 "Lollipop" , Dalvik fue reemplazado por completo por ART.
Android 7.0 "Nougat" transformó ART de una solución AOT pura a una solución híbrida JIT/AOT, al tiempo que cambió su entorno de ejecución Java del descontinuado Apache Harmony a OpenJDK , introduciendo un compilador JIT con perfilado de código. [ 10 ] El compilador JIT complementa al compilador AOT de ART, ayudando a mejorar el rendimiento en tiempo de ejecución y ahorrar espacio de almacenamiento al identificar el "código caliente" (código que se usa con frecuencia, se ejecuta en el hilo de la interfaz de usuario o afecta el tiempo de inicio), que el compilador AOT compila a código máquina mientras el dispositivo está inactivo y cargando. El código menos utilizado depende de la compilación JIT. [ 11 ] [ 12 ]
Android 9 "Pie" redujo la cantidad de almacenamiento utilizado por los APK mediante el uso de archivos de código de bytes comprimidos , y los datos del perfilador se pueden cargar a los servidores de Google Play para que se incluyan con las aplicaciones cuando los usuarios las descargan con un dispositivo similar, lo que reduce el tiempo de descarga desde Google Play hasta en un 40 %. Los perfiles en la nube de Google Play permiten optimizar las aplicaciones durante la instalación, lo que ayuda a evitar los problemas de rendimiento iniciales presentes en Android 7.0 a 8.1. [ 13 ]
En julio de 2021, [ 14 ] se introdujo el concepto de perfiles base. Los perfiles base son perfiles ART que definen métodos y clases que deben someterse a compilación AOT desde el primer lanzamiento de una aplicación, y son compatibles con Android 7.0 y versiones posteriores. Proporcionan una funcionalidad similar a los perfiles en la nube de Google Play de Android 9 cuando no están disponibles y se fusionan automáticamente con los perfiles en la nube cuando sí lo están. Los perfiles base se incluyen en las versiones de las bibliotecas AndroidX y Jetpack Compose . [ 15 ]
ART se actualizó con un nuevo recolector de basura (GC) que utiliza la llamada al sistema userfaultfd de Linux en Android 13. [ 16 ] [ 17 ] [ 18 ] Reduce la presión de memoria, el tamaño del código compilado y el jank , y evita el riesgo de que las aplicaciones se cierren debido a la poca memoria durante la recolección de basura . [ 18 ] Otros cambios también mejoran el inicio de las aplicaciones, reducen el jank y mejoran el rendimiento. [ 18 ] Debido al proyecto Mainline, el ART de Android 12 también se actualizará. [ 16 ]
Véase también
- Desarrollo de software para Android : diversos conceptos y utilidades de desarrollo de software utilizados para la creación de aplicaciones para Android.
- Historial de versiones de Android : un historial y descripciones de las versiones de Android, listadas principalmente por sus niveles de API oficiales.
- Comparación de software de virtualización de aplicaciones : diversas máquinas virtuales portátiles y basadas en lenguajes de scripting.
- Máquina virtual : una emulación de un sistema informático específico, con diferentes grados de funcionalidad implementada.
Referencias
- ↑ "AVISO - plataforma/arte - Git en Google" . Archivado del original el 4 de marzo de 2023. Recuperado el 25 de junio de 2021 .
- 1 2 3 Andrei Frumusanu (1 de julio de 2014). "Una mirada más cercana a Android RunTime (ART) en Android L" . AnandTech . Archivado del original el 5 de julio de 2014. Recuperado el 5 de julio de 2014 .
- ↑ Ben Cheng; Bill Buzbee (mayo de 2010). "Un compilador JIT para la máquina virtual Dalvik de Android" (PDF) . android-app-developer.co.uk . Google . págs. 5–14 . Archivado del original (PDF) el 6 de noviembre de 2015. Recuperado el 18 de marzo de 2015 .
- ↑ Phil Nickinson (26 de mayo de 2010). "Desarrollador de Android de Google explica más sobre Dalvik y el JIT en Froyo" . androidcentral.com . Archivado del original el 8 de abril de 2017. Consultado el 8 de julio de 2014 .
- 1 2 "Desarrolladores de Android: ART y Dalvik" . source.android.com . 9 de marzo de 2015. Archivado del original el 15 de marzo de 2015. Recuperado el 18 de marzo de 2015 .
- 1 2 "Desarrolladores de Android: Configuración de ART: Cómo funciona ART" . source.android.com . 9 de marzo de 2015. Consultado el 18 de marzo de 2015 .
- ↑ Amadeo, Ron (22 de agosto de 2016). "Análisis de Android 7.0 Nougat: haz más con tu gigantesco smartphone" . Ars Technica . Consultado el 5 de abril de 2023 .
- ↑ Sean Buckley (6 de noviembre de 2013) .El experimento "ART" en Android KitKat mejora la duración de la batería y acelera las aplicaciones . Engadget . Archivado del original el 27 de enero de 2017. Consultado el 5 de julio de 2014 .
- ↑ Daniel P. (7 de noviembre de 2013). "El entorno de ejecución experimental Google ART en Android KitKat puede lograr ejecuciones de aplicaciones dos veces más rápidas" . phonearena.com . Consultado el 5 de julio de 2014 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Android 7.0 para desarrolladores" . Desarrolladores de Android . Consultado el 22 de marzo de 2021 .
- ↑ Amadeo, Ron (22 de agosto de 2016). "Análisis de Android 7.0 Nougat: haz más con tu gigantesco smartphone" . Ars Technica . Consultado el 5 de abril de 2023 .
- ↑ "Implementación del compilador ART Just-In-Time (JIT)" . source.android.com . 22 de enero de 2017. Archivado del original el 8 de agosto de 2023. Consultado el 22 de enero de 2017 .
- ↑ Amadeo, Ron (13 de septiembre de 2018). "Android 9 Pie, análisis exhaustivo" . Ars Technica . Archivado del original el 30 de noviembre de 2018. Consultado el 16 de agosto de 2022 .
- ↑ "ProfileInstaller | Jetpack" . Desarrolladores de Android . Archivado del original el 8 de agosto de 2023. Consultado el 5 de julio de 2023 .
- ↑ Semenova, Kateryna; Ravikumar, Rahul; Craik, Chris (28 de enero de 2022). "Mejora del rendimiento de las aplicaciones con perfiles base" . Blog de desarrolladores de Android . Archivado del original el 8 de agosto de 2023. Consultado el 5 de julio de 2023 .
- 1 2 Gidra, Lokesh (12 de mayo de 2022), Novedades en el rendimiento de las aplicaciones , archivado del original el 16 de agosto de 2022 , consultado el 16 de agosto de 2022
- ↑ Gidra, Lokesh; Boehm, Hans-J.; Fernandes, Joel (12 de octubre de 2020). "Utilización de la llamada al sistema Userfaultfd de Linux en una fase de compactación de un proceso de recolección de basura" . Serie de publicaciones defensivas . Archivado del original el 16 de agosto de 2022. Recuperado el 16 de agosto de 2022 .
- 1 2 3 "¡Android 13 está en AOSP!" . Blog de desarrolladores de Android . Archivado del original el 15 de agosto de 2022 . Recuperado el 16 de agosto de 2022 .
Enlaces externos
- Sitio web oficial
- Conceptos básicos de Android 101: Entendiendo ART, el entorno de ejecución de Android en YouTube , XDA Developers , 12 de febrero de 2014
- ARTE: La evolución del entorno de ejecución de Android en YouTube , Google I/O 2014, por Anwar Ghuloum, Brian Carlstrom e Ian Rogers
- Un compilador JIT para la máquina virtual Dalvik de Android en YouTube , Google I/O 2010, por Ben Cheng y Bill Buzbee.
- Implementación de un entorno de ejecución de Android (ART) y un entorno de ejecución web altamente optimizados en la arquitectura Intel , Intel , 4 de agosto de 2015, por Haitao Feng y Jonathan Ding
- Android 7.1 para desarrolladores: compilación JIT/AOT guiada por perfiles , Android Developers, describe los cambios en ART en Android 7.1.
- Android (sistema operativo)
- máquina virtual Java
- Software que utiliza la licencia Apache.