Some of Java´s defining characteristics -- such as Object-Oriented Programming, dynamic loading, and garbage collection -- although advantages in general, have proved to be obstacles to the language´s spread in the domain of real-time system development.
A real-time program´s time and space requirements must be predictable, but Java´s dynamic underpinnings interfere with that goal. Real-time garbage collection, despite some encouraging recent progress, is still more a research topic than a practical technology. And Java´s loose semantics for thread scheduling make it difficult for a developer to ensure that periodic threads will meet their deadlines, and that priority inversions will be avoided.
These problems, however, are not intractable, and since early 1999 two independent efforts have been underway to extend the Java platform so as to satisfy the requirements for real-time systems. One specification has been designed by the Real-Time for Java Experts Group (RTJEG) under the auspices of Sun Microsystems´ Java Community Process, and the other has been developed by the Real-Time Java Working Group (RTJWG) under the J-Consortium.
This tutorial analyzes the Java platform (language, API, JVM) with respect to real-time support, compares and contrasts the two real-time Java specifications, and shows how to use the specifications to produce real-time programs.
The role of OOP in real-time development
Familiarity with the main features of the Java language.'