I hear from many embedded programmers that their hard real time projects are always done in C because that is the only way to get real time response. Many even shy away from C++ and C# or Java are rarely in the mix. I’ve cover RTSJ and Atego’s PERC products for a number of years so I am more familiar than most with Java in the real time realm. I finally had a chance to check out the PERC virtual machine (VM) and I found it both very transparent from a Java point of view to very powerful from a real time view.
I’ll leave the discussion of the Real Time Specification for Java (RTSJ ), the Java Community Process JSR-1 standard, and more details about PERC to related articles that are linked to this article. RTSJ is actually a very extensive standard because it is such a complete real time specification. Rarely will an application take advantage of even a large fraction of the standard.
Three issues that tend to come up in a discussion of real time Java include: compilation issues, garbage collection, and real time control. Conventional ahead-of-time (AOT) compilation is an option in addition to the usual just-in-time (JIT) Java compilation. AOT addresses on aspect of the compilation. Likewise, Java compilers can crank out code on par with the most efficient C compilers. Of course, consistent code is actually more important in a real time environment although everyone likes more compact and efficient code. Real time garbage collection is a standard part of real time JVMs. The discussion of real time garbage collection is beyond the scope of this article but, in general, real time garbage collection is as efficient or more efficient than manual memory management and less prone to errors. Finally, RTSJ addresses real time interfaces that is better than any C implementation I have seen.
Atego has a number of real time Java products that address a range of platforms and applications. The PERC Ultra product targets single core platforms. It is essentially a Java 2 Standard Edition (J2SE) that supports the real time extensions including real time garbage collection. Atego’s PERC Ultra SMP extends PERC Ultra to a multicore environment. The PERC Pico and PERC Raven platforms move in the other direction. PERC Pico targets more compact platforms that tend to have more limited memory facilities.
Sun is now part of Oracle and real time concerns are less of an issue to the database giant although even a small interest on Oracle’s part is a significant investment of time and money. Sun does have a major RTSJ implementation and there are other alternatives in the real time Java space such as DDC-I. For now we take a closer look at Atego’s PERC Ultra offering.