Android ist eine Plattform für mobile Geräte wie Smartphones und Mobiltelefone, die von der Open Handset Alliance entwickelt wird und Open-Source werden soll. Sie basiert auf dem Linux-Betriebssystem und verwendet die Programmiersprache Java.
Inhaltsverzeichnis |
Am 5. November 2007 teilte der Konzern Google mit, dass er und 33 andere Mitglieder der Open Handset Alliance ein Handy-Betriebssystem namens Android entwickeln. Einige Teile von Android sind Open Source und werden unter der Apache-Lizenz 2.0 veröffentlicht.
Große Teile der Quelltexte sind noch unveröffentlicht. Google hat aber versprochen, diese auch unter einer Open-Source-Lizenz der Allgemeinheit zur Verfügung zu stellen. Erste Geräte mit dem Betriebssystem sollen in der zweiten Jahreshälfte 2008 erhältlich sein. Das entsprechende SDK für Android-Applikationen ist bereits verfügbar. Wesentlicher Bestandteil von Android wird ein Web-Browser sein.
Die Architektur von Android baut auf dem Linux-Kernel 2.6 auf. Er ist für Speicherverwaltung, Prozessverwaltung und die Netzwerkkommunikation zuständig. Außerdem bildet er die Hardwareabstraktionsschicht für den Rest der Software und stellt die Gerätetreiber für das System.
Der zweite wichtige Baustein ist die auf der von Sun Microsystems entwickelten Java-Technologie basierende virtuelle Maschine Dalvik und der dazugehörigen Android Java Klassenbibliotheken.
Die Android API des am 12. November 2007 veröffentlichen SDK (m3-rc20a) besteht aus 1448 Javaklassen und 394 Schnittstellen. Dabei entfallen auf Android spezifische Referenztypen 511 Klassen und 128 Schnittstellen. In den Paketen java und javax befinden sich 612 bzw. 145 Klassen und 150 bzw. 51 Schnittstellen. Zahlenmäßig nennenswert ist auch der Beitrag des Apache Commons Projekts, 128 Klassen und 20 Schnittstellen. Der verbleibende Rest nicht von Google stammender Klassenbibliotheken verteilt sich auf die Pakete org.bluez, org.json, org.w3c.dom und org.xml.sax.
Klassenbibliothek | Beschreibung | Anzahl der Klassen | Anzahl der Schnittstellen | Urheber | Open-Source Lizenz |
---|---|---|---|---|---|
android | plattformspezifisch | 500 | 126 | Google Inc. | geplant |
com.google.android | plattformspezifisch | 11 | 2 | Google Inc. | geplant |
java | Standardklassen, Teil des JDK | 612 | 150 | Sun Microsystems | ja |
javax | Standardklassen, Teil des JDK | 145 | 51 | Sun Microsystems | ja |
junit | Test-Framework | 12 | 3 | JUnit-Project | ja |
org.apache.commons | allgemein verwendbare Funktionen | 128 | 20 | Apache Commons-Projekt | ja |
org.bluez | Bluetooth-Unterstützung | 15 | 6 | BlueZ-Projekt (ursprünglich entwickelt von Qualcomm) | ja |
org.json | Klassen zur Verarbeitung von Daten im JSON-Format | 5 | 0 | Douglas Crockford | ja |
org.w3c.dom | Klassen zur Manipulation des DOM | 1 | 17 | W3C | ja |
org.xml.sax | Klassen zum Einlesen von XML-Daten | 19 | 19 | ursprünglich von David Megginson, siehe SAX | ja |
Die Runtime von Android basiert auf der Dalvik Virtual Machine, eine von Google Mitarbeiter Dan Bornstein entwickelte virtuelle Maschine. Die Dalvik VM ähnelt funktional der normalen Java VM, beide führen Byte Code aus. Einer der wesentlichen Unterschiede ist die zu Grunde liegende virtuelle Prozessorarchitektur. Die Java VM basiert auf einer Stapelmaschine. Dalvik hingegen ist eine Registermaschine. Durch die sich unterscheidende Prozessorarchitektur sind die Kompilate normaler Java-Compiler nicht für die Dalvik VM geeignet, dennoch konnte Google auf die bestehenden Java-Entwicklungswerkzeuge zurückgreifen.
Die meisten modernen Compiler generieren als Zwischencode Stapelmaschinencode. Dieser Zwischencode erlaubt es von der Prozessorarchitektur der Zielplatform zu abstrahieren, der programmiersprachliche Teil wird von der konkreten Prozessorarchitektur getrennt. Da das Prozessormodel der Stapelmaschine besonders einfach ist, wird es üblicherweise für die Übersetzerzwischensprache verwendet. Die meisten realen Prozessoren sind heute aber Registermaschinen, so zum Beispiel die 80x86- und die ARM-Prozessoren. Registerarchitekturen sind oft effizienter, da bei ihr die CPU über eigene besonders schnell zugreifbare Speicherzellen, die Register, verfügt. Dalvik nimmt die Umwandlung des Stapelmaschinecodes in die Registermaschinencodes schon zur Übersetzungszeit vorweg. Hierzu wird das Werkzeug dx verwendet, „dx“ steht für Dalvik Cross-Assembler.
Anwendungen für die Androidplattform werden ausnahmslos in Java geschrieben, jedoch greifen diese in performance-kritischen Bereichen auf zahlreiche in C/C++ geschriebene, native Bibliotheken zu. Darunter befinden sich neben Codecs für die Medienwiedergabe auch ein Webbrowser auf der Basis von WebKit, eine Datenbank (SQLite) und eine auf OpenGL basierende 3D-Grafikbibliothek.
Um eigene Programme für Android zu entwickeln, benötigt man ein aktuelles Java-SDK und zusätzlich das Android-SDK. Zuerst wird der in Java geschriebene Quelltext mit einem normalen Java-Compiler übersetzt und dann von einem Cross-Assembler für die Dalvik VM angepasst. Aus diesem Grund können Programme prinzipiell mit jeder Java-Entwicklungsumgebung erstellt werden.
Das Framework setzt auf eine starke Modularität. So sind alle Komponenten des Systems generell gleichberechtigt (ausgenommen die Virtuelle Maschine und das unterliegende Kernsystem) und können jederzeit ausgetauscht werden. Es ist also z.B. möglich, eine eigene Anwendung zum Erstellen von Kurznachrichten oder zum Wählen von Rufnummern zu erstellen und die bisherige Anwendung damit zu ersetzen.
Obwohl das Projekt noch sehr jung ist, gibt es bereits über 50 Anwendungen. Im SDK werden zusätzlich ein Webbrowser, eine Kartenanwendung (Google Maps), ein Programm zum Verwalten von Kontakten sowie ein Satz von API-Demoanwendungen mitgeliefert.
Netzbetreiber | Chip-Hersteller | Handy-Hersteller | Software-Hersteller |
---|---|---|---|
Embedded Linux – Android | Familiar Linux | GPE Palmtop Environment | Maemo | Mobilinux | Openmoko | OpenZaurus | OPIE | Poky Linux | Qtopia | Access Linux Platform