Systemnahe Software plattformunabhängig programmieren mit Java und RTSJ Direkter Hardwarezugriff – Tabubruch mit Java

RTSJ, die Real Time Specification for Java, gleicht einem „Tuning Kit“, das Java fit macht für die Programmierung von Embedded-Systemen. Neben Echtzeit-Mechanismen finden sich dort auch direkte Zugriffsmöglichkeiten auf den Speicher. Aber es gibt bei der Programmierung einige Besonderheiten zu beachten.

Systemnahe Software plattformunabhängig programmieren mit Java und RTSJ

RTSJ, die Real Time Specification for Java, gleicht einem „Tuning Kit“, das Java fit macht für die Programmierung von Embedded-Systemen. Neben Echtzeit-Mechanismen finden sich dort auch direkte Zugriffsmöglichkeiten auf den Speicher. Aber es gibt bei der Programmierung einige Besonderheiten zu beachten.

Die in Desktops und Servern weit verbreitete Programmiersprache Java liegt in Embedded-Systemen derzeit noch weit abgeschlagen hinter C. Dies mag zunächst überraschen, da die wichtigsten Vorteile von Java – die Plattformunabhängigkeit, die Fehlersicherheit und die automatische Speicherverwaltung – in Embedded-Systemen sogar noch stärker zum Tragen kommen als in Desktop-PCs. Unerlässlich für viele Embedded-Systeme ist aber die Möglichkeit, direkt auf die Hardware zuzugreifen. Genau dies ist aber mit gewöhnlichem Java nur möglich, indem C-Code über das Java Native Interface (JNI) eingebunden wird.

Dies bedeutet aber, dass C-Code, der generell fehleranfällig, schwer zu debuggen und aufwendig zu portieren ist, gerade für den kritischsten Teil der Applikation verwendet werden muss – keine sehr beruhigende Vorstellung. Ein weiterer Nachteil von C kommt vermutlich erst nach einigen Jahren zum Tragen, wenn versucht wird, beispielsweise eine andere Hardware-Architektur einzusetzen: C-Programme sind äußerst schwer zu portieren.

Die in Desktop- und Server-Systemen beliebte Sprache Java verbindet Plattformunabhängigkeit mit Fehlerrobustheit. Durch die Verfügbarkeit existierender Cross-Plattform-Debugging-Umgebungen wie Eclipse scheint es die ideale Sprache für Embedded-Systeme zu sein, da dort die Zahl der real existierenden Betriebssysteme und Prozessorarchitekturen ein Vielfaches über der bei Desktop-Systemen liegt.