This chapter is from the book

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 81 lists the members of
the Expert Group.

Table 81 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 82 lists the members of
the Consultant Group.

Table 82 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.