Introduction to the Real-Time Java Platform
- A Brief History of Real-Time Java
- Major Features of the Specification
- Implementation
- RTSJ Hello World
A BRIEF HISTORY OF REAL-TIME JAVA
MAJOR FEATURES OF THE SPECIFICATION
IMPLEMENTATION
RTSJ HELLO WORLD
A real-time specification for Java is a rather remarkable idea. Java programs running on a JVM are, as a rule, much slower than similar programs written in C and compiled to the target processor. Even worse for real time, garbage collection stops everything else from time to time. These are not the characteristics of a good real-time platform. The promise of the Java platform for real time is that Java specifies a complete platform, and the charter of the Real Time Java Expert Group allowed it a free hand with the entire scope of the Java platform.1 The Java platform includes aspects of the system from a robust class library and language specification all the way down to the instruction set of the virtual processor and many details of the multitasking runtime.
Previous attempts at real-time standards have struggled with limited scope. The most significant previous effort was the POSIX real-time specification. That specification had to be UNIX-like, and it could specify only a library API. Its control of the language was limited to "calling out" the ANSI C specification, and POSIX says nothing about the underlying machine's instruction set.
A Brief History of Real-Time Java
Many people contributed to the idea and its realization. Gallons of rhetorical blood and sweat were invested in a brief specification. Kelvin Nilsen deserves credit for starting the process. Years before Java appeared in public, Kelvin invented a garbage collection algorithm with good real-time characteristics. First, he embedded most of his garbage collection system in hardware, then he built software-only implementations. Kelvin promoted his idea at academic conferences and in the marketplace, but it did not catch on. One problem may have been that it required a specially instrumented compiler. Java was just what Kelvin needed, a new language with no legacy code, which generated interpreted byte-code and which needed garbage collection. He could fit his garbage collector into the JVM, and the JVM needed an improved garbage collector. Kelvin started a real-time Java working group to discuss ways to improve Java's real-time characteristics.
IBM and Sun were also interested in a real-time version of Java. They started efforts to build interest in real-time Java about the same time Kelvin did. It all came together in a grand meeting where Sun, IBM, and NIST (National Institute of Standards and Technology) jointly blessed a working group. It commenced meeting under the aegis of NIST and the leadership of Lisa Carnahan. After several months of meetings, the group produced a document called Requirements for Real-Time Extensions for the Java™ Platform: Report from the Requirements Group for Real-Time Extensions for the Java™ Platform. The report lists 53 groups as joint authors.
Around September of 1998, Sun announced the Java Community Process, a new process for maintaining and extending the Java specification. IBM promptly submitted a request for a real-time Java specification based partly on the NIST requirements document. The request, the first Java Specification Request (JSR-000001), was accepted in December of 1998.
Greg Bollella from IBM was selected as the JSR-000001 Specification Lead, and he formed an Expert Group with two tiers to help him create the specification. The primary group would do most of the work. Table 81 lists the members of the Expert Group.
Table 81 Real-Time Specification for Java Primary Expert Group
Greg Bollella |
IBM |
Paul Bowman |
Cyberonics |
Ben Brosgol |
Aonix/Ada Core Technologies |
Peter Dibble |
Microware Systems Corporation/ TimeSys |
Steve Furr |
QNX System Software Lab |
James Gosling |
Sun Microsystems |
David Hardin |
Rockwell-Collins/aJile |
Mark Turnbull |
Nortel Networks |
The Consultant Group would provide advice and participate in the major iterations of the specification. Table 82 lists the members of the Consultant Group.
Table 82 Real-Time Specification for Java Consultant Group
Rudy Belliardi |
Schneider Automation |
Alden Dima |
National Institute of Standards and Technology |
E. Douglas Jensen |
MITRE |
Alexander Katz |
NSICom |
Masahiro Kuroda |
Mitsubishi Electric |
C. Douglass Locke |
Lockheed Martin/TimeSys |
George Malek |
Apogee |
Jean-Christophe Mielnik |
Thomson-CSF |
Ragunathan Rajkumar |
CMU |
Mike Schuette |
Motorola |
Chris Yurkoski |
Lucent |
Simon Waddington |
Wind River Systems |
The combined Expert Groups first met at the Spring 1999 Embedded Systems Conference and started serious work in March 1999.
In September of 1999, the specification was published for "participant review." This is a formal stage in the Java Community Process in which the Expert Group shows a preliminary specification to other people who are involved in the process. In this case, the Expert Group decided to publish the specification on an open Web site. Formally, it was a participant review, but the document was visible to the world. Comments came in and the specification was improved. The official public review stage started in December 1999. More comments arrived and the specification was further improved. Finally, after about a year of steady work, the Expert Group released the preliminary edition of The Real-Time Specification for Java, which was printed and ready to be distributed in June 2000 at JavaOne.
The first edition of the specification was not an official specification. The Java Community Process requires three things before a specification is accepted: the specification, a reference implementation, and a test suite. Not only are the reference implementation and test suite required before anyone can write products that claim conformance, they also serve to prove that the specification can be implemented and is generally sane. The specification book was published before the other tasks were complete, to make it readily available to people tracking the standard and to draw more public interest and comment.
Through 2000 and most of 2001, the Expert Group continued to meet in frequent conference calls. Late in 2000, TimeSys volunteered to create the reference implementation, and they delivered a preliminary reference implementation to the group in April 2001. Naturally, a usable implementation of the preliminary specification focused attention on some areas that needed improvement. The sections of the specification on asynchronous transfer of control and scoped memory, in particular, were carefully studied. A revised specification, a reference implementation that conformed to the revised specification, and a test suite were submitted to the JCP Executive Committee for approval in October 2001.