// ART, el sucesor de Dalvik en Android (que es y como funciona)

3

Dalvik es el ambiente “runtime” el cual se ha utilizado en Android desde los inicios. ¿Pero que es “runtime” y como este trabaja dentro de Android? Un sistema Runtime se le conoce a un software diseñado para apoyar la ejecución de las aplicaciones de computadoras trabajadas en algún lenguaje de programación (Wikipedia). Por lo tanto, Dalvik se encarga de ejecutar las aplicaciones en Android diseñadas en el lenguaje de Java. Suena sencillo aunque en realidad como trabaja es algo más complejo. Veamos.

¿Qué es Dalvik?

Dalvik como tal es una maquina virtual, diseñada especificamente para el proyecto de Android. Un complilador de Java toma el codigo de la programación y lo convierte en “Bytecode”. Este “bytecode” (como se le conoce a un programa en Java que ya fue compilado) se ejecuta en la maquina virtual en vez de ser ejecutada directamente en el procesador de la computadora, en el caso de Android, en el Smartphone o Tablet. Al utilizar esta metodología, un mismo codigo se puede utilizar en diversas plataformas ya que no hay una dependencia directa al ambiente donde se estará ejecutando. A diferencia de programas diseñados en lenguajes como C y C++ donde tiene que compilarse para cada plataforma donde seran ejecutados (Windows con Intel, OSX, etc.). Es esta flexibilidad permite la implementación de Android en tantos equipos con especificaciones tan variadas.

[su_pullquote]Dalvik se ha demonizado con los años[/su_pullquote]Pero como pudo haber notado, hay un proceso adicional el cual la aplicación en Android tiene que pasar cada vez que se ejecuta, al menos parte de su codigo tiene que ser compilada cada vez que se va a utilizar la aplicación. Esta tarea la hace un interpretador llamado “Just-In-Time” (JIT), quien compila el bytecode de la aplicación a codigo que entiende al computadora cada vez que es ejecutada. Esta tarea no sucede en otras plataforma como por ejemplo iOS y Windows Phone, donde ya la aplicación ha sido compilada en su totalidad de antemano a un codigo donde el procesador puede ejecutarlo directamente. Este paso adicional que toda aplicación de Android tiene que pasar ha desalentado a un grupo significativo de desarrolladores quienes quieren el mejor desempeño en sus desarrollos. Dalvik se ha demonizado con los años, siendo señalado constantemente como el pricipal responsable de los problemas de desempeño que en ocasiones presenta el sistema operativo de Android. Inclusive, algunos acusan a Dalvik de ser hasta dos veces mas lento que la maquina virtual de Java SE trabajada por Oracle.

Hablando de Oracle, el desarrollo de Dalvik tambien tiene una historia oscura, donde Oracle acusa a Google de haber robado codigo del API de Java para de esta forma no tener que pagar costos de licencia por cada Android que se vende en el mercado. Sin embargo Oracle perdió este demanda en junio del 2012, aunque al día de hoy persiste en que Google cometió un delito al robar codigo protegido por los derechos de autor (copyright).

Google ha sido bastante agresivo en cambiar y optimizar todos los componentes del sistema operativo de Android, sin embargo Dalvik ha sido la unica variable persistente en cada versión lanzada. Esto es… hasta ahora con Android 4.4 KitKat.

Bienvenidos al nuevo capítulo de Android con ART

Por los pasados dos años los desarrolladores de Google han estado trabajando en un nuevo Runtime para Android llamado ART. ART (Android Runtime) hace un cambio significativo en como las aplicaciones se ejecutan dentro del sistema operativo. En vez de tener que compilar parte del código de la aplicación cada vez que va a ser ejecutada, ART hace una compilación completa al lenguaje que entiende la computadora cuando se instala por primera vez. De ahí en adelante la aplicación se ejecuta como una nativa, tal como sucede hoy día en iOS y Windows Phone. Este nuevo proceso de compilación de las aplicaciones al momento de la instalación se le conoce como “Ahead-Of-Time” (AOT).

