Real-Time Java

Real-Time Java is a collection of application programming interfaces, which the Java technology extended with real-time capabilities. This Real - Time Specification for Java ( RTSJ ) has been developed as Java Specification Request 1 under the Java Community Process and adopted as a standard in November 2001. Currently, the RTSJ is working within the framework of JSR 282 to a more advanced version.

Background

Some of the commonly regarded as strengths of Java properties as inseparably connected with the language garbage collection, and native support for threads and concurrency make direct use of Java in real-time systems impossible:

  • Java support like most of the operating systems is available for Java, no strict priority based threading model. Thus, the lock mechanisms of Java do not support mechanisms to avoid the priority inversion such as priority or priority inheritance boundaries.
  • The behavior of the Java garbage collection can cause breaks in unlimited calculations and thus undermines any real-time guarantees of Java programs.

To address these difficulties, the Real-Time Specification for Java ( RTSJ ) has been developed as Java Specification Request. It makes it possible in Java to circumvent the above-mentioned obstacles in introducing an appropriate threading model and allows the Java Virtual Machine by other threading models to widen. In addition, it defines specific areas of memory that are not cleaned by the conventional garbage collection, but by real-time capable threads that can not be paused by garbage collection.

Current implementations of the RTSJ make it possible to develop hard and soft real-time applications in Java. Among the best known implementations include the reference implementation of Timesys, IBM's WebSphere Real Time, Sun Microsystems Java SE Real-Time Systems, Aonix PERC and JamaicaVM aicas.

674576
de