Preface to the First Edition

Dreams

In 1997 the idea of writing real-time applications in the Java programming language seemed unrealistic. Real-time programmers talk about wanting consistent timing behavior more than absolute speed, but that doesn't mean they don't require excellent overall performance. The Java runtime is sometimes interpreted, and almost always uses a garbage collector. The early versions were not known for their blistering performance.

Nevertheless, Java platforms were already being incorporated into real-time systems. It is fairly easy to build a hybrid system that uses C for modules that have real-time requirements and other components written to the Java platform. It is also possible to implement the Java interpreter in hardware (for performance), and integrate the system without a garbage collector (for consistent performance). aJile Systems produces a Java processor with acceptable real-time characteristics.

Until the summer of 1998, efforts toward support for real-time programming on the Java platform were fragmented. Kelvin Nilsen from NewMonics and Lisa Carnahan from the National Institute for Standards and Technology (NIST) led one effort, Greg Bollella from IBM led a group of companies that had a stake in Java technology and real-time, and Sun had an internal real-time project based on the Java platform.

In the summer of 1998 the three groups merged. The real-time requirements working group included Kelvin Nilsen from NewMonics, Bill Foote and Kevin Russell from Sun, and the group of companies led by Greg Bollella. It also included a diverse selection of technical people from across the real-time industry and a few representatives with a more marketing or management orientation.

The requirements group convened periodically until early 1999. Its final output was a document, Requirements for Real-time Extensions for the Java Platform, detailing the requirements the group had developed, and giving some rationale for those requirements. It can be found on the web at http://www.nist.gov/rt-java.

Realization

One of the critical events during this process occurred in late 1998, when Sun created the Java Community Process. Anyone who feels that the Java platform needs a new facility can formally request the enhancement. If the request, called a Java Specification Request (JSR), is accepted, a call for experts is posted. The specification lead is chosen and then he or she forms the expert group. The result of the effort is a specification, reference implementation, and test suite.

In late 1998, IBM asked Sun to accept a JSR, The Real-Time Specification for Java, based partly on the work of the Requirements Working Group. Sun accepted the request as JSR-000001. Greg Bollella was selected as the specification lead. He formed the expert group in two tiers. The primary group:

Greg Bollella IBM
Paul Bowman Cyberonics
Ben Brosgol Aonix/Ada Core Technologies
Peter Dibble Microware Systems Corporation
Steve Furr QNX System Software Lab
James Gosling Sun Microsystems
David Hardin Rockwell-Collins/aJile
Mark Turnbull Nortel Networks

would actually write the specification, and the consultant group:

Rudy Belliardi Schneider Automation
Alden Dima NIST
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

would serve as a pool of readily available expertise and as initial reviewers of early drafts.

The effort commenced in March 1999 with a plenary meeting of the consultant and primary groups at the Chicago Hilton and Towers. This was an educational meeting where the consultants each presented selections of general real-time wisdom, and the specific requirements of their part of the real-time world.

The basis of the specification was laid down at the first primary group meeting. It took place in one of the few civilized locations in the United States that is not accessible to digital or analog cell phone traffic, Mendocino, California. This is also, in the expert opinion of the primary group, the location of a restaurant that produces the world's most heavily cheesed pizza.

Through 1999 the primary group met slightly more than once a month, and meetings for the joint primary and consultants groups were held slightly less than once a month. We worked hard and had glorious fun. Mainly, the fun was the joy of solving a welter of problems with a team of diverse and talented software architects, but there were memorable nontechnical moments.

There was the seminal "under your butt" insight, when James told Greg that he should stop looking over his head for the sense of an argument: "This is simple, Greg. It's not over your head, it's going under your butt." That was the same Burlington, Massachusetts, meeting where a contingent of the expert group attended the 3:00 AM second showing of the newly released Star Wars Phantom Menace. The only sane reason for waking up at a time more suitable for going to sleep was that James had gone back to California to attend the movie with his wife, who had purchased tickets weeks in advance. It tickled our fancy to use the magic of time zones and early rising to see the new release before them.

