Start Im Test ART: Das bringt die neue Android-Runtime

ART: Das bringt die neue Android-Runtime

Mit der kommenden Version 4.5 bzw. 5.0 wird ART die Standard-Runtime von Android und das bisherige Dalvik 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 Plattform-unabhängigen Android-Apps in Maschinencode umwandelt und somit direkt lauffähig macht. Dieser 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 erklärt die wesentlichen Neuerungen von ART und wo die Vorteile der neuen Runtime liegen.

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.

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.

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 dazwischen zu schalten. 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 jemand 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.

Unterschiede auf einen Blick

  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 die Zahlen 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 selbst. 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).

Benchmarks

  Dalvik Art
Linpack Nexus 5 Single Thread 122 MFLOP 162 MFLOP
Linpack Nexus 5 Multi Thread 347 MFLOP 403 MFLOP
Linpack HTC One M8 Single Thread 260 MFLOP 160 MFLOP
Linpack HTC One M8 Multi Thread 419 MFLOP 379 MFLOP

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 aktuell kaum noch Probleme. Die meisten Entwickler haben ihre Apps angepasst, sodass einem Wechseln nichts mehr im Wege steht.

Abbildung 1: In den Entwickleroptionen von Android 4.4 wechseln Sie per Fingertip zwischen den beiden Laufzeitumgebungen.
Abbildung 1: In den Entwickleroptionen von Android 4.4 wechseln Sie per Fingertip zwischen den beiden Laufzeitumgebungen.

Abbildung 2: Durch den Wechsel der entsprechenden Library müssen sämtliche Apps neu kompiliert werden.
Abbildung 2: Durch den Wechsel der entsprechenden Library müssen sämtliche Apps neu kompiliert werden.

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 [8]. Das Gute an dieser Neuerung: 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 in einer ROM, um mal kurz etwas auszuprobieren, ist mit ART und OAT-Dateien nicht mehr möglich. Bei jeder Änderung muss der Code neu kompiliert werden.

Fazit

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.

Kommentiere den Artikel

Please enter your comment!
Please enter your name here