Uno de los cambios más importantes que se inician en Android 4.4 es la sustitución de la máquina virtual de Java. Actualmente se utiliza Dalvik y todos podemos estar medianamente de acuerdo en que no se trata de la mejor del mundo, aunque sea un problema de la arquitectura de Java más que de Android en sí.
Si bien las aplicaciones Android podrían ser escritas en otros lenguajes más eficientes como C o cualquiera de sus versiones, el proyecto se inició pensando en Java como el lenguaje a utilizar y ya es bastante tarde para dar marcha atrás. Pero lo que hace un par de años a desarrollar Google es un nuevo sistema para compilar y ejecutar las aplicaciones denominada ART, Android Run-Time.
La diferencia entre Dalvik y ART es importante: parte de un programa con Dalvik se tiene que compilar mientras se arranca o se está ejecutando (ya que Java está pensado para ser independiente del hardware, pudiendo dar soporte a una mayor cantidad de plataformas) y con ART se ejecuta un programa previamente precompilado para un hardware específico. Lo segundo es lo que se usa en otros lenguajes de programación como C++ u Objective-C, utilizado en Windows Phone e iOS, y que permite algo muy importante: necesitar menos hardware (procesador y memoria) para ejecutar las aplicaciones.
La cantidad de procesamiento y memoria adicionales necesarias para ejecutar una aplicación mediante Dalvik siempre ha lastrado enormemente a Android como plataforma, haciendo que los smartphones con menos hardware (la mayoría de los gama media y baja que tienen más de año y medio) se notaran poco fluidos. Lo que propone Google es corregir esa fluidez para teléfonos con menos hardware utilizando ART.
Aunque esté disponible solo en Android 4.4 de forma experimental, aquellos que ya tengan un Nexus 5 podrán activarlo en el menú de opciones del teléfono. Tras ello tendrán que esperar a que ART compile todas las aplicaciones instaladas, un proceso que puede llevar varios minutos dependiendo del hardware del procesador con que cuente el teléfono. Una vez activado ART, cada vez que descargues una aplicación se compilará en ese momento para nuestro smartphone, lo cual llevará a que tarde más tiempo en instalarse.
Pero las ventajas son obvias: mayor velocidad en la ejecución de las aplicaciones... en teléfonos antiguos. En el Nexus 5, con 2GB de RAM y un procesador Snapdragon 800, no vais a notar mejoría. Pero ya que Google vende Android 4.4 como la solución a los problemas de rendimiento en hardware antiguo (con 512 MB de memoria o procesador de doble núcleo a 1GHz o similares), ART nos permitirá exprimir durante unos cuantos años más nuestros teléfonos antiguos.
Oracle vs Google
Eso sí, el acercamiento de Google es totalmente el opuesto a Java, que se basa en generar unos bytecodes que se pueden ejecutar por igual en la máquina virtual de Java de cualquier plataforma: OS X, Android, Windows, Debian, Ubuntu, o cualquier otra distribución de Linux. Sin tener que hacer nada más.
Este acercamiento es probable que provenga de la disputa en los tribunales entre Google y Oracle y que llevaría a Google a empezar el desarrollo de un nuevo sistema de ejecutar código de Java sin tener que usar la máquina virtual de Oracle.
Es un acercamiento que es lo que estaban esperando los usuarios de Android... hace dos años. Ahora es un poco tarde para poder exprimir las ventajas de ART en un hardware que es muy superior al que necesita Windows Phone o iOS, ya que la evolución de Android ha estado orientada a meter hardware más potente en vez de optimizar el sistema operativo. Lo que tradicionalmente se llama matar moscas a cañonazos.
Futuro de ART
Cuando ART salga de la fase de pruebas en una próxima versión de Android (¿4.5? ¿5.0?) lo que puede ocurrir es que durante unos meses no veamos cambios en el hardware de los teléfonos, o que reduzcan la velocidad de introducción de mejor hardware en los buques insignias si el rendimiento de ART mejora los tests de velocidad. De hecho, las mejoras de estos tests será posiblemente pequeña, y afecte sobre todo a los tiempos de carga y de uso de memoria de las aplicaciones. Como he dicho, son cosas que beneficiarán a los dispositivos con menor memoria o procesadores más lentos, no a los buques insignia de las compañías como el Nexus 5. Pero lo que sí puede aportar ART en esos dispositivos es algo interesante: menor consumo de batería, propicionado por un menor uso de la memoria y del procesador por parte de las aplicaciones.
Pero puede que ART tampoco termine de llegar a todos los teléfonos, ya que los fabricantes también necesitarán adaptar ese compilador al hardware específico de cada dispositivo para poder utillizar los programas escritos en Java y que funcionen todos sus componentes: procesador, gestión de memoria, chips bluetooth, WiFi, LTE, almacenamiento, cámaras... Cada fabricante puede utilizar una forma de manejar su hardware y de ahí la necesidad de Dalvik y la arquitectura Java. También es el motivo de que ART puede quedarse en nada, o una mejora importante para el hardware de los Nexus y ninguna mejoría para el hardware de las demás compañías.
Es pronto para hablar de lo que nos va a proporcionar exactamente ART a los usuarios de Android. Ahora todo depende de lo rápido que Google saque a su compilador de la fase de pruebas y los fabricantes hagan su labor de adaptación.
¿Llega ART tarde? ¿Qué opináis?
Vía: GigaOM.