Hace no mucho tiempo, os hablamos de que Google había adquirido una empresa francesa llamada Flexycore. Esta compañía desarrolló una aplicación que hacía que nuestros terminales Android fueran más fluidos y, por tanto, fueran más rápidos. Pues bien, esta relación ya da sus frutos pues se ha sabido que en Android 4.4 Kit-Kat, Google implementa una nueva maquina virtual desarrollada por Flexycore que presumiblemente sustituirá a la actual. Vamos a explicarlo en profundidad.
En nuestros terminales, cada aplicación que abrimos se ejecuta en su propia maquina virtual, pero ¿qué es una maquina virtual?
Una maquina virtual es un programa dentro de un sistema operativo que simula ser su propio sistema operativo. Para que os hagáis una idea, en Windows, que quizá nos es más familiar. Cada vez que ejecutáramos un programa este abriría un Windows propio que se ejecutara en él. Suena absurdo, pero ahora pensad que queréis ejecutar un programa para Linux en Windows o la inversa, para ello tendríais que usar una maquina virtual. En Android, el sistema operativo base es Linux y la maquina virtual es conocida como Dalvik que es quien compila los archivos Class de Java en archivos ODEX para ejecutarlos en el terminal.
Como casi todo, este sistema tienes sus ventajas en inconvenientes. El sistema de nuestros Android nos permite cambiar de maquina virtual manteniendo otra o otras en segundo plano. Una gran ventaja que dota a nuestros dispositivos de una multitarea prácticamente real. Sin embargo, que cada aplicación se tenga que desarrollar en su propia maquina virtual en lugar de ejecutarse directamente desde el sistema operativo produce que el conjunto de el sistema pierda fluidez, y esto empeora conforme más aplicaciones tenemos abiertas ya sea en pantalla o en segundo plano.
A pesar de este inconveniente, Android es un sistema notablemente fluido, pero cabe preguntarse si puede serlo más aún. Para Google, la respuesta es sí. Por eso motivo ha decidido crear una nueva maquina virtual nueva llamada ART (Android Runtime) que en un futuro sustituirá a la actual, Dalvik. Esta nueva maquina virtual pretende hacer funcionar todo el sistema más rápidamente. Para ello trabajará con un nuevo tipo de archivo compilado llamado OAT (como hemos dicho, hasta ahora eran archivos ODEX). Por supuesto, Google ha facilitado el codigo para poder pasar de una compilación a otra si lo deseamos. Lo podéis encontrar aquí.
La principal diferencia entre la antigua Dalvik y la nueva ART, reside en que la antigua ejecuta una maquina virtual interpretando el código al tiempo que se inicia la aplicación. En cambio, ART es AOT (Ahead-Of-Time), es decir, comienza una pre-compilación al instalar la aplicación y, por tanto, al ejecutarla esta ya no requiere tanta carga de datos como antes y hace que iniciar una aplicación se produzca en menos tiempo. Además, las primeras pruebas realizadas por desarrolladores con la nueva ART están siendo muy alentadoras, ya que en algunos caso se reduce el tiempo de inicio y ejecución de una aplicación a la mitad.
Por supuesto, esto también afecta al tiempo de cierre de una aplicación. Esta será consecuentemente más rápida, y al mismo tiempo liberará el sistema del uso intenso durante largos periodos, lo cual, significa que el procesador trabajará menos y por tanto se ahorra batería a largo plazo. Todo muy buenas noticias y, realmente, esta nueva implementación parece sencillamente fantástica.
Pero además de todo esto, puede haber otro motivo sobre este posible cambio de Dalvik a ART. Google ha tenido disputas legales con Oracle, que compró a Sun Microsystems, quien creo el lenguaje de programación Java que se usa para crear las aplicaciones en Android.
Desde Oracle, aseguran que Dalvik ha sido creada por un equipo de Google y que está desarrollado a partir de este lenguaje de programación como un código de licencia abierta que se sirve de Java como aseguran los de Muntain View. Para librarse de otros juicios similares, y de suspicacias y dependencias, Google puede querer implementar la nueva maquina virtual cuyo lenguaje de programación es C++.
A pesar de todas estas ventajas, ART, también tiene inconvenientes. Primero, que al incorporar una parte de la compilación en la instalación de una app, el tiempo para instalarla se verá aumentado. Y segundo, que ya que se añade cierto código durante la instalación, las aplicaciones ocuparán algo más (muy, muy poco más), sin embargo, cuantas más aplicaciones instaladas, mayor será esta carga de espacio.
Por otro lado, si sois los afortunados poseedores de un Nexus 5 (o muy pronto cualquier otro terminal con Android 4.4 Kit-Kat) podréis cambiar entre ellas y ayudar al equipo de Android encontrando fallos en ART antes de que se implemente definitivamente y así, comprobar desde ya si realmente nuestros teléfonos pueden ser más fluidos con la nueva maquina virtual. Para ello, pulsad varias veces sobre Número de Compilación en Información del Teléfono/Tablet dentro de los Ajustes y desbloquead las Opciones de Desarrollo que también se encontrarán dentro de los Ajustes. Ahí encontraréis la opción para cambiar de Dalvik (que viene marcado por defecto) a ART. Hacedlo bajo vuestra responsabilidad ya que esto pude provocar fallos inesperados y que el sistema vaya lento.
Sin embargo, y a pesar de que parece que son muy buenas noticias, Google no ha informado demasiado sobre este importante cambio. Puede ser, que esto sea debido a que el cambio de una a otra maquina virtual no sea definitivo por el momento. O esperaba a que los desarrolladores lo encontrarán para escuchar sus quejas, sugerencias o mejoras para aplicarlas. Quizá pretende que sean primero estos mismos desarrolladores los que hicieran un testeo previo antes de empezar con un beta-testeo en toda regla en toda la comunidad Android.
Por tanto, es muy posible que la nueva maquina virtual se implementará en alguna de las siguientes versiones de Android y sustituirá a Dalvik, mejorando la fluidez y acercando poco a poco las más recientes versiones de Android a cualquier terminal ya sea de gama baja, media o alta.
Atención: De momento no intentéis esto con Roms Kit-Kat cocinadas ya que podrían provocar fallos graves en vuestros terminales.
Más información de Art en Android Source Code