Mit der kommenden Version 4.5 bzw. 5.0 wird ART die Standard-Runtime von Android und die bisherige Dalvik-Runtime in Rente schicken. Unser Artikel erklärt, wo die Unterschiede zwischen Dalvik und ART liegen, wie ART funktioniert und was sich durch ART verbessern wird.
ART ist die Abkürzung von Android Runtime. Dabei handelt es sich um ein spezielles Programm (genauer gesagt eine Systembibliothek), das die Platform-unabhängigen Android-Apps in Maschinencode umwandelt und somit direkt lauffähig macht. Diese Umwandlung passiert jedes Mal bei der Installation einer App, direkt auf Ihrem Smartphone oder Tablet. Als Compiler kommt der GCC (GNU Compiler) oder LLVM (Low Level Virtual Machine) zum Einsatz.
Wenn Dalvik und ART für Sie Fremdwörter sind, dann lesen Sie jetzt am besten zunächst den Kasten „Was ist Dalvik?“. Dieser Artikel erlkärt die wesentlichen Neuerungen von ART und wo die Vorteile der zukünftigen Standard-Runtime liegen.
Die Unterschiede zu Dalvik
Dalvik ist die Virtuelle Java Runtime von Android. Seit Android 2.2 besitzt diese Runtime die spezielle Fähigkeit, Quellcode on-the-fly bzw. „Just In Time“ in Maschinencode umzuwandeln. Dieses JIT-Feature bringt bei einigen Apps recht hohe Geschwindigkeitsvorteile, geht aber zulasten des Hauptspeichers, da jeder Prozess, der den JIT-Compiler benötigt rund 100 KByte RAM benötigt. Dabei wird jeweils nicht die komplette App übersetzt, sondern nur der Teilbereich, der gerade benötigt wird. Der Just-in-Time-Compiler galt 2010 als noch sehr fortschrittlich. Aktuell besitzen die meisten Android-Geräte aber so viel Power, dass es eigentlich unnötig ist, den Quellcode on-the-fly zu optimieren. ART verzichtet auf dieses Feature und passt die Apps bei der Installation dem Android-System (genauer gesagt der CPU-Architektur und den speziellen Fähigkeiten der CPU) an. Diesen Vorgang nennt man AOT (ahead of time) in Anspielung auf JIT (just in time). Dazu benötigt ART deutlich mehr Rechenleistung auf dem Gerät (es wird die komplette Anwendung übersetzt, nicht nur die benötigten Teile) und die einzelnen Apps benötigen tendenziell beim Start auch mehr RAM. Bei den heutigen Top-Geräten ist das aber alles kein Thema mehr.
Was ist Dalvik
Android ist ein Java-System mit einem Linux-Kernel als Basis. Android-Apps sind aber keine gewöhnlichen Linux-Programme (und deshalb auch nicht unter Ubuntu & Co. lauffähig) sondern ganz spezielle Java-Programme. Speziell sind diese Apps deshalb, weil Google bei der Entwicklung von Android nicht die Java Runtime Engine von Sun (Stack-basiert) benutzen wollte und deshalb eine eigene Java-Runtime als Registermaschine programmierte, die den Namen Dalvik — benannt nach einem Urlaubsort in Island — bekommen hat. Java-Quellode lässt sich mit dem Programm dx in ausführbaren Dalvik-Code umwandeln. Android startet dann für jede App eine eigene virtuelle Dalvik-Maschine. Einen detaillierten Artikel zu Dalvik finden Sie im Android-User-Archiv.
Der große Vorteil von ART
ART bringt zwei große Vorteile mit sich: Dadurch, dass die JIT-Funktion wegfällt und quasi komplette Apps bei der Installation in nativen Maschinencode übersetzt werden, arbeiten Apps deutlich flotter. Mit ART sollten deshalb Mikrohänger, wie sie bis heute selbst auf den schnellsten Android-Geräten noch vorkommen, der Vergangenheit angehören. Auch iOS-Apps führen stets nativen Code aus. Eine Kompilierung auf dem Gerät selbst ist bei Apple-Produkten überflüssig, da es keine iPhones/iPads mit unterschiedlicher CPU-Architektur gibt: alle Apps sind auf die handvoll Apple-Prozessoren (ARM) optimiert, die es gibt.
Unter Android gibt es eine deutlich größere Gerätevielfalt. Die neue Android Runtime bringt Android-Apps in Zukunft dank Maschinencode direkt auf die CPU/GPU ohne die virtuelle Java-Maschine dazwischenzuschalten. Als Nachteil könnte man anbringen, dass eine auf die ARM-Architektur optimierte App anschließend auf einem Android-Gerät mit Intel- oder MIPS-CPU dann nicht lauffähig ist. Das war aber de facto auch bislang nicht wirklich der Fakt, da kaum jedmand ODEX-Dateien von einem Gerät auf ein anderes kopiert, sondern üblicherweise die APK-Dateien. Diese werden aber von ART bei der Installation wiederum auf das neue System angepasst (mal abgesehen von Apps, die mit dem NDK programmiert wurden). Der Wegfall der virtuellen Java-Maschine ,,Dalvik„ bringt also keine wirklichen Nachteile mit sich.
Art (Android Runtime) | Dalvik (Virtuelle Java-Runtime) | |
---|---|---|
Vorteile | Schneller Code, ruckelfrei | Geringer Speicherverbrauch, portable Apps |
Nachteile | Höherer Speicherverbrauch, kompilierter Code ist nicht mehr portabel | zusätzlicher CPU-Verbrauch durch JIT, langsam, da interpretierter Code |
Kompiler | Bei der Installation (AOT) | Bei der Ausführung (JIT) |
CPU-Verbrauch | Bei der Installation hoch | Bei der Ausführung hoch |
Dateiformat | OAT | ODEX |
Ist ART wirklich schneller?
Gefühlt reagiert Android mit ART als Runtime in jedem Fall schneller. Androidpolice.com hat vor rund fünf Monaten auch ein paar Benchmarks zum Vergleich durchgeführt. Da seither recht viel Zeit vergangen ist, haben wir einige der Benchmarks wiederholt und mit dem HTC One M8 und dem Nexus 5 verglichen. Aus den Resultaten lassen sich aber keine Schlussfolgerungen ableiten. So arbeitet zwar das Nexus 5 mit ART beim Linpack-Benchmark etwas schneller als mit Dalvik (162 MFLOPS Single Thread, 403 MFLOPS Multi Thread mit Art), beim HTC One M8 ebenfalls mit Android 4.4 zeigt sich aber genau das Gegenteil: Hier erreicht das Handy mit Dalvik die deutlich besseren Werte: 260 MFLOPS Single Thread, 419 MFLOPS Multi Thread. Ein zweiter Test mit dem HTML-5-Benchmark von Vellamo zeigte beim HTC One keinerlei Unterschiede zwischen ART und Dalvik (je 1725 Zähler). Das hatten wir auch so erwartet, da der HTML-5-Benchmark von Vellamo ja die Browser-Performance misst, nicht die von Android. Seltsamerweise verringerte sich aber beim Nexus 5 die Performance bei der Umstellung von Dalvik auf ART von 1694 Zählern (mit Dalvik) auf 1615 Punkte (mit ART).
Linpack-Benchmarks (größer ist besser) | ||
Dalvik | Art | |
---|---|---|
Nexus 5 Single Thread | 122 MFLOPS | 162 MFLOPS |
Nexus 5 Multi Thread | 347 MFLOPS | 403 MFLOPS |
HTC One M8 Single Thread | 260 MFLOPS | 160 MFLOPS |
HTC One M8 Multi Thread | 419 MFLOPS | 379 MFLOPS |
Diese Zahlen sagen also nicht wirklich etwas über die Performance-Vorteile von ART gegenüber Dalvik aus, sondern lassen höchstens den Rückschluss zu, dass die meisten Benchmarks die Unterschiede nicht wirklich messen können.
Falls Sie ART selbst testen möchten, benötigen Sie dazu lediglich ein Android-Gerät mit Version 4.4 „KitKat“. Öffnen Sie die Entwicklereinstellungen (falls nicht vorhanden, über siebenfaches Antippen der Buildnummer aktivieren) und wählen Sie hier einfach den Eintrag „Laufzeit festlegen“ aus. Nach dem Wechsel bootet das System neu und kompiliert anschließend sämtliche Apps. Dieser Vorgang dauert je nach Anzahl der vorinstallierten Apps zwischen 10 und 20 Minuten. Der Switch zurück zu Dalvik geht deutlich flotter: Hier startet das System in den gewohnten 1-2 Minuten, schließlich müssen keine Apps neu kompiliert werden. ART einzusetzen, bereitet Mitte April 2014 keine Probleme mehr. Die meisten Entwickler haben ihre Apps seit der Veröffentlichung von Android 4.4 „KitKat“ so angepasst, dass diese auch mit ART fehlerfrei arbeiten. Einem Wechsel steht somit nichts mehr im Wege.

