|
|
||
|
|
A Brief Synopsis of Real-Time Java
Today, most embedded and real-time systems still are built upon C and C++ languages. Twenty years ago, when most real-time systems were developed in assembly language on bare hardware, C was seen as an advancement, representing a first-level abstraction away from the hardware level. Today, more systems are built with C++ than with C, seen as an advancement over C because of its adoption of object orientation along with some other improvements. However, because C++ is a superset of C, many users of C++ compilers continue to develop C software without taking advantage of many of the C++ features. Continuing advancements in hardware technology are driving greater and greater complexity into the requirements for real-time and embedded software. For example, it is estimated that software within the average automobile has grown from 100,000 lines of code to over 1,000,000 lines of code within the last three years. As the size and complexity of embedded applications has grown, implementations built on C and C++ designs have grown increasingly fragile, and the cost of debugging and maintaining them has grown increasingly prohibitive. The evolving complexity of embedded systems has fueled the need for languages, methods, processes, and tools that help developers to manage complexity, increase productivity, and reduce time to market. Over the past decade, Java has proven to be a language and platform of choice in desktop, web, and mobile applications, widely displacing C and C++ in those application areas, resulting in substantial improvements in quality and productivity, fueled by the wide availability of Java-trained engineers and off-the-shelf components. However, additional work was needed to define a Java-based solution that would be appropriate for the specialized needs and requirements of real-time and embedded developers. Beginning in 1997, the National Institute of Standards and Technology coordinated the activities of an expert group in defining the requirements for the use of Java in real-time and embedded development. The NIST group, comprised of over 50 major technology companies including Sun, IBM, Microsoft, Aonix, Wind River, Motorola, and QNX, drew the following conclusion: The Requirements Group considers these Java traits to provide a basis for the real-time requirements and motivation for Java's use by the real-time community:
Following the conclusion of the NIST efforts, several years of specification, research, and development efforts were undertaken to develop the first solutions for real-time Java developers. Different approaches have been taken, placing differing emphasis on key important needs for the real-time and embedded community, including the needs to:
Resulting technologies have included solutions based on standard Java semantics and libraries, exemplified by Aonix PERC Ultra technology, as well as a generalized specification for real-time extensions to Java, called RTSJ, and developed under the Java Community Process (JCP). Work continues today with the Open Group and the JCP to develop RTSJ profiles that are tailored to hard real-time and safety critical applications. Technology derived from these efforts is exemplified by Aonix PERC Pico, and planned PERC Raven technologies. Specifications for these technologies may be found on the Aonix research site. Aonix PERC technologies are used in network infrastructure, telematics, avionics, space, military, industrial automation, and office automation applications with millions of lines of code and "5-9's" reliability, proving that real-time Java is not just a nice idea, but practical and successful reality for a rapidly growing audience.
|
|
||