© Excellent backgrounds/Shutterstock.com
ART vs. Dalvik VM

The Art of Runtime Development


Bereits zur Google I/O im Juni 2014 stellte Google eine neue Runtime vor [1]: die ART (kurz für Android Runtime). Diese wird bereits mit Android KitKat ausgeliefert. Die Standard-Runtime ist dort allerdings weiterhin die Dalvik VM. Diese kann im Einstellungsmenü aber zugunsten von ART deaktiviert werden. Mit Android 5 (Lollipop) wird die Dalvik VM nun gar nicht mehr ausgeliefert und ist komplett durch ART ersetzt worden. Worin liegt aber der Unterschied von ART zu Dalvik, und was bedeutet das für den Entwickler? Diese Kolumne erläutert die Änderungen und geht auf deren Auswirkungen ein.

Vor einigen Monaten berichteten wir bereits über das Projekt Volta, mit dem es Google gelungen ist, die Batterielaufzeit für Android-betriebene Devices deutlich zu erhöhen. Im Rahmen der damaligen Kolumne erwähnten wir auch die neue Virtual Machine ART, die in Android 5 Dalvik ersetzt. Sie ist zwar nicht Teil von Projekt Volta, ihr kann aber auch ein nicht unerheblicher Anteil an der Erhöhung der Batterielaufzeit zugerechnet werden, weil sie z. B. Garbage Collection deutlich performanter gestaltet. Dadurch wird nicht nur Zeit gewonnen, sondern auch Akku geschont.

Woran liegt das aber genau, und welche Folgen hat die Änderung der Runtime für Entwickler? Diese Kolumne gibt einen kleinen Einblick in die Unterschiede zur bisherigen Dalvik VM.

Ahead-of-Time statt Just-in-Time

Android-Apps werden (größtenteils jedenfalls) in Java geschrieben. Java ist eine interpretierte Sprache, d. h. ein Java-Programm wird vom Compiler nicht direkt in Maschinensprache übersetzt, sondern in eine maschinenunabhängige Zwischensprache, den Bytecode. In Android wird das verwendete Bytecodeformat .dex (Dalvik Executable) genannt. Die entstehenden .dex-Dateien werden zusammen mit den Ressourcen und ggf. dem nativen Code in ein Android Application Pa­ckage (APK) zusammengepackt. Der .dex-Code wird dann auf dem Gerät vor der Ausführung in den tatsächlichen Maschinencode übersetzt. Auf diese Weise ist es auch möglich, dass Android unterschiedliche Zielarchitekturen unterstützt.

Was ändert sich daran nun mit ART? Bis zur Installation bleibt alles beim Alten. Android-Programme werden weiterhin in das .dex-Format kompiliert und in APKs verpackt. Das hat zur Folge, dass auch alle alten Android-Programme (APKs) ohne Änderung auf ART laufen, solange sie keinen nativen Code enthalten, sondern zu 100 Prozent in Java geschrieben sind.

Die entscheidende Neuerung passiert erst auf dem Gerät. Bei Dalvik werden die...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang