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?
The ease-of-development, performance and reliability all make Java extremely attractive to developers. However, the Java platform does not support real-time applications, and even running a Java application on a real-time operating system will not make the application deterministic.
Real time Java is a catch-all term for a combination of technologies that enables programmers to write programs that meet the demands of real-time systems in the Java programming language.
Whatever condition it is, jvm is still the vm that has slowest startup. You may find it fast enough on certain grade of machine and for certain size of application. But still its startup time is comparably inarguably slow. I think GUI apps are primarily what gave Java the impression of being slow...
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With