Betriebssysteme Taugt Android für Embedded- Anwendungen?

Mit einer schicken Smartphone-Bedienoberfläche würde mancher Gerätehersteller sein Gerät gerne aufpeppen, auch wenn es kein Smartphone ist. Da scheint die logische Konsequenz zu sein, Android einzusetzen, das ein Linux-Fundament nutzt. Doch zwischen Linux und Android bestehen wichtige Unterschiede, sowohl technischer wie marktpolitischer Art, die man kennen sollte.

Auf Messen und bei Produktdemonstrationen tauchen immer mehr industrielle Bedienterminals mit Touch-Display auf (Bild 1). Die Bedienkonzepte dieser Terminals sind den Smartphone-Oberflächen entlehnt (Bild 2).

Angesichts der starken Vorbildfunktion des Smartphones liegt die Frage nahe, ob für das Bedienterminal nicht auch ein Smartphone-Betriebssystem eingesetzt werden kann. Da Apples iOS ein geschlossenes System ist, das nur zusammen mit Apple-Geräten verkauft wird, kommt dafür fast nur Android in Frage. Android, das iOS im Verkauf inzwischen überholt hat, nutzt als Fundament einen Linux-Kernel, unterscheidet sich aber von Linux. Doch worin liegen die Unterschiede?

Linux ist ein Betriebssystem, das aus einem Kernel und dem sog. User Space besteht. Das Linux-Betriebssystem wird für Entwickler in Form von Quellcode und für den Endnutzer als Distribution bereitgestellt, als installationsfertiges Paket, das den Kernel und die Elemente des User Space in einer festen Zusammenstellung enthält. Die Linux-Distributoren entscheiden, welche Kernel-Version sie verwenden, welche Systemwerkzeuge, Umgebungen (z.B. welchen Desktop) und Anwendungen sie zusammenstellen. Es gibt mindestens 350 verschiedene Linux-Distributionen.

Android ist mehr: Es ist ein Software-Stack für mobile Geräte, wird aber fast nur auf Smartphones und Tablets eingesetzt. Es besteht aus einem Betriebssystem, Middleware und einigen Applikationen. Das verwendete Betriebssystem ist eine Fork des Linux-Kernels.

Fork, das bedeutet: Die Android-Entwickler haben den Linux-Code kopiert und ausgehend von dieser Kopie eigene eigene Entwicklungslinie begonnen. Manche, aber nicht alle Linux-Kernel-Versionen finden nach etwa einem halben Jahr Eingang in die nächste Android-Version. Das Android-SDK (Software Development Kit) enthält die Werkzeuge und API-Beschreibungen, die zum Entwickeln von Anwendungen mit der Programmiersprache Java für Android nötig sind.

Die Entwicklung von Android-Anwendungen war bisher auf diese Sprache beschränkt. Seit kurzem gibt es aber auch ein Android-NDK, mit dem man auch in C/C++ entwickeln kann. Wie sinnvoll das ist, steht wieder auf einem anderen Blatt, denn mit einer fehlerhaften C/C++-App kann man das gesamte Gerät zum Absturz bringen. Mit einer Java-App dürfte das nicht gelingen.

Betrachtet man sich die Geschichte, so gehen die Ursprünge von Linux auf das Jahr 1991 zurück. Damals postete Linus Torvalds den ersten Aufruf zur Entwicklung eines Open-Source-Betriebssystems. Schon 1993 gab es mit „Slackware“ die erste Distribution. In den folgenden fast 20 Jahren bis heute machte Linux eine stürmische Entwicklung durch und wird heute vom Rechenzentrum bis zum batteriebetriebenen Gerät auf vielen Plattformen eingesetzt. Darunter sind so unterschiedliche Geräte wie Fernseher, Netzwerk-Infrastruktur, Fahrzeugcomputer oder Navigationsgeräte. Linux ist also ein weit verbreitetes und sehr vielfältiges Betriebssystem.

Android ist wesentlich jünger. Die Firma Android Inc. wurde 2003 gegründet und 2005 von Google aufgekauft. Damals rätselte man noch, was Google mit dem Kauf beabsichtigte. Die Pläne wurden dann mit der Gründung der Open Handset Alliance Ende 2007 etwas klarer und fast gleichzeitig kam das erste Beta-SDK von Android heraus.

Die Version 1.0 von Android ließ nochmal 10 Monate auf sich warten und erschien im September 2008. Die erste „greifbare“ Version von Android ist also erst vier Jahre alt. Ebenso stürmisch wie der Smartphone-Markt hat sich auch Android entwickelt, so dass es jetzt in Version 4.1 angekommen ist. Laut einem Werbevideo der Android-Website wurde das System bisher auf über 400 Millionen Geräten aktiviert.