Il y a désormais de fortes chances que la prochaine version d’Android soit fournie avec une nouvelle machine virtuelle par défaut. ART, pour Android Runtime, devrait ainsi remplacer Dalvik et fournir aux applications un gain bienvenu de performances.
Des applications compilées jusqu'ici à la volée
Sous Android, la très grande majorité des applications sont écrites en Java. Comme tout développement utilisant ce langage, elles ont besoin d’une machine virtuelle qui va s’occuper de les compiler avant qu’elles ne s’exécutent. Dans le système mobile de Google, ce rôle est attribué à Dalvik, qui est donc chargé de récupérer des fichiers DEX qui contiennent du bytecode. Ce dernier est en fait un langage intermédiaire, conçu pour être compilé à la volée (compilation JIT).
Quand un utilisateur d’Android récupère une application depuis la boutique Google Play, il télécharge en fait un code intermédiaire. Quand l’application se lance, le bytecode est alors compilé en langage machine qui devient dès lors directement exécutable par le processeur de l’appareil. On retrouve ici les avantages du langage intermédiaire, qui n’a rien de spécifique à Java (Microsoft utilise un modèle équivalent pour .NET), mais les applications sont en revanche plus lentes à démarrer et certains soucis de performances peuvent voir le jour.
« Dalvik is dead, long live Dalvik! »
Ce problème de performances des applications Android est un vieux sujet, et Google travaille sur la question depuis un certain temps. Mais au cours de la nuit de mercredi à jeudi, un changement très important a été réalisé par la firme dans la branche principale de développement d’AOSP (Android Open Source Project). Deux « commits », numérotés 98553 et 98618, changent en effet la donne. Comme le signale XDA-Developers, le premier supprime Dalvik tandis que le second proclame ART comme machine virtuelle par défaut.
ART, pour Android Runtime, n’est pas nouveau. Il est en fait en test depuis l’année dernière et il était tout à fait possible de l’utiliser via les options dédiées aux développeurs. Cependant, son fonctionnement rendait une bonne partie des applications tierces instables à cause d’un fonctionnement très différent. Mais l’objectif global est bien l’amélioration des performances. Explications.
Google veut améliorer les performances des applications
Le plus gros changement introduit par ART est la compilation dite AOT, pour « Ahead-Of-time » (là encore, comme Microsoft procèdera bientôt avec .NET). Si la compilation JIT s’occupe de transcrire à la volée, AOT s’en occupe « avant ». Plus précisément, le code intermédiaire va être compilé dès sa récupération depuis Google Play pour réellement « installer » l’application, qui sera enregistrée telle quelle dans le téléphone, en code natif. Son lancement sera donc beaucoup plus rapide car le code ne sera pas recompilé à chaque exécution. Du moins en théorie.
Parmi les autres changements, ART fournit également un « garbage collector » (ramasse-miettes) amélioré. Dans sa documentation technique, Google explique en effet que celui-ci a souvent un impact sur les performances. Dans ART, plusieurs aspects ont été optimisés et une fonction de compactage doit arriver plus tard. Toujours pour les développeurs, Android Runtime propose également de nouvelles fonctionnalités pour le débogage ainsi que des outils d’analyse spécifiques, notamment pour la gestion des exceptions et des crashs.
Les travaux ne sont pas terminés
Dans la pratique, de nombreux problèmes devront être résolus. Il existe en effet une différence de taille entre proposer une machine virtuelle non finalisée aux développeurs et l’utiliser en standard pour tous les utilisateurs. Car le remplacement de Dalvik par ART va directement impacter les constructeurs qui devront procéder à de nombreux réglages dans les ROM fournies avec les smartphones et tablettes. À travers les discussions des testeurs, on trouve assez facilement des constats de soucis de ce type.
Mais les constructeurs ne seront pas les seuls à devoir s’adapter. Les applications tierces vont devoir elles aussi procéder à des changements. Les développeurs ont cependant déjà adapté une bonne partie d’entre elles et les utilisateurs ne devraient pas rencontrer de difficultés majeures lorsqu’ART entrera effectivement en piste. On peut d’ailleurs déjà vérifier si les applications que l’on utilise sont compatibles via un site dédié.
Mais justement, quand cette arrivée est-elle prévue ? La réponse devrait en fait arriver la semaine prochaine durant la Google I/O. La firme va sans doute procéder à de nombreuses annonces, les rumeurs de renouvellement visuel étant particulièrement nombreuses. Elle pourrait d'ailleurs présenter Android 5.0, dont ART serait alors l’une des nouveautés majeures puisque mettant l’accent sur les performances, voire à terme une amélioration de l’autonomie.
Commentaires (87)
#1
Ya une coquille : ça se dit pas “long live to “, on dit “long live ”
Comme dans “The king is dead, long live the king!” ou même dans le screenshot de merge dans la news : « Dalvik is dead, long live Dalvik! »
#2
#3
#4
#5
Son lancement sera donc beaucoup plus rapide car le code ne sera pas recompilé à chaque exécution. Du moins en théorie.
Dans la pratique, y’a quand même peu de chance qu’il n’y ai pas d’amélioration si ? (Même si elles ne sont pas perceptible)
#6
Cependant, son fonctionnement rendait une bonne partie des applications tierces instables à cause d’un fonctionnement très différent.
Là pour le coup, l’article est carrément faux. J’ai activé ART assez rapidement et je n’ai pas constaté de problèmes sur les applications tierces (je dois en avoir une bonne 40aine d’installées). J’ai bien eu quelques plantages d’applis mais impossible de savoir qu’elle en était la raison.
Bref, ART n’a pas rendue la majorité des applications tierces instables, c’est faux.
#7
#8
#9
Dans Windows Phone et iOS, comment ça se passe ? Histoire d’avoir un léger point de comparaison si possible :)
Et d’ailleurs, en quel langage est programmé une application WP et iOS ? Histoire d’arrêter la comparaison directement " />
#10
#11
#12
Et ya les images d’android 4.4.4 dispo
#13
#14
#15
les applis IOS sont natives, avec certaines améliorations du code managé (garabage collector).
Sous win8, le fonctionnement est semblable à Dalvik, mais en .NET. Avec Roslyn, on aura la même chose qu’ART : le code intermédiaire sera précompilé.
Le grand perdant dans tout ça, ce sont les applis html/javascript, mais ils ont droit à leur propre améliorations via le navigateur embarqué.
#16
#17
#18
Mwais, l’AOT va être intéressant, mais à condition d’avoir des devices avec deux fois plus de flash intégrée qu’actuellement car il faudra à chaque fois stocker les binaires et en byte code et en code natif…
#19
#20
“Les développeurs ont cependant déjà adapté une bonne partie d’entre elles et les utilisateurs ne devraient pas rencontrer de difficultés majeures lorsqu’ART entrera effectivement en piste”
On verra bien quelque mois après la conférence " />
#21
#22
#23
#24
#25
#26
je suis sous ART avec mon nexus 5 et j’ai gagné 10% d’autonomie en gros.
le switch entre les applications et plus rapide. par contre les applis prennent plus de place et après un wipe dalvik la creation du cache est hyper longue (30-1min en dalvik et 15 min avec ART)
#27
#28
#29
Toujours pas d’interpréteur Python pré-installé…
" />
#30
#31
#32
#33
#34
#35
#36
#37
Pour avoir testé ART sur CyanogenMod 11 (android 4.4.3), le principal soucis que j’ai eu sur mon Xperia Arc S, c’est que… bon dieu, ca bouffe la RAM à vitesse grand V ! Du coup, j’ai dû revenir à Dalvik pour que mes applications habituelles puissent toutes être installées et fonctionner sur 512 Mo (curieusement, une config qui devrait convenir à KK) !
#38
Est ce qu’un galaxy S5, pourras faire les MAJ nécéssaires pour accueillir ces nouveautés ou bien est-ce qu’il faudra le mettre à la poubelle et changer de smartphone?
Je veux dire ça me semble être de gros changements en perspective, et annoncer cela comme ça, faut que les utilisateurs d’Androïd sachent à quoi s’attendre.
A moins qu’ils ne soient déjà habitués.
" />" />
#39
#40
#41
#42
#43
#44
#45
#46
#47
#48
" /> Je viens pinailler un peu, mais bon.
La phrase “Dalvik is dead, long live Dalvik” est une erreur grossière.
Cette phrase vient du célèbre “Le Roi est mort, vive le Roi” sauf que dans cette phrase, la première partie “le Roi est mort” indique que le roi vient de mourir (" /> non sans blague ?!) et “vive le Roi” est une phrase destinée au roi qui lui succède.
Sauf que cette phrase toute faite a un peu perdu de son sens…
Ici ce serait Dalvik est mort, vive ART par exemple.
#49
#50
#51
#52
#53
#54
#55
Oh les belles tentatives de piratage sur http://www.androidruntime.com/list " />
insert into mysql.user (user, host, password) values (‘name’, ‘localhost’, password(‘pass123’))
#56
#57
#58
#59
Pas de souçis pour y passer sur mon nexus 5.
Par contre sur ma tablette LG, avec leur rom à la con, je suis obligé d’utiliser le framework xposed, non compatibe ART….
#60
Pour ceux qui veulent tester ART et qui ont Android 4.4.x il faut cliquer 7 fois sur le numéro de build dans la partie “à propos” des paramètres. Dès lors un nouveau menu développeur sera présent et parlera entre autres de ART…
#61
#62
si les appli sont compilé a l’execution, c’est quoi la phase qui passe en revu les appli lors d’une maj ou du vidage du cache dalvik ?
#63
A la decharge d’android et sa soit disant lenteur, ya aussui un parametre enorme a prendre en compte: les surcouches constructeurs qui bouffent du temps CPU, de la RAM et de l’autonomie. Mon nexus 5 est beaucoup plus reactif qu’un Samsung S5 avec Touchwiz alors que le hardware est largement inferieur…
#64
Je suis le seul que ça choque d’avoir un gros “DO NOT MERGE” écrit dans la change list qui est maintenant “MERGED” ? " />
#65
#66
#67
#68
#69
#70
#71
#72
#73
Quelqu’un sait si Drastic (Emulateur DS) marche avec ART ? Sur le site de compatibilité il est dit que non, mais cela date un peu.
#74
#75
#76
#77
Je suis heureux de lire cette article, je passe a chaque fois pour un fou intégriste quand je dit qu’Android est lent et qu’il n’y a pas besoin de processeur a 2ghz sur mobile pour faire fonctionner l’app facebook ou instagram. Si Android passe en code natif, on devrait voir un gain substantiel en performance.
#78
#79
#80
#81
#82
#83
#84
#85
#86
#87