Comme le nouveau runtime ART compile les applications AOT, je me demandais si l'exécution d'une application comprend toujours une machine virtuelle, ou si le code est exécuté directement sur le système. Je n'ai pas été en mesure d'extraire cette information des articles sur le web, car certains mentionnent une machine virtuelle, tandis que d'autres parlent de la compilation des applications en fichiers ELF (à ma connaissance, le format binaire utilisé par le noyau Linux, ce qui suggère que les applications sont exécutées en mode natif).
Quelqu'un peut-il m'aider à ce sujet ?
BPou
Réponse
Trop de publicités?En bref : oui, ART traduit les applications en code natif de l'architecture du téléphone et les applications s'exécutent donc en mode natif sans avoir besoin d'un compilateur JIT.
Longue histoire : Pour des raisons de compatibilité, les applications sont toujours regroupées dans des apks portant le code java compilé dans des fichiers dex. Mais au lieu de simplement optimiser le code .dex et de l'exécuter dans Dalvik VM (DVM), le code est compilé en code natif. Cette opération est effectuée sur l'appareil à l'aide d'un outil appelé dex2oat où les fichiers oat sont intégrés dans le format de fichier ELF ordinaire.
La figure suivante illustre la différence entre l'utilisation de DVM et ART :
( Wikipedia : Diagramme de l'architecture du Run Time d'Android, recréé à partir d'informations publiées à l'adresse suivante Un regard plus attentif sur Android RunTime (ART) dans Android L .)
L'amélioration des performances provient du fait que le DVM utilise la compilation JIT à chaque fois qu'une application est exécutée, alors que la compilation AOT n'intervient qu'au moment de l'installation.