BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Android va avoir un compilateur Ahead-Of-Time

Android va avoir un compilateur Ahead-Of-Time

Favoris

Google a choisi de remplacer son compilateur à la volée (JIT) dans Android, par un compilateur en avance (ndt: ahead-of-time (AOT)) qui traduit le bytecode en code machine natif lors de l'installation.

Google a annoncé la nouvelle version de son système d'exploitation Android lors de la Google I/O 2014. Nom de code “L release,” qui contient un changement net d'architecture du système avec un nouveau moteur d'exécution appelé Android RunTime (ART) et qui comporte un compilateur AOT pour remplacer la machine virtuelle Dalvik et son compilateur JIT.

Les compilations AOT et JIT présentent des avantages et des inconvénients pour des situations différentes. L'implémentation de ART par Google fait un choix différent dans le compromis taille/rapidité tout en conservant la flexibilité de la compilation JIT. Cette stratégie est optimisée pour l'ensemble des plate-formes matérielles Android. Les autres plate-formes mobiles font des choix différents selon les environnements matériels et leurs logiciels :

  • iOS se base sur une compilation statique où le processus de build génère du code natif optimisé sur le poste du développeur avant que l'application soit uploadée.
  • Windows Phone utilise une compilation dans le cloud où le marché d'applications génère le code machine avant l'installation sur le téléphone.

De telles stratégies sont optimisées pour des environnements matériels très controllés comme celui d'Apple ou les environnements très hétérogènes comme celui de Microsoft.

Avec le nouveau moteur d'exécution Android, le système compile le bytecode en code natif sur le terminal lors de l'installation et stocke ce code natif pour utilisation ultérieure. Le code natif est plus volumineux, aussi bien en stockage qu'en RAM. En revanche, contrairement à Dalvik et la compilation JIT, le processus de compilation n'a pas besoin d'être répété à chaque exécution.

ART conserve un des avantages de la compilation JIT : le système d'exploitation connaît exactement les spécifications matérielles lors de l'installation d'une application sur un téléphone, une tablette ou n'importe quel autre matériel. Il peut ainsi généré un code natif adapté en sachant que le matériel ne va pas changer et peut optimiser le code généré pour correspondre au mieux au processeur. C'est l'opposé des compilateurs statiques qui doivent généralement produire du code non optimisé pour un processeur particulier ou produire plusieurs versions du code pour différents processus.

Google annonce des améliorations de performances allant jusqu'à 200% entre ART et Dalvik, partiellement car le compilateur AOT a une vue d'ensemble du code alors que le compilateur JIT ne peut faire que des optimisations locales. Dans un article pour AnandTech, Andre Frumusanu note que "les coûts comme celui des exceptions sont fortement diminués et les appels aux méthodes et interfaces sont nettement accélérés”. De plus,

ART compile un exécutable ELF, donc le noyau est capable de gérer la manipulation de code page - Cela donne potentiellement lieu à une amélioration de la gestion de la mémoire et moins d'utilisation de cette dernière.

Une version développeur est déjà disponible et la version finale est attendue pour l'automne. De ce fait, l'amélioration totale ainsi que les compromis faits peuvent encore changer. Cela ne semble pas être une avancée fondamentale dans la compilation et Google n'a pas fixé d'agenda particulier. Ils continuent de chercher la meilleure stratégie de compilation pour la collection particulière de matériels et de capacités qu'est l'environnement Android.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT