5 votes

ART exécute-t-elle le code des applications en mode natif ?

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

5voto

user3363866 Points 291

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 :

Diagram of the Android Run Time architecture, recreated from information published at A Closer Look at Android RunTime (ART) in Android L. (http://anandtech.com/show/8231/a-closer-look-at-android-runtime-art-in-android-l/) ( 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.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X