I remember well the media feeding frenzy launched by Sun Microsystems at the Embedded Systems Conference in 1998 or 1999. Java mugs were everywhere for the taking, and huge Java banners flew over the event. However, as 2006 comes to a close, C/C++ is still the predominant language used for hard real-time systems. Recent surveys indicate that perceptions remain that Java is too big, too slow, can't satisfy real-time constraints, can't perform low-level operations, and has too long of a start-up time.
So, what happened? Was it a lack of Java-trained engineers back then that made selection of Java for real projects a non-starter for project managers? Or was it just that there was too much hype, too soon? Java standards were early in the cycle back then. There has been significant progress in addressing many of the negative perceptions of early Java solutions. Maybe it's time to take a fresh look at recent Java trends that could invalidate the early tire-kicker's negative impressions about Java.
A usage trends survey published in IEEE Software in 2005 indicated that Java development had eclipsed C as language-of-choice in the desktop space around 2001 and C++ in 2004. While embedded systems developers tend to be more conservative and loath change in comparison to their desktop systems counterparts, the fact stands that as desktop trends go, so typically go embedded systems trends within 5-7 years. No doubt, this historical trend explains much of the current renewed interest in real-time Java.
For example, in recent months, Lockheed Martin has adopted Java to handle the predictable performance aspects of the Aegis Weapons System, National Oilwell Varco is using Java to manage automated robotic drilling, L-3 Communication's Telemetry-West division selected Java for their real-time data acquisition system, and Boeing is using Java for the Joint Unmanned Combat Air Systems' (J-UCAS) X”45C program.
Standards have arisen in line with the various implementations now in place. Both Java hard real-time (JSR-000001: Real-time Specification for Java) and safety-critical (JSR 302: Safety Critical Java Technology) standards are now in the works, and products are almost ready to hit the street that bring life to these emerging standards.
Some of these products boast performance comparable to C/C++, with low-level device access and small footprint. Still others bring the high productivity of vast Java Standard Edition libraries into the realm of embedded development. All of them avoid the high error incidence that is the bugaboo of C/C++ programming.
In the meantime, Java has become the dominant language in university computer science curricula, providing a flood of new-hire talent. Sun estimates there are over 4 million Java-savvy developers today, while market studies indicate that over one billion worldwide shipments of embedded virtual machines have been made, with a combined annual growth rate of 24.5%.
It appears that finally approximately 5-7 years after Java's initial foray into embedded space that Java products for hard real-time and deeply-embedded systems have come alive. It may be that Java is ready for embedded systems prime time.
Gary Cato is manager of strategic alliances at Aonix North America Inc.