The cinnamon rolls in Des Moines, which David later claimed were bigger than his head. This was an exaggeration. Each roll was slightly less than half the size of David's head.

The "dead cat" meeting in Ottawa, where Greg claimed that when he took his earache to the clinic, the doctor would probably remove a dead cat.

The "impolite phrase" meeting, also in Ottawa. The group made it into a computer industry gossip column, and our feelings on the thrill of being treated like movie stars simply cannot be expressed in this book. We are, however, impressed that a writer old enough to perceive Greg as IBM's boy is still writing regularly.

In September 1999, the draft specification was published for formal review by participants in the Java Community Process and informal reading by anyone who downloaded it from the group's web site (http://www.rtj.org.) In December 1999, the revised and extended document was published on the web site for public review. Public review remained open until the 14th of February 2000 (yes, Valentine's Day). Then the specification was revised a final time to address the comments from the general public.

The first result of this work is the document you are reading. IBM is also producing a reference implementation and a test suite to accompany this specification.

Acknowledgments

The reader should consider this work truly a collaborative effort. Many people contributed in diverse ways. Unlike most traditional published books this work is the result of effort and contribution from engineers, executives, administrators, marketing and product managers, industry consultants, and university faculty members spread across more than two dozen companies and organizations from around the globe. It is also the result of a new and unique method for developing software, The Java Community Process.

We'll start at the beginning. Many of the technical contributors came together at a series of forums conceived and hosted by Lisa Carnahan at the National Institute for Standards and Technology. One of the authors, Greg Bollella, was instrumental, along with Lisa, in the early establishment of the organization of the future authors. He thanks his managers at IBM, Ruth Taylor, Rod Smith, and Pat Sueltz, for (in their words) being low-maintenance managers and for allowing Greg the freedom to pursue his goal.

The Java Community Process was developed at Sun Microsystems by Jim Mitchell, Ken Urquhart, and others to allow and promote the broad involvement of the computer industry in the development of the Java™ platform. We thank them and all those at Sun and other companies who reviewed the initial proposals of the process. Vicki Shipkowitz the embedded Java product manager at Sun has also helped the Real-Time for Java Expert Group with logistics concerning demonstrations and presentations of the RTSJ.

The Real-Time for Java Expert Group comprises an engineering team and a consultant team. The authors of this work are the primary engineers and we sincerely thank the consultants, mentioned by name previously, for their efforts during the early design phase and for reviewing various drafts. Along the way Ray Kamin, Wolfgang Pieb, and Edward Wentworth replaced three of the original consultants and we thank them for their effort as well.

We thank all those, but especially Kirk Reinholtz of NASA's Jet Propulsion Lab, who submitted comments during the participant and public reviews.

We thank Lisa Friendly, the Java Series editor at Sun Microsystems, and Mike Hendrickson, Sarah Weaver, and Julie DiNicola at Addison-Wesley for their effort in the preparation of this book.

We all thank Russ Richards at DISA for his support of our effort.

We thank Kevin Russell and Bill Foote of Sun Microsystems who worked hard during the NIST sponsored requirements phase.

Although they have much left to do and will likely give us more work as they implement the RTSJ, we thank the reference implementation team at IBM. Peter Haggar leads the team of David Wendt and Jim Mickelson. Greg also thanks them for their efforts on the various robot demonstrations he used in his talks about the RTSJ.

Greg would like to personally thank his dissertation advisor Kevin Jeffay for his guidance.

We thank Robin Coron and Feng Liu, administrative assistants at Sun Microsystems and IBM, respectively, for their logistical support.

A Note on Format

We used javadoc on Java source files to produce most of this book and thus many references to class, interface, and method names use the @link construct to produce a hyperlink in the (more typical) html formatted output. Of course, clicking on the hyperlink in the html formatted version will display the definition of the class. We tried to preserve this hyperlink characteristic when this book is formatted for PDF by including on each occurrence of a name the page number of its definition as a trailing subscript.