ART (Android)

Pour les articles homonymes, voir ART.

Comparaison des architectures Dalvik et ART.

ART (abréviation de Android Runtime) est un environnement d'exécution utilisé principalement par le système d'exploitation Android. Il vise à remplacer la machine virtuelle Dalvik et à remplacer le bytecode par des instructions natives[1].

## Principe de fonctionnement

[modifier | modifier le code]

L'arrivée d'Android 2.2 "Froyo" permet une optimisation des applications par du profilage de code et une recompilation fréquente de certains éléments du bytecode, afin de permettre de meilleures performances[2],[3].

Au contraire de Dalvik, ART utilise la compilation anticipée, en compilant l'application à son installation, sans besoin ultérieur d'interprétation. ART permet ainsi d'augmenter les performances, donc d'augmenter la durée de vie de la batterie. De plus, le ramasse-miettes et les allocations mémoires sont plus efficaces, avec plus d'options de débogage ou de profilage des applications[1],[4],[5].

Pour conserver la rétrocompatibilité, ART utilise des fichiers APK ou .dex, ainsi que du bytecode Dalvik. Cependant, les fichiers .odex sont remplacés par des ELF ( Executable and Linkable Format). Après l'installation, seule l'ELF est utilisée, les spécificités Dalvik étant ignorées ou supprimées. En contrepartie, la compilation dure plus longtemps, et l'application prend plus d'espace de stockage[1],[4],[5].

Android 4.4 "KitKat" propose une préversion d'ART, mais conserve Dalvik par défaut[6],[7]. Par contre pour la version Android 5.0 "Lollipop", Dalvik est entièrement remplacé par ART[8].

## Brevets

[modifier | modifier le code]

Aux États-Unis, un procès opposant Oracle à Google est en cours, car Dalvik enfreindrait des brevets d'Oracle. C'est une des raisons pour le changement vers ART, qui ne pose pas ce problème. En avril 2021, la Cour suprême des États-Unis donne finalement raison à Google contre Oracle. Il est notamment rappelé que Dalvik n'est plus utilisé depuis Android 5.0[9].

## Voir aussi

[modifier | modifier le code]

* Android SDK
* Historique des versions d'Android
* Machine virtuelle

## Références

[modifier | modifier le code]

1. ↑ a b et c Andrei Frumusanu, « A Closer Look at Android RunTime (ART) in Android L », AnandTech, 1er juillet 2014 (consulté le 5 juillet 2014)
2. ↑ Ben Cheng et Bill Buzbee, « A JIT Compiler for Android's Dalvik VM » [PDF], sur android-app-developer.co.uk, Google, mai 2010 (consulté le 18 mars 2015), p. 5–14
3. ↑ Phil Nickinson, « Google Android developer explains more about Dalvik and the JIT in Froyo », sur androidcentral.com, 26 mai 2010 (consulté le 8 juillet 2014)
4. ↑ a et b « Android Developers: ART and Dalvik », sur source.android.com, 9 mars 2015 (consulté le 18 mars 2015)
5. ↑ a et b « Android Developers: Configuring ART – How ART works », sur source.android.com, 9 mars 2015 (consulté le 18 mars 2015)
6. ↑ Sean Buckley, « 'ART' experiment in Android KitKat improves battery life and speeds up apps », Engadget, 6 novembre 2013 (consulté le 5 juillet 2014)
7. ↑ Daniel P., « Experimental Google ART runtime in Android KitKat can bring twice faster app executions », sur phonearena.com, 7 novembre 2013 (consulté le 5 juillet 2014)
8. ↑ Brad Linder, « What's new in Android 5.0 Lollipop? », sur liliputing.com, 15 octobre 2014 (consulté le 15 octobre 2014)
9. ↑ « API Java : victoire du fair use et de Google face à Oracle devant la Cour Suprême », sur nextinpact.com.

## Liens externes

[modifier | modifier le code]

* [vidéo] « Android Basics 101: Understanding ART, the Android Runtime », sur YouTube, XDA Developers, February 12, 2014
* [vidéo] « ART: Android's Runtime Evolved », sur YouTube, Google I/O 2014, by Anwar Ghuloum, Brian Carlstrom and Ian Rogers
* [vidéo] « A JIT Compiler for Android's Dalvik VM », sur YouTube, Google I/O 2010, by Ben Cheng and Bill Buzbee
* Delivering Highly Optimized Android Runtime (ART) and Web Runtime on Intel Architecture, Intel, August 4, 2015, by Haitao Feng and Jonathan Ding
* Android N for Developers: Profile-guided JIT/AOT compilation, Android Developers, describes ART changes in the upcoming Android N

v · m

Exécution informatique

Concepts généraux |

* Programme informatique
* Langage intermédiaire
* Chaîne de compilation
* Fichier exécutable
* Interprétation
* Environnement d'exécution

Types de code |

* Code source
* Code objet
* Bytecode
* Code machine
* Microcode
* Instruction-machine

Compilation |  |

* Compilation à la volée
* Compilation anticipée
* Préprocesseur
* Compilateur source à source

anticipée |

* GNU Compiler Collection (C et C++)
* LLVM
* LDL
* GHC (Haskell)
* Javac (Java)
* Phalanger (PHP)
* Free Pascal (Pascal)

à la volée |

* V8, SpiderMonkey (Javascript)
* PyPy (Python)

Machines virtuelles |

* ART
* CIL (C#, F#, Visual Basic .NET)
* Machine virtuelle Java
* HotSpot
* GraalVM
* HHVM (PHP)
* CPython (Python)

* Portail de l’informatique

*[1er]: premier
*[[PDF]]: Document au format Portable Document Format (PDF) d'Adobe
*[p.]: pages
*[[vidéo]]: Vidéo au format mpg, avi…
*[v]: Voir ce modèle.
*[m]: Modifier ce modèle. Merci de prévisualiser avant de sauvegarder.