Android-Runtime und Dalvik

Android Entwicklung: Grundlagen Logo
Was versteht man unter ART und Dalvik?

Darunter versteht man zwei unterschiedliche Java-Laufzeitumgebungen für Android, wobei Dalvik bis „Android KitKat (4.4)“ zum Einsatz kam und ab „Android Lollipop (5.0)“ dann die Android-Runtime (ART). Es gab allerdings für Android-Entwickler bereits ab „KitKat“ eine experimentelle ART-Version.

 

Info: Android-Apps werden zunächst in Zwischencode (Dex-Bytecode) übersetzt, der im Gegensatz zu nativem Code portabel und unabhängig von der Hardware (z. B. ARM-Prozessor) ist. Um eine App auf einem Gerät zum Laufen zu bringen, muss dieser Zwischencode noch in Maschinencode kompiliert werden. Die Vermittlungsschicht zwischen Betriebssystem (z. B. Android) und Software (z. B. Android-App) wird Laufzeitumgebung genannt und enthält unter anderem eine virtuelle Maschine. Mehr Informationen zur Kompilierung unter Android findest du in unserem Artikel "App-Erstellungsprozess in Android".

 

Unter der KitKat-Version 4.4 war bzw. ist es möglich zwischen Dalvik und ART zu wechseln (siehe Screenshot). Diese Möglichkeit war insbesondere für App-Entwickler interessant, die ihre Apps mit ART testen wollten.

Android KitKat: Select Runtime

 

Was genau ist der Unterschied?

Dalvik: Diese Laufzeitumgebung basiert auf dem Konzept „Just-in-Time-Kompilierung (JIT)„. Das bedeutet, dass jedes Mal, wenn du eine App ausführst, nur der zur Ausführung erforderliche Code-Teil in Maschinensprache übersetzt (kompiliert) wird und nicht der gesamte Code der App. Wenn du dann innerhalb der App etwas tust, werden weitere Code-Teile übersetzt und zwischengespeichert. Diese Art der Kompilierung spart natürlich Arbeitsspeicher, da immer nur Teile des App-Codes übersetzt werden.

 

ART: Diese Laufzeitumgebung basiert auf dem „Ahead-of-Time-Konzept (AOT)„. Darunter versteht man die einmalige Kompilierung des gesamten App-Codes in Maschinencode während der Installation und vor Ausführung der App. Wenn du eine App in der ART-Umgebung ausführst, hat dies gleich mehrere Vorteile, da ja der Code nicht zur Laufzeit kompiliert werden muss:

  • Die App-Ausführung wird beschleunigt
  • Der Prozessor wird entlastet
  • Der Akku wird geschont

 

Warum wurde nicht von Beginn an ART eingesetzt?

Die Vorteile von ART hören sich ziemlich cool an und da frägt man sich natürlich, warum Google nicht schon früher auf ART gesetzt hat. Das liegt daran, dass ART auch einige Nachteile hat, die sich besonders auf ältere und leistungsschwache Geräte auswirken:

  • Der Maschinencode beansprucht mehr Speicherplatz (z. B. Speicherkarte, interner Speicher) als der Dalvik-Bytecode
  • Die Installation dauert länger, da ja währenddessen kompiliert wird
  • Es wird zur Laufzeit mehr Arbeitsspeicher benötigt

Als Android auf den Markt kam, war die Ausstattung der damaligen Smartphones noch recht bescheiden und so war z. B. die Kapazität des Arbeitsspeichers schlicht zu wenig für ART und Google entschied sich zu dieser Zeit lieber für Dalvik. Heutzutage sind die Geräte aber wesentlich besser ausgestattet und deshalb wird ART von Google heut bevorzugt.