Dalvik VM: Unterschied zwischen den Versionen

Aus Android Wiki
Keine Bearbeitungszusammenfassung
(Überarbeitet; Abschnitt "Funktionsweise")
Zeile 1: Zeile 1:
Die '''Dalvik Virtual Machine''' ist eine von Google entwickelte virtuelle Registermaschine<ref>Wikipediaartikel zu Dalvik VM, http://de.wikipedia.org/wiki/Dalvik_Virtual_Machine</ref>.
Die '''Dalvik Virtual Machine''' ist eine von Google entwickelte virtuelle Registermaschine<ref>Wikipediaartikel zu Dalvik VM, http://de.wikipedia.org/wiki/Dalvik_Virtual_Machine</ref>. Einfach ausgedrückt ist sie eine Zwischenschicht zwischen einer (nicht-nativen) [[App]] und dem Betriebssystem bzw. der Hardware.


== Was ist die Dalvik VM ==
== Funktionsweise ==
Die Dalvik VM ist eine von Google für Android entwickelte virtuelle Registermaschine und ist Hauptbestandteil des Androidsystems.
Die Funktionsweise ist sehr ähnlich zu einer Java-VM (JVM), die man z. B. von Java-Applets im Browser, Desktopanwendungen für Java oder Handyspielen älterer Generationen (MIDlets oder J2ME-Apps) kennt.


=== Die Aufgabe von Dalvik VM ===
=== Sandbox ===
Die Dalvik VM hat die Aufgabe Anwendungen für Android aus der Java-Programmiersprache auszuführen.
Die Dalvik VM hat die Aufgabe [[App|Anwendungen]] für Android mit Dalvik-Bytecode, die meist in der Programmiersprache Java entwickelt werden, auszuführen. Dabei läuft die App in einer sogenannten Sandbox, einer isolierten Umgebung, die verhindert, dass das Programm direkte Hardware- oder Betriebssystemoperationen ausführen kann, z. B. Telefon ausschalten, Speicher oder andere Anwendungen löschen/manipulieren oder sogar das Dateisystem formatieren. Da ohne den Zugriff auf die Hardware (Display, Speicher, etc.) aber keine App funktionieren würde, stellt das Betriebssystem bzw. die VM  wichtige Funktionen über die Android-APIs zur Verfügung (siehe Abschnitt [[#APIs|APIs]]).


=== Berechtigungen ===
Werden dennoch solche ''Low-Level''-Operationen oder andere sicherheitskritische Operationen benötigt, ist dies über bestimmte Berechtigungen möglich, über die der Benutzer bei der Installation informiert wird. Dazu gehören:
* Zugriff auf die Kamera
* Zugriff auf das ''[[Radio]]'' (Bluetooth, Telefon, Internet etc.)
* Zugriff auf Kontakte, die auf dem Gerät gespeichert sind
* ...


=== APIs ===
Sogenannte APIs (Application Programming Interfaces) stellen dem Programmierer fest definierte ''Methoden'' (so nennt man in Java Funktionsaufrufe), die die App benötigt, zur Verfügung.
Da diese APIs meist mit jeder Android-Version erweitert und verändert werden (genau genommen mit jedem API-Level), kann es vorkommen, dass Apps, die Methoden einer neueren Android-Version benutzen, mit älteren Versionen nicht funktionieren. Zum Beispiel können Bluetooth-Funktionen erst ab Android 2.0 (API Level 5) verwendet werden;<ref>http://developer.android.com/reference/android/bluetooth/package-summary.html, Bluetooth API-Dokumentation</ref> NFC (Near Field Communication) gibt es erst seit Android 2.3.3 (API Level 10).<ref>http://developer.android.com/sdk/api_diff/10/changes.html, API Changes bei Level 10</ref>


== Einzelnachweis ==
== Einzelnachweis ==

Version vom 3. Dezember 2011, 20:58 Uhr

Die Dalvik Virtual Machine ist eine von Google entwickelte virtuelle Registermaschine[1]. Einfach ausgedrückt ist sie eine Zwischenschicht zwischen einer (nicht-nativen) App und dem Betriebssystem bzw. der Hardware.

Funktionsweise

Die Funktionsweise ist sehr ähnlich zu einer Java-VM (JVM), die man z. B. von Java-Applets im Browser, Desktopanwendungen für Java oder Handyspielen älterer Generationen (MIDlets oder J2ME-Apps) kennt.

Sandbox

Die Dalvik VM hat die Aufgabe Anwendungen für Android mit Dalvik-Bytecode, die meist in der Programmiersprache Java entwickelt werden, auszuführen. Dabei läuft die App in einer sogenannten Sandbox, einer isolierten Umgebung, die verhindert, dass das Programm direkte Hardware- oder Betriebssystemoperationen ausführen kann, z. B. Telefon ausschalten, Speicher oder andere Anwendungen löschen/manipulieren oder sogar das Dateisystem formatieren. Da ohne den Zugriff auf die Hardware (Display, Speicher, etc.) aber keine App funktionieren würde, stellt das Betriebssystem bzw. die VM wichtige Funktionen über die Android-APIs zur Verfügung (siehe Abschnitt APIs).

Berechtigungen

Werden dennoch solche Low-Level-Operationen oder andere sicherheitskritische Operationen benötigt, ist dies über bestimmte Berechtigungen möglich, über die der Benutzer bei der Installation informiert wird. Dazu gehören:

  • Zugriff auf die Kamera
  • Zugriff auf das Radio (Bluetooth, Telefon, Internet etc.)
  • Zugriff auf Kontakte, die auf dem Gerät gespeichert sind
  • ...

APIs

Sogenannte APIs (Application Programming Interfaces) stellen dem Programmierer fest definierte Methoden (so nennt man in Java Funktionsaufrufe), die die App benötigt, zur Verfügung.

Da diese APIs meist mit jeder Android-Version erweitert und verändert werden (genau genommen mit jedem API-Level), kann es vorkommen, dass Apps, die Methoden einer neueren Android-Version benutzen, mit älteren Versionen nicht funktionieren. Zum Beispiel können Bluetooth-Funktionen erst ab Android 2.0 (API Level 5) verwendet werden;[2] NFC (Near Field Communication) gibt es erst seit Android 2.3.3 (API Level 10).[3]

Einzelnachweis