I had a chance to pose the following questions to Kelvin Nilsen, Atego Chief Technology Officer, about Real Time Java and Atego's various implementations. Also check out my hands-on review of Atego's AonixPERC Ultra SMP real time Java implementation and an earlier video interview with Atego's Gary Cato.
Wong: Where does Atego see real time Java fitting into developer's plans?
Kelvin: We see several trends with respect to real-time systems in general. First, modern microprocessor designs (with large multi-level memory caches, deep instruction pipelines, speculative and out-of-order instruction execution) make it much more difficult to do the rigorous timing analysis required by hard real-time protocols. Thus, there is a trend to rearchitect hard real-time systems to use soft real-time development approaches. Second, many real-time systems track Moore's law, doubling in size every 18 to 36 months.
Many of today's real-time systems are comprised of multiple millions of lines of code. In previous decades, it was common for two or three developers to develop all of the software required for each new embedded system within 6-12 months of development time. Today's systems are so large that this approach is not possible. These systems are implemented largely by assembling existing off-the-shelf software components. The typical transition towards the use of real-time Java proceeds incrementally. As system requirements evolve, new capabilities must be added to existing embedded systems. As development managers search for existing off-the-shelf components to address the new requirements, they are much more likely to find the desired capabilities as reusable Java components. If they cannot find the desired capabilities as off-the-shelf components, then the company will have to develop the capability from scratch.
The choice to use Java for new development is motivated by several factors. First, doing development in Java is typically twice as productive as doing it in C or C++. Second, the anticipated long-term software maintenance costs will be lower (by up to ten fold) if the software is implemented in the Java language. Finally, Java software components are generally more amenable to future modifications and generalizations in the face of possible future evolution of requirements.
Wong: What products do you have that address real time Java?
- PERC Ultra best used for applications that need the rich features of Java Standard Edition (JSE) libraries, coupled with predictable performance. AonixPERC is a mature, proven solution having been field tested in more applications than any other real-time virtual machine system. It has demonstrated 5-9s reliability in applications running literally for over one year with no restarts.
- PERC Pico is specifically designed for demanding applications requiring small footprint, fast execution, and low-level device access. Benchmarks have shown Pico applications perform comparably to C/C++ programs, while being fully predictable and memory efficient.
- PERC Raven profits from Atego's long tradition providing safety-critical technologies used in many safety-intense applications, including avionics, space, and transportation systems where lives are on the line. AonixPERC Raven applies safety constraints, the basis for fulfilling safety certification requirements.
Wong: What target platforms do you support?
Kelvin: PERC Ultra supports the most popular RTOSs including:
- Green Hills INTEGRITY
- LynuxWorks LynxOS, and LynxOS-SE
- QNX Neutrino
- Wind River VxWorks and VxWorks MILS
PERC Ultra supports target execution on most Linux distributions including:
- Red Hat
- Red Hawk (from Concurrent Computer)
Target processor support includes:
- and other embedded system processors
Wong: What development platforms do you support?
Kelvin: AonixPERC family members are available for Windows, Linux, and Solaris development platforms.
Wong: What additional tools do you provide with your platform?
Kelvin: We include a number of tools with our PERC products including:
- AonixPERC Ultra ROMizer: This allows Java applications to be linked together prior to run time. This means system startup is "instantaneous", with no start-up time required for dynamic class loading or JIT compilation. With the ROMizer, it is possible to totally eliminate the dynamic class loader. This shrinks memory footprint and improves system security.
- AonixPERC Ultra Accelerator: This tool allows dynamically loaded Java software components to be compiled to native machine code before they are dynamically loaded. Thus, they load much faster because no time or memory is required to perform JIT compilation.
- AonixPERC Ultra Shell and VM Management API: These services allow real-time Java applications to look beneath the hood of the virtual machine to understand how the system is behaving. These also allow application code to make adjustments to the configuration of the AonixPERC Ultra virtual machine while the application is running.
- PERC Pico Static Analyzer: The PERC Pico product which is based on JSR-302 enhances the JSR-302 standard by integrating a static analyzer into the compiler. This static analyzer proves that stack memory allocation is properly configured, and greatly simplifies the integration of independently developed software components.
Wong: What are common and different between your products and conventional Java?
Kelvin: AonixPERC Ultra implements the same APIs as conventional (standard edition) Java. AonixPERC Ultra provides several supplemental APIs to allow developers to exercise control over real-time aspects of a Java application. The AonixPERC Ultra VM implements the virtual machine using approaches that are specially tuned to the needs of soft real-time programmers with mission-critical reliability and availability requirements:
- real-time garbage collection
- deterministic priority-based thread scheduling
- priority inheritance implementation for all synchronization locks
- romizer, perc accelerator, vm management api, perc shell
PERC Pico is based on the emerging JSR-302 standard. This differs from conventional (standard edition) Java in several important respects:
- PERC Pico implements a small subset of standard edition Java API libraries.
- PERC Pico does not have a garbage collector. Instead, all temporary memory allocations are taken from the thread's run-time stack.
- PERC Pico requires Java developers to insert annotations to describe their intentions with respect to stack memory management. A special static analyzer that is integrated within the PERC Pico byte-code verifier enforces consistency of integrity of stack-memory management annotations.
Wong: What are common and different between your products and other real time Java alternatives?
Kelvin: AonixPERC Ultra is the most widely deployed soft real-time Java solution, with millions of hours of deployed devices and multiple millions of hours of time-proven high availability at 99.999% up time and higher. The AonixPERC Ultra real-time garbage collector offers the widest assortment of configuration parameters. AonixPERC Ultra technical support is highly regarded by existing customers. Atego engineers offer training and consulting assistance to help customers succeed with their real-time Java technology adoption. The most noteworthy distinction compared to other real-time Java offerings is that AonixPERC Ultra developers use standard edition Java. This means they can integrate off-the-shelf standard edition Java components without any porting or re-engineering efforts. Our PERC Pico product, designed for hard real-time development based on JSR-302, differs from other real-time Java products in that it integrates a static analyzer to prove safe use of stack memory allocation, and to assure scalable integration of independently developed hard real-time software components.
Wong: What are some examples of applications that utilized your real time Java products?
Kelvin: The Atego PERC products have been deployed in telecommunication gateways and switches, automation of semiconductor manufacturing, control of electric power generating stations, automobile and trucking telematics applications, foot soldier communication and situational awareness aids, unmanned aircraft, ballistic missile defense applications, and warship modernization.
Wong: What challenges do new developers have using your real time Java products?
Kelvin: If they are knowledgeable in the use of standard edition Java, they may need to learn real-time theory of schedulability analysis and garbage collection pacing. Some effort is required to properly configure the real-time garbage collector. If they are knowledgeable in real time, but not in Java or object orientation, they need to invest some effort in learning Java and object oriented programming techniques.
Wong: What advantages do developers have using your real time Java products?
Kelvin: Unequaled technical support. Rock-solid virtual machine technology for high availability and ultimate reliability. Use standard edition Java APIs with AonixPERC Ultra instead of having to reengineer Java code to use error prone RTSJ APIs.
Wong: How can developers try out your product?
Kelvin: Evaluation copies of AonixPERC products can be requested from the Aonix website.