Systemnahe Software plattformunabhängig programmieren mit Java und RTSJ

Direkter Hardwarezugriff – Tabubruch mit Java

11. April 2008, 11:11 Uhr | Andy Walter
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

RTSJ – die Realtime Specification for Java

Die Java Community hat daher bereits im Januar 2002 die „Realtime Specification for Java“ veröffentlicht, die es ermöglichte, auch systemnahe Software komplett in Java zu schreiben. Der neue Standard ist nicht nur für Echtzeit-Anwendungen attraktiv, sondern erleichtert generell die Entwicklung von Embedded-Systemen. Seit 2003 waren mit JTime von TimeSys und JamaicaVM von aicas die ersten Java-VMs auf dem Markt, die den neuen Standard unterstützen. Das von Microsoft und Hewlett Packard gegründete J-Consortium hat jedoch damals zeitgleich den konkurrierenden Standard „Realtime Core“ veröffentlicht, was zunächst zu einer Marktverunsicherung geführt hatte. Seit 2005 bieten nun auch Sun und seit 2006 IBM eigene Implementierungen der RTSJ an, wohingegen das J-Consortium aufgelöst wurde. Es lohnt sich also, sich mit diesem Standard zu beschäftigen.

passend zum Thema

Folgende Erweiterungen der RTSJ sind für systemnahe Software besonders wichtig:

  • Unterstützung mehrerer, hochauflösender Zeitgeber,
  • neues Thread-Modell für (periodische) Echtzeit-Threads,
  • neue Speicherzugriffsmöglichkeiten, z.B. für Memory Mapped I/O,
  • asynchrone Eventhandler (Pendant zu Interrupt-Handlern in C).

Man sollte sich nicht der Illusion hingeben, dass damit programmierte systemnahe Software noch vollständig dem Java-Paradigma „Write Once, Run Everywhere“ gerecht werden kann. Der Anpassungsaufwand bei der Portierung auf andere Systeme ist jedoch erheblich niedriger als bei der Verwendung anderer Programmiersprachen.

listing1_af_06.jpg
Listing 1. Jedes System hat mindestens einen Zeitgeber – die Systemuhr. Mit diesem Befehl liest man die aktuelle Zeit der Systemuhr aus.

Hochauflösende Zeitgeber

RTSJ unterstützt die gleichzeitige Verwendung mehrerer Zeitgeber eines Systems. In jedem System existiert mindestens ein Zeitgeber, die Systemuhr (Listing 1). Die meisten Anwendungen verwenden nur diesen einen Zeitgeber. Anwendungen, die auf weitere Zeitgeber zugreifen müssen, beispielsweise (relativ langsam reagierende) batteriegepufferte Uhren, bergen ein hohes Fehlerpotential: Sind die Zeiten beider Uhren vom selben Typ, beispielsweise time_t, besteht die Gefahr, dass sie versehentlich miteinander verglichen werden.


  1. Direkter Hardwarezugriff – Tabubruch mit Java
  2. Asynchrone Eventhandler für Interrupts
  3. RTSJ – die Realtime Specification for Java
  4. Java mit dem Touch des Besonderen

Jetzt kostenfreie Newsletter bestellen!