Ein Duke erobert die Welt

Java everywhere

Bernhard Löwenstein

Java hat in den letzten Jahren besonders im Serverbereich weite Verbreitung gefunden. Doch auch im Embedded-Bereich nimmt die Zahl der mittels Java programmierbaren Geräte stetig zu. Interessanterweise kommt es eigentlich auch aus dieser Ecke. Ist das einstige Motto „Java everywhere“ also bereits Realität geworden?

Java hat sich im letzten Jahrzehnt zu einer der beliebtesten, wenn nicht sogar zur populärsten Programmiersprache gemausert [1]. Es wäre aber falsch, Java auf eine Sprache zu reduzieren. Vielmehr ist es heute eine Plattform, auf der Anwendungen und Komponenten ablaufen können. Diese wurden in einer Sprache geschrieben, aus der mithilfe eines entsprechenden Compilers Java-Bytecode gewonnen werden kann. Zentrale Bedeutung kommt dabei der JVM (Java Virtual Machine) zu. Sie abstrahiert die Unterschiede zwischen den verschiedenen Betriebssystemen und führt somit eine plattformunabhängige Abstraktionsschicht ein. Der Programmierer kann sich nun ganz auf die eigentliche Anwendungsentwicklung konzentrieren. Um plattformspezifische Details muss er sich im Gegensatz zu früher nicht mehr kümmern. Gerade in Verbindung mit eingebetteten Geräten, deren Zahl in den letzten Jahren dank der immer leistungsfähigeren und günstigeren Elektronikteile stark zunahm, macht dies Java beziehungsweise eine darauf basierende Alternative zu einer äußerst attraktiven Plattform.

Werfen wir einen Blick auf die Entwicklungsgeschichte von Java, so stellen wir erstaunt fest, dass Java ursprünglich eigentlich für den Embedded-Bereich konzipiert wurde. So verfolgte das Entwicklerteam um James Gosling anfänglich nicht das Ziel, bloß eine weitere Programmiersprache auf den Markt zu bringen: Das Projekt „Green“, aus dem später „Oak“ und in weiterer Folge „Java“ wurde, sollte eine Technologie zu Tage bringen, mit der verschiedenste Endgeräte einfach programmiert werden konnten. Ein weiteres zentrales Anliegen war, den Datenaustausch zwischen unterschiedlichen Geräten möglichst einfach zu gestalten. Technisch realisiert werden sollte dies durch die Bereitstellung einer einfach portablen Betriebssystemumgebung inklusive virtueller CPU (Central Processing Unit), auf deren Basis die Programme entwickelt werden und ablaufen sollten. Anstatt wie bisher mit C++ direkt gegen die Hardware zu programmieren, sollte die Entwicklung zukünftig in einer neuen Programmiersprache erfolgen, die auf dieser Abstraktionsebene aufsetzt. Die Programmiersprache sollte von der Syntax her an C++ angelehnt sein, jedoch um höhere Konzepte wie die automatische Speicherverwaltung ergänzt werden. Von der Set-Top-Box über das Smartphone bis hin zur Kaffeemaschine sollten so alle möglichen Geräte programmiert und gesteuert werden können. Diese Idee floppte – oder kennen Sie eine auf Java-Basis arbeitende Kaffeemaschine? Selbst in Wien, dem weltweiten Zentrum der Kaffeehauskultur [2], ist mir keine solche Maschine bekannt. Sehr wohl aber setzte sich die Grundidee durch, dass Applikationen und Komponenten nicht mehr für die jeweilige Plattform, sondern in den plattformneutralen Java-Bytecode übersetzt werden sollten. Statt auf Betriebssystemebene wurde die Java-mäßige Virtualisierungsschicht aber eine Stufe höher etabliert. Die Jahre vergingen, und die Idee eines universalen Betriebssystems für unterschiedlichste Endgeräte schien endgültig der Vergangenheit anzugehören. Doch wie so oft im Leben, wenn keiner mehr damit rechnet, kam es schließlich doch noch zum Comeback. Google brachte Android auf den Markt. Dieses legt seitdem einen wahren Erfolgslauf hin, den vor Jahrzehnten noch keiner für möglich gehalten hatte. Wer die Vision des kalifornischen Internetgiganten in Bezug auf Android genauer unter die Lupe nimmt, kann interessanterweise sehr starke Ähnlichkeit mit Javas Vision erster Stunde feststellen. Google verzichtete darauf, eine eigene Programmierplattform bereitzustellen und setzte von Haus aus auf einen Java-Dialekt. Vom Siegeszug Androids profitiert somit auch Java – und eventuell erleben wir nun doch noch, dass Kaffeemaschinen auf den Markt kommen, die unter Android laufen und in Java programmierbar sind.