[su_pullquote]las aplicaciones ahora pueden iniciar más rápido [/su_pullquote]¿Qué beneficios tiene esto? Uno, Android no tiene que subir una máquina virtual cada vez que inicia una aplicación si ya el código está en un formato en que el equipo pueda trabajarlo directamente. Solo se compila una vez y listo, este proceso no se tiene que repetirse. Dos, las aplicaciones ahora pueden iniciar más rápido al brincar este paso cada vez que se inicia. Tres, la eliminación de este proceso puede traer beneficios interesantes como reducción en el consumo de los recursos de Android como lo es el procesador, memoria y batería. Cuatro, Google se libera del fantasma de Oracle, con un Runtime que trabaja muy diferente al Java SE.

Por ahora ART está en una etapa beta, pero si usted tiene un equipo con Android 4.4 KiKat, usted puede habilitar esta opción hoy mismo. Primero tiene que habilitar la opción de DEVELOPER OPTIONS haciendo estos pasos:

Paso #1: Ingrese a la aplicación de SETTINGS.

Paso #2: Ingrese a la opción de ABOUT PHONE o ABOUT TABLET.

Paso #3: Al final de la descripción de su Nexus, vera una sección llamada “Build Number” Oprima este 7 veces (nota: vera que a la tercera vez que lo oprime le sale un mensaje diciendo que oprima 4 veces más para tener privilegios de “developer”).

clip_image001

Paso #4: Verá un mensaje diciendo que ya usted tiene privilegios de desarrollador (Developer). Ahora regrese al menú anterior.

clip_image002

¡Miren quien regreso! Ahora la opción de DEVELOPER OPTIONS vuelve a estar visible.

Ahora que tiene la opción de DEVELOPER OPTIONS disponible, ingrese a SETTINGS > DEVELOPER OPTIONS > SELECT RUNTIME y verá que este le da la opción de moverse entre el viejo Dalvik y el nuevo ART.

image

Conste, Google está dejando bien claro de que ART todavía está en desarrollo, por lo tanto no se recomienda su uso para el día a día. Sin embargo, si usted es un desarrollador o simplemente un curioso aventurero (el cual no le importa ver un mensaje de “Force Close” cada 15 minutos), puede probar ART hoy mismo. ¿Verá usted una diferencia? Los resultados pueden variar. Una aplicación pequeña puede que no presente mucho cambio ya que quizás Dalvik maneja la compilación obligatoria bastante eficiente. Es en aplicaciones más pesadas las que quizás se pueda apreciar una diferencia.

Ahora bien, la pregunta obligada es: ¿acaso ART tiene algo negativo? Todo suena demasiado bueno, ¿no creen? Hay un detalle que los desarrolladores tienen que considerar con esta nueva propuesta de Google. Cuando un código bytecode se convierte en código que la computadora puede reconocer, la aplicación suele a crecer de tamaño. Algunos reportan de un 10% hasta un 20% su crecimiento. Esto es porque una línea de código en el bytecode puede equivaler a varias líneas de código en instrucciones que reconoce la máquina. Pero quizás no es tan dramático como suena. Solo el código ejecutable con instrucciones son las que sufrirían este cambio, archivos que acompañan la aplicación (imágenes, media, etc.) no varían su tamaño luego de ser compilada la aplicación.

[su_quote]ART definitivamente puede ser un cambio significativo a la plataforma de Android[/su_quote]

ART definitivamente puede ser un cambio significativo a la plataforma de Android. Estamos viendo que a nivel de Hardware, el crecimiento se ha estado desacelerando. Ya no vemos cambios significativos de una versión a otra en las especificaciones de los nuevos modelos Android siendo lanzados al mercado. Pero Software puede ser toda otra historia, donde podamos ver grandes avances con sistemas operativos más robustos y más eficientes. Con ART, Google deja saber que ya va encaminado a paso fuerte a esa meta.

Fuentes: Wikipedia, Google

3 Responses

  1. JoLo

    Tremendo articulo, mi unica discrepancia es en la parte que índicas que usar ART provoca Force Close cada 15 minutos. Actualmente uso Art en mi Nexus 7 y mi One M8 y no se lo que es un Force Close.

    Reply
    • carlosbermudez
      carlosbermudez

      @JoLo

      Gracias Jolo! Al momento de escribir este artículo estabamos jugando con la primera versión de KitKat. Definitviamente ART se ha estabilizado bastante en las últimas actualizaciones lo que nos da a entender que quizas escuchemos más de ART en el Google/IO 2014.

      Reply

¡Comparte tu opinion!