As you may or may not know, Sun released the Java Real-Time System in July (Press Release). This product is the ONLY fully compliant implementation of the Real-Time Specification for Java also known as JSR-001. Yes, the first JSR - the one that started the JCP.
So, you ask, why did I highlight the ONLY text above? Because I'm trying to correct a perception out there that other RTSJ-compliant versions of real-time Java exist. There are other vendors (who shall remain nameless for the moment) who claim that their products "support RTSJ". In fact, they may use some of the same API calls and they may in fact provide some of the necessary functionality, but they have NOT yet passed the TCK (that I am aware of). This is a big deal -- why? Because only by passing the TCK can customers and developers (probably you) have a choice in which product they'll use. Choice means competition; competition means better products and better value. You, the developer or customer, want this. Note too that JSR-01 defines precisely how Java should support real-time processing. If your vendor doesn't pass the TCK, then they're not using real Java and you are using something that won't allow you to easily migrate your code to another vendor's offering.
So what to do? Well, the first thing is to do is if you are using one of these Java-based products that claim RSTJ compliance is to ask your vendor for proof that they've passed the TCK. I expect at this point that you'll hear some hemming and hawing and then some discussion about h ow their solution is better for you because the vendor didn't have to add in all of these features, etc., etc. Sorry - it's not better. The RTSJ was developed by Java experts and real-time experts and they spent the better part of 6 years coming up with the mechanisms and interfaces specified in RTSJ. [More on this topic in a future post].
Now then, once you are past the compliance issue - what else sets the Java RTS product apart? Primarily the fact that it's based on J2SE and that it can scale in the best traditions of Sun's products. Normally, Java-based real-time systems -- and the majority of C/C++-based real-time systems -- are uniprocessor solutions. Typically they are very focused on the target activity and they don't do much processing outside of the function they are designed for. This is a fine architectural choice, but it does require specialized communication to coordinate and it also means multiple platforms, multiple vendors, and likely multiple development languages. This means complexity - and cost.
The Java RTS product is based currently on Java SE and on Solaris 10 (yes, Solaris has real-time capabilities). Our reference implementation is on a 2-way (2 processor) system which allocates hard real-time threads to one processor and non-real-time tasks to another processor. This enables us to achieve latencies of 20 microseconds on a relatively slow 1 GHz machine. This software stack also allows us to scale -- up to a 12-way system so far. This opens the door to a whole new class of real-time systems where the environment requires a large amount of processing along with some hard real-time capabilities. Example domains are military/aerospace command and control centers, telecom infrastructure, large-scale industrial control systems, etc. But we can also run on a single processor as well. And we're 100% Java - so you can migrate your work across processors as we flesh out the number of platforms supported.
I'll follow up shortly with some other interesting aspects of the RTSJ that also make real-time programming a lot easier with Java RTS.