Auch eine weitere Idee, die die Entwickler der Java-Plattform hatten, scheiterte – und setzte sich dann Jahre später doch noch durch: Java sollte seinerzeit als „DOS of the Internet“ etabliert werden. Mit genau diesen Schlagworten wurde es nämlich 1995 auf der Sun World offiziell vorgestellt. Die Applikationen sollten hierbei in Form von downloadbaren Applets bereitgestellt und von den in den Browsern integrierten Java-Laufzeitumgebungen interpretiert werden. Interessanterweise war es der damalige Branchenprimus Netscape, der durch Integration eines Java-Interpreters in seinen Navigator 2 für den Durchbruch von Java sorgte. Die in der Sandbox ablaufenden Applets waren anfangs auch der große Hit, doch bald schon standen die gleichen Kunden wieder auf der Matte und wünschten die Migration zu einer Java-Applikation. Jahre später sollte in den meisten Fällen dann eine RIA (Rich Internet Application) daraus werden. Netscapes Schiff ist als Teil von AOL (America Online) mittlerweile untergegangen, und auch über Applets redet heute keiner mehr. Doch die Idee dahinter überlebte und feierte Jahre später mit den Mobile-Apps eine beeindruckende Wiedergeburt. Diese mischen seitdem nicht nur ordentlich den mobilen Markt auf, sie werden zukünftig wohl noch eine viel größere Bedeutung einnehmen. In einer Welt, die sich dank der zunehmenden Vernetzung und immer kostengünstigeren Hardwarekomponenten immer mehr in Richtung Internet der Dinge entwickelt, ist es heute ein Leichtes, eine Smartphone-App zur Steuerung von Endgeräten zu implementieren. Darüber ließe sich dann sicherlich auch unsere vorhin erwähnte Kaffeemaschine kontrollieren. Andererseits: Das bisschen Bewegung vom Arbeitsplatz zur Kaffeemaschine schadet uns Entwicklern doch wirklich nicht…

Neben den Android-basierten Devices finden sich mittlerweile aber auch viele weitere Geräte, auf denen eine spezielle, auf die eingebettete Umgebung zugeschnittene Java-Laufzeitumgebung läuft, die die Ausführung von Java-Bytecode ermöglicht. Die Java-Hersteller zollten dem Trend der immer leistungsfähigeren Endgeräte Tribut, indem sie der Java-Community neben der bisherigen Java ME (Java Platform, Micro Edition) mit der Java SE Embedded (Java Standard Edition Embedded) [3] eine zweite Plattform spendierten. Diese basiert auf der Standardausgabe und implementiert vollständig die zugehörige Spezifikation, weist aber signifikante Speicher- und Laufzeitoptimierungen für Embedded Devices auf. Die meisten neuen Geräte werden eine Implementierung dieser Plattform an Bord haben, die Mikroausgabe wird auf lange Sicht wohl das Dinosaurierschicksal erleiden.

Nachdem in Zukunft nicht mehr die klassischen Rechner, sondern vorrangig eingebettete Geräten vorhanden sein werden, wird das Java Magazin ab sofort stärker auf diesen Trend eingehen und in den nächsten Ausgaben unter der Rubrik „Embedded“ über verschiedene interessante Projekte berichten. Dabei werden Ihnen unterschiedliche Hardwareplattformen wie Arduino [4] und Raspberry Pi [5], verschiedene Robotiksysteme wie NAO (Abb. 1, [6]) und Lego Mindstorms (Abb. 2, [7]), Spielzeugeisenbahnen, Flugdrohnen und noch vieles mehr begegnen – alles natürlich in Java programmierbar.

Abb. 1: Der hochentwickelte NAO-Roboter begeistert nicht nur Kinder und Erwachsene, er lässt sich auch mittels Java programmieren

Abb. 2: Dank des Open-Source-Projekts leJOS sind Lego Mindstorms-Roboter ebenfalls in Java programmierbar

„Java everywhere“ war das Motto der JavaOne-Konferenz im Jahre 2003 [9]. Zehn Jahre später kann diese Vision als in die Realität umgesetzt angesehen werden. Am Desktop, auf den Servern und in eingebetteten Geräten läuft heute in vielen Fällen Java – und ich finde, das ist auch gut so!

Geschrieben von
Bernhard Löwenstein
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.