Le nom de Dalvik Virtual Machine, ou DVM, vous est peut-être inconnu, mais pourtant c’est ce petit dispositif qui fait d’Android ce qu’il est : un OS polyvalent dont les applications peuvent être développées sans se soucier du processeur sur lequel elles fonctionneront.

En effet, Android colle à la philosophie Java (write once, debug everywhere run anywhere) en utilisant une VM. C’est ce qui permet à l’OS d’être adopté depuis ses débuts sur toutes formes de supports. Toutefois, l’OS au robot vert n’a pas recours à la JVM classique mais à un dérivé optimisé nommé Dalvik Virtual Machine.

Cette dernière repose depuis Android 2.2 sur le JIT qui « est une technique visant à améliorer la performance de systèmes bytecode-compilés par la traduction de bytecode en code machine natif au moment de l’exécution » (wikipédia).

Or depuis Android 4.4, l’OS n’embarque plus qu’une VM mais bien deux. En effet, comme on l’expliquait il y a maintenant quelques mois, KitKat utilisait par défaut Dalvik mais pouvait aussi utiliser ART, une nouvelle machine virtuelle plus rapide.

ARTvsDalvik

Graphique des temps de réponse en fonction de la VM utilisée. Détails disponible ici.

ART est probablement le fruit du travail de l’entreprise bretonne Flexycore que nous avions interviewée en 2010 et que Google a rachetée en 2013 pour 16,9 millions de dollars. C’est une machine virtuelle qui fonctionne différement de la Dalvik. En effet, ART, pour Android RunTime, ne repose pas sur le JIT comme procédé d’optimisation mais sur la compilation ahead of time (AOT). Au lieu d’optimiser le code à l’exécution, le système prend plus de temps (et plus d’espace disque) à l’installation pour passer en revue ce qu’il est possible d’optimiser.

L’actualité de cette semaine est la confirmation qu’ART ne sera plus un outil optionnel activable seulement par les développeurs, mais sera bien la machine virtuelle par défaut sur la prochaine version d’Android puisque Brian Carlstrom, développeur chez Google, a récemment changé la configuration par défaut dans le code d’AOSP.

À ce stade du développement de la prochaine version d’Android, DVM est donc encore présente mais ART prendra en charge, par défaut, l’exécution des applications.