Definition „Dalvik Virtual Machine“ Was ist die DalvikVM?

Autor / Redakteur: Egoloizois / Stephan Augsten

Die DalvikVM ist eine von Google entwickelte virtuelle Maschine für Android. Ihre Aufgabe als Java Virtual Machine ist es, eine Java-basierte App aus Bytecode in Echtzeit in maschinenlesbaren Code zu übersetzen.

Firmen zum Thema

Bis zur Android-Version 4.4 war die DalvikVM die Standard-Laufzeitumgebung des mobilen Betriebssystems.
Bis zur Android-Version 4.4 war die DalvikVM die Standard-Laufzeitumgebung des mobilen Betriebssystems.
(Bild: sachin28new / Pixabay )

DalvikVM: Überblick und Allgemeines zur virtuellen Maschine

Verantwortlich für die Entwicklung der DalvikVM war der Google-Mitarbeiter Dan Bornstein, der die virtuelle Maschine nach der isländischen Stadt Dalvík benannte. Oft ist zu lesen, dass Bornsteins Vorfahren aus dieser Stadt stammten, doch ist dies eine Urban Legend. Er wählte er den Namen nur aus Liebe zu Dalvík als Urlaubsort.

DalvikVM ist eine Java Virtual Machine für mobile Geräte, die einen Kernbestandteil der Android-Plattform des Unternehmens Google darstellt. Ein Unterscheidungsmerkmal von der Mehrheit anderer Java Virtual Machines ist Dalviks Arbeitsweise als Registriermaschine. Die meisten anderen JVMs basieren auf sogenannten Kellerautomaten. Zudem verfügt DalvikVM über einen eigenen Bytecode.

Grundsätzlich ist die Virtual Machine so entwickelt worden, dass sie verschiedene Instanzen gleichermaßen effizient auf einem Gerät laufen lassen kann. Ebenso wie moderne Prozessoren kann die DalvikVM Registermaschinencode verarbeiten. Daher agiert die Virtual Machine so schnell wie ressourcenschonend. Dies ist auch erforderlich, da beim Android Betriebssystem jedes Programm in einem eigenen Prozess läuft und dabei mit einer eigenen DalvikVM arbeitet beziehungsweise eine solche erzeugt.

Als alternative Laufzeit-Umgebung bietet Android seit der Version 4.4 (KitKat) eine alternative Registermaschine in Form der ART (Android Runtime). Die DalvikVM setzt auf Just-in-time-Kompilierung.

Funktionsweise und Komponenten

DalvikVM lässt sich als Zwischenschritt verstehen, der zwischen dem Quellcode und dem prozessual ausführbaren Code steht. Im Rahmen der Just-in-time-Kompilierung kommt es zur Übersetzung des Quellcodes zur Laufzeit.

Zunächst führt DalvikVM die für JVM übersetzte Software nach der Konvertierung in seinem eigenen Bytecode aus. Eine wichtige Rolle spielt hierbei das Programm dx. Dieses ist ein wesentlicher Bestandteil der Android-Entwicklungsumgebung. Das Programm dx ist für die Konvertierung regulärer .class-Dateien (Java-Binärdateien) in das Format .dex (Dalvik Executable Format) verantwortlich. Hierbei werden mehrere .class-Dateien zu einer .dex-Datei zusammengefasst.

Weiterhin werden hierbei Optimierungen im Hinblick auf den Speicherbedarf vorgenommen. Zur Ausführung jeder App kommt es zum Start der Dateien im .dex-Format. Bevor Dalvik die App anschließend für den Prozessor übersetzt, kommt es zur Übersetzung des Quellcodes in Bytecode. Diesen übersetzt die DalvikVM anschließend in maschinenlesbaren Code. Anschließend fürht der Prozessor diesen Code aus.

Sandbox: eigene Instanzen für alle Prozesse

Ein wesentlicher Bestandteil in der Funktionsweise der Dalvik Virtual Machine ist die Sandbox-Technologie. Die Anwendung läuft hierbei in einer isolierten Umgebung, einer so genannten Sandbox. Dies bedeutet in der Praxis, dass eine eigene Instanz für jeden Prozess vorliegt. Hierdurch ist gewährleistet, dass jede Instanz jeweils von anderen Instanzen unabhängig ist. Eine Instanz kann die anderen Instanzen auch nicht beeinflussen.

Durch die isolierte Umgebung wird gleichermaßen verhindert, dass das Programm DalvikVM unmittelbare Operationen am Betriebssystem oder der Hardware ausführen kann. Ein versehentliches Ausschalten des Geräts oder Zugriff und Manipulation von Speicher oder Anwendungen ist damit ausgeschlossen.

Dennoch benötigt jede App einen gewissen Zugriff auf die Hardware eines Geräts, beispielsweise auf den Speicher oder das Display. Da keine Anwendung ohne solche Zugriffsberechtigungen funktionieren würde, stellt die Virtual Machine über spezielle Schnittstellen (APIs) einige Funktionen bereit.

APIs der DalvikVM

Über APIs (Application Programming Interfaces) erhält der Programmierer konkret festgelegte Funktionsaufrufe beziehungsweise Methoden, die von der App benötigt werden könnten. Durch und über die APIs ist gewährleistet, dass eine Anwendung Zugriffsberechtigung auf unterschiedliche Ressourcen des Betriebssystem erhalten kann.

Mit jeder neuen Version von Android beziehungsweise mit jedem neuen API-Level kommt es zur Erweiterung dieser APIs oder zu deren Veränderung. Das jeweilige API-Level gibt im Groben Aufschluss darüber, auf welchem aktuellen Softwarestand sich das Android-Betriebssystem gerade befindet. Daraus lässt sich die Kompatibilität mit älteren Versionen ableiten.

Aufgrund dieser Anpassungen kann es passieren, dass bestimmte Apps mit älteren Versionen nicht mehr nutzbar sind. Manche Apps nutzen die Methoden einer neueren Android-Version und sind gegebenenfalls mit älteren Versionen nicht mehr kompatibel. Beispielsweise sind Bluetooth-Funktionen erst ab dem API Level 5 (ab Android 2.0) nutzbar.

Berechtigungen

Ein wichtiger Funktionsbereich ist das Management der Berechtigungen. Diese sind direkt mit den zuvor genannten API-Operationen verbunden. Nutzer können grundsätzlich entscheiden, ob sie in Anbetracht der erforderlichen Berechtigungen die App tatsächlich installieren möchten.

Bestimmte API-Operationen können Dateien auslesen (beispielsweise Telefonbucheinträge oder Browserverläufe) oder beeinflussen die Funktionsfähigkeit. Andere gehen zu Lasten der Akkuleistung (beispielsweise Bluetooth oder Kamera). Ebenso gibt es Operationen, die für den Nutzer mit Kosten verbunden sind (beispielsweise die Online-Nutzung). Daher lassen sich solche Operationen nur über Berechtigungen erreichen. Bei Installation wird der Nutzer über diese Berechtigungen informiert.

(ID:47064000)