Java und OSGi in Embedded-Systemen für das Internet der Dinge

Seite 3: Fazit

Inhaltsverzeichnis

Fragt man vor diesem Hintergrund Entwickler, warum sie Java noch nicht im Embedded-Umfeld einsetzen, sind in der Regel folgende Argumente zu hören: Java sei für den Einsatz in eingebetteten Systemen viel zu hardwarefern, zu langsam, zu groß und nicht echtzeitfähig. Es ist richtig, dass in Java geschriebene Programme in maschinenunabhängigen Bytecode kompiliert werden. Diesen muss dann ein Interpreter auf der jeweiligen Hardware interpretieren. Dadurch ist jedoch nur der Interpreter, die JVM, auf die jeweilige Hardwarearchitektur anzupassen und zu kompilieren.

Die frühen Interpreter waren noch recht groß und nicht optimal auf die Hardware angepasst. Das hat sich durch heutige JVMs mittlerweile grundlegend geändert. Dass diese Entwicklung nicht neu ist, zeigt ein 2010 veröffentlichtes Whitepaper des Kölner Unternehmens ProSyst. Es verdeutlicht, dass Java in Kombination mit OSGi auch auf kleinen Hardwareplattformen (ARM9 mit 156 MHz und 8 MByte RAM und Flash-Speicher), in diesem Fall im Automotive-Bereich, nutzbar ist und dabei noch genug Platz für Apps und Services "übrig lässt".

Auch an der Schnelligkeit von Java hat sich durch die modernen Interpreter einiges verbessert. Um die Ausführungsgeschwindigkeit zu erhöhen, werden Konzepte wie die Just-in-time-Kompilierung (JIT) und die Hotspot-Optimierung verwendet. In Bezug auf den eigentlichen Ausführungsvorgang kann die JVM den Bytecode also interpretieren, ihn bei Bedarf jedoch auch kompilieren und optimieren. Heute verfügt Java durch das Java Native Interface (JNI) über eine standardisierte Funktionen aufzurufen. Wird JNI genutzt, benötigt man auf allen Plattformen, auf der das Java-Programm laufen soll, allerdings die native Programmbibliothek.

Java unterstützt wie die meisten der Betriebssysteme, auf denen es läuft, kein striktes, auf Prioritäten basierendes Threading-Modell. Dazu kommt, dass der in Java vorhandene Garbage Collector Unterbrechungen bei der Ausführung von Berechnungen bewirken kann. Aufgrund dessen wurde schon früh die Java-Real-Time-Spezifikation geschaffen. Dort wird zusätzlich zu einem Threading-Modell eine Sektion im Speicher eingeführt, die nicht unter die Kontrolle des Garbage Collector fällt. Diese Real-Time-Java-Systeme kommen beispielsweise im Banken- und Militärbereich zum Einsatz.

Der Embedded Markt wächst rasant. Das Internet der Dinge und die M2M-Kommunikation treiben die Anzahl der Embedded-Geräte in die Höhe. Cisco erwartet, dass 2015 25 Milliarden Geräte beziehungsweise "Dinge" mit dem Internet verbunden sein werden und sich diese Zahl bis 2020 auf 50ˇMilliarden erhöhen wird. Diese Geräte werden nicht nur zunehmend mehr, sondern auch performanter. Moores Gesetz besagt, dass sich die Komplexität integrierter Schaltkreise mit minimalen Komponentenkosten regelmäßig verdoppelt. Das führt dazu, dass Java auf immer mehr Geräten lauffähig ist.

Der kreditkartengroße Einplatinenrechner Raspberry Pi ist bestückt mit einem 700-MHz-ARM-Prozessor sowie 512 MByte Arbeitsspeicher. Ihn gibt es schon ab circa 30 Euro zu kaufen, aber es handelt sich trotzdem um einen vollwertigen kleinen PC. Klassische M2M-Plattformen sind sogar noch kleiner und ermöglichen es trotzdem, Java zu nutzen.

Gerade die rasante Entwicklung im Internet der Dinge führt dazu, dass Unternehmen schneller komplexe Anwendungen auf den Markt bringen müssen. Die Nutzung standardisierter Softwaremodule mit ausgereiften und optimierten Werkzeugen wird somit zunehmend wichtiger. Java in Kombination mit OSGi bietet hier einen enormen Vorteil für den Einsatz in der neuen Generation eingebetteter Systeme.

Konstantin Kersten
erarbeitet bei der ProSyst Software GmbH als Projektmanager auf Java- und OSGi-basierende Lösungen für Kunden im IoT/M2M-Bereich.

Kai Hackbarth
ist seit 13 Jahren bei der ProSyst Software GmbH beschäftigt. Darüber hinaus leitet er das OSGi Requirements Committee und ist Co-chair der Residential Expert Group.

  • Gerd Wütherich, Nils Hartmann, Bernd Kolb, Matthias Lübken; Die OSGi Service Platform – eine Einführung mit Eclipse Equinox; dpunkt.verlag 2008