Was ändert sich mit Android 4.5/5.0
ART wird bereits in der kommenden Android-Version (4.5 oder 5.0) als Standard zum Einsatz kommen. Das Gute an dieser Änderung: Für den Android-Anwender ändert sich nichts am gewohnten Umgang mit Apps, aber die meisten Android-Geräte werden mit ART deutlich flinker reagieren und ziemlich sicher wirkt sich ART auch positiv auf die Akkulaufzeit aus. Für den Entwickler ändert sich ebenfalls praktisch nichts: er kann weiterhin seine Apps in Java oder mit dem Android NDK schreiben, und ART kümmert sich dann bei der Installation einer App darum, dass diese auf dem System möglichst gut funktioniert. Einzig beim Testen von Apps muss man mit leicht längeren Installationszeiten rechnen, da das Android-System die APK-Datei zunächst kompilieren muss.
Wirklich umstellen müssen sich lediglich die ROM-Köche: Das einfache Ändern von Deodex-Dateien auf einem ROM, um mal kurz etwas auszuprobieren, ist mit ART und OAT-Dateien nicht mehr möglich. Bei jeder Änderung muss der Code also neu kompiliert werden.
Zusammenfassung
ART steht für Android Runtime und wird ab der kommenden Android-Version die Standard-Runtime von Android sein. ART ersetzt die bisherige virtuelle Java-Maschine Dalvik durch einen Compiler (GCC oder LLVM), der Apps bei der Installation auf die jeweilige Hardware-Architektur optimiert. ART sorgt dafür, dass Apps ohne Mikroruckler arbeiten und verbessert die Akkulaufzeit von Android. Dalvik ist definitiv Geschichte.
Quellen:
Detaillierter Artikel zu ART: https://www.infinum.co/the-capsized-eight/articles/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat
Bessere Akkulaufzeit durch ART: https://www.extremetech.com/computing/170677-android-art-google-finally-moves-to-replace-dalvik-to-boost-performance-and-battery-life
Dalvik-Grundlagen: https://www.android-user.de/darum-laufen-android-applikationen-immer-besser/
Androidpolice-Benchmarks: https://www.androidpolice.com/2013/11/12/meet-art-part-2-benchmarks-performance-wont-blow-away-today-will-get-better/
Dalvik bekommt JIT-Compiler: https://android-developers.blogspot.com/2010/05/dalvik-jit.html
Benchmarks Art vs. Dalvik: https://docs.google.com/spreadsheet/ccc?key=0AnE-DX9Fbr9KdFZtRlhQaWxmVG5XdDR3TFR1Q3JONnc&usp=sharing#gid=0
Art Runtime erklärt: https://sourcex.wordpress.com/2013/11/12/art-runtime-for-kitkat-4-4-explained/
LLVM Compiler: https://llvm.org/
Dalvik-Quellcode: https://code.google.com/p/dalvik/
Art-Quellcode: https://android.googlesource.com/platform/art/