Made in Germany: JamaicaVM, eine echtzeitfähige Java Virtual Machine

Werkzeuge  –  Kommentare

Embedded-Systeme stellen besondere Anforderungen an Soft- und Hardware. So muss eine Maschine im Fehlerfall unverzüglich innerhalb von Millisekunden stoppen. Dass Java diese Erwartungen erfüllen kann, zeigt das Unternehmen aicas aus Karlsruhe seit acht Jahren mit seiner JamaicaVM, einer hart echtzeitfähigen Java Virtual Machine.

Made in Germany – innovative Softwareentwicklung aus Deutschland

In der "Made in Germany"-Artikelserie stellt heise Developer Unternehmen aus dem deutschsprachigen Raum vor, die mit innovativen Produkten im Bereich Softwareentwicklung oder angrenzenden Gebieten aufwarten. Diese Hidden Champions der IT-Branche brauchen sich international nicht zu verstecken. Ein erster Artikel der Serie hatte die Entwicklungsumgebung NetCCM Studio vorgestellt.

"Unsere JamaicaVM ist im Bereich der harten Echtzeit ungeschlagen", sagt Andy Walter, Chief Operations Officer der aicas GmbH, gegenüber heise Developer. Echtzeit heißt, dass Systeme in festgelegten Zeiträumen garantiert und vorhersagbar reagieren. Für Java keine Slbstverständlichkeit, denn vor allem die Echtzeit ist ein Thema, mit dem sich Walter und seine beiden Gründer-Kollegen, Fridtjof Siebert und James J. Hunt, seit etwa zehn Jahren beschäftigen. Ziel war es damals, die Vorteile von Java wie Objektorientierung und Plattformunabhängigkeit in die Embedded- und Echtzeit-Welt zu bringen – ohne dass dort alles umgeworfen werden muss.

Mit dem Thread Monitor der JamaicaVM können Entwickler das Zeitverhalten einer Anwendung auf dem Zielsystem untersuchen (Abb. 1).

Bestehende Systeme können weiterlaufen, bekommen aber neue, moderne Funktionen, zum Beispiel in der Industrieautomatisierung: "Das wird im Embedded-Bereich leicht vergessen: Viele Produktlinien liefen damals und laufen auch heute noch mit hauseigenen Systemen. Unternehmen tun sich schwer damit, diese auszutauschen, denn sie funktionieren ja gut", betont Walter.

Verbindung von Alt und Neu

Im Einsatz ist die JamaicaVM unter anderem im Motion-Control-System "Simotion", das Bewegungsaufgaben in unterschiedlichen Maschinen steuert. Darin läuft weiterhin das bewährte Embedded-Betriebssystem von Siemens Automation and Drives (A&D), das nun mit Java an die moderne Welt angeschlossen wird: Das Steuerungssystem lässt sich mit Standard-Web-Techniken konfigurieren und in Betrieb nehmen. Zusätzlich kann der Kunde individuelle Java-Applikationen einbinden, zum Beispiel für die Inbetriebnahme, den Service oder die vorbeugende Wartung. Darüber hinaus gibt es eine komfortabel zu bedienende grafische Oberfläche.

Müllsortierung vollautomatisch

Bei der klassischen automatischen Speicherverwaltung unterbricht der Garbage Collector die Ausführung von mehreren Threads. Dadurch entstehen unvorhersehbare Pausen, was Echtzeit unmöglich macht (Abb. 2).

Echtzeitfähgkeit wurde Java nicht in die Wiege gelegt. Implementierungen, die in diesen Bereich vordringen wollen, müssen das Problem der automatischen Speicherbereinigung (Garbage Collection) lösen. Zum Hintergrund: Im Unterschied zu Programmiersprachen wie C, C++ oder Ada gibt Java nicht mehr benötigten Speicher automatisch frei. In zeitkritischen Embedded-Umgebungen entsteht daraus ein Problem, denn die automatische Garbage Collection unterbricht den Programmfluss. Daher können Java-Systeme "von Haus aus" nicht für Echtzeit-Reaktionen garantieren.

Es gibt dafür mehrere Ansätze: Bei der klassischen Speicherverwaltung unterbricht der Garbage Collector die Ausführung von mehreren Threads für längere Zeit und führt zu unvorhersehbaren Pausen. Der von Sun definierte Standard RTSJ (Real-Time Specification for Java, JSR 1) unterscheidet zwischen einem Echtzeit- und einem Nicht-Echtzeit-Teil und bereinigt nur letzteren.

Bei der Echtzeit-Speicherverwaltung der JamaicaVM lassen sich die Garbage-Collectoren jederzeit unterbrechen (Abb 3).

"Wir unterstützen RTSJ, gehen aber mit unserem Echtzeit-Verhalten deutlich darüber hinaus", so Walter, der erklärt: "Im Unterschied zu anderen Garbage-Collectoren sind in der JamaicaVM alle Threads echtzeitfähig. Der Garbage Collector erfolgt zur Allokationszeit im laufenden Thread und unterbricht die Threads nicht."

JamaicaVM unterstützt zehn Prozessor-Architekturen und zahreiche Embedded-Betriebssysteme, darunter Linux und Plattformen der Unternehmen Wind River, Sysgo, linutronix, Green Hills, expresslogic, Microsoft, Apple, QNX und Radisys.