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.
Folgende Erweiterungen der RTSJ sind für systemnahe Software besonders wichtig:
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.
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.