Sun on Tuesday in the US released its first Java platform that offers real-time capabilities. The platform, Java Real-Time System 1.0, implements the Real-time Specification for Java (RTSJ), a blueprint for how Java can be extended to support real-time application programming.
Real-time systems are those where the application logic must meet temporal conditions, resulting in predictable application behaviour.
Devices such as mobile phones often contain a combination of real-time, non real-time, and "soft real-time" software ââ,¬" where logic sometimes meets temporal conditions. These different software types are often run on separate processors and operating systems. This separation results in a distributed computing model within the phone and developers have to write complex code to communicate between the different types of applications, according to Greg Bollella, a distinguished engineer at Sun. This code complexity raises the costs of manufacturing a new phone, he said.
"When a cell phone manufacturer decides to bring out a new model, what do you think their software engineering budget is for that project? The number will probably shock most of you. They say it's 2000 programmer years ââ,¬" that's what the budget is for developing, testing and shipping software in a new phone," said Bollella, speaking at a session on real-time computing at the JavaOne conference on Tuesday.
Mobile phone manufacturers are keen to merge the real and non-real time systems to cut costs and complexity. Bollella claimed that a beta version of the real-time Java implementation has already been used by some device manufacturers, who are happy with the results.
"We are working with some companies and they really like it ââ,¬" they can hide the complexity of processors and have a single development platform where they can do non real-time, soft and hard real-time stuff all in a single node," said Bollella.
Bollella said Java Real-Time System 1.0 is an exciting development within the real-time computing space, but that knowledge about real-time systems within the technology industry is still limited.
"With distributed real-time systems, we're not quite there yet. RTSJ is not the silver bullet, but is a little sharper tool that builders of real-time systems can use," said Bollella.
The real-time Java implementation is "still Java", according to Bollella, but limits developers to using a subset of the Java language. For example, developers must directly manage memory, rather than relying on Java's automatic memory creation and garbage collection. The real-time implementation also properly implements thread scheduling, unlike the standard version of Java, he said.
The JLS [Java Language Specification] says there are 10 thread priorities, but doesn't say that priorities actually work ââ,¬" it says they might work. RTSJ says priorities have to work and here's how they work," said Bollella.
One disadvantage of writing both real-time and non real-time code using the same platform is that the performance of the code is likely to decrease.
"You expect to lose some [performance]. If you take a specification JVM you will get about 15 percent degradation for non-real time code. But, normally in our [the real-time] community we figure about 20 percent throughput loss is acceptable," said Bollella.









