Which real-time (RTSJ) JVM is most preferred?

17.7k Views Asked by At

There seems to be only a handful of JVMs that are implementations of the Real-Time Specification for Java (RTSJ). The Sun/Oracle Java Real-Time System is over $6000 and IBM's real-time WebSphere is over $7000, so many Java developers may never have the opportunity to use either of them. Oracle's JRockit seems to be a free real-time Java implementation with predictable, deterministic behavior, although I am not sure, since their documentation is pretty heavy on marketing language. Other smaller real-time JVMs seem risky by virtue of being developed by small organizations and having smaller user-bases.

Which real-time JVMs are preferred? Which are most used, trusted, and loved by developers?

4

There are 4 best solutions below

0
On BEST ANSWER

Update (March 2012): Oracle appears to have quietly disassembled their JavaRTS development team.

There isn't a good answer to this question. There certainly isn't enough critical mass to say there's a current most-popular RT JVM.

US Defense systems I'm aware of use JavaRTS, IBM's WebSphere RT, and PERC. Aviation platforms use aicas JamaicaVM. Most of those folks haven't been too concerned about licensing costs, to date. They are concerned by much higher program risks. I've worked with a number of these programs, and I find that the products are of high quality, and there is (at times extraordinary) support from the vendors.

Many of the vendors have focused on specific clients or domains, and their designs and support infrastructure tend to fall in line with that. If you have a specific application profile in mind, maybe we can get you a better answer.

The high licensing costs you cite reflect the high expectations users of these products have, and the relatively low density of the demand. The developer community (such as it is) is also more fragmentary because systems with real-time or safety-critical constraints are typically of greater sensitivity (defense, aviation, SCADA) or protected proprietary value (automotive) or both. One excellent forum for real-time Java theory and practice is the annual JTRES conference, which is a close-knit group of academics and technically-savvy vendors.

Related on SO: Primitives-only in Java, who uses RTSJ.

0
On

Despite Azul Zing is not an RTSJ implementation (but rather a J2SE implementation), they claim this JVM is capable of running real-time applications due to the pauseless C4 garbage collector.

More on C4:

4
On

Aonix has most used RTSJ implementation. They have a wide range of real-time java solutions from CDC to Java SE level.

0
On

It is true, that there are only few virtual machines that implement the RTSJ. Oracle's JavaRT, IBM's real-time WebSpere, and aicas JamaicaVM, but PERC from Atego is not one of them, not even remotely. PERC has some proprietary extensions for realtime programming instead. Oracle's JRocket is also not a realtime VM.

Both PERC and JamaicaVM, although they are both from smaller companies than IBM or Oracle, have substantial user bases. Most developers are less familiar with PERC and JamaicaVM because they are used primarily for embedded applications, not desktop or server ones. JamaicaVM is being used by major corporations such as Boeing, Siemens, Zeiss, and Lockheed Martin and it has been on the market for over ten years.

If you would like to try out the Real-Time Specification for Java, then you can download the JamaicaVM Personal Addition. It can be used on any Linux platform that is on the network. It is available from "http://www.aicas.com/jamaica-pe.html" free of charge.

The JamaicaVM not only supports the RTSJ, but also it has a fully preemptive garbage collector. This means that one can write realtime code without having to resort to using scoped and immortal memory areas. JamaicaVM also has a static or ahead of time (AoT) compiler, so that realtime performance is not inhibited by a JIT compiler. One can still use RealtimeThreads, RawMemoryAccess, AsyncEventHandlers, and other features of the RTSJ that promote realtime programming.