Sunday, February 26, 2006

SWT, Swing or AWT: Which is right for you?

SWT, Swing or AWT: Which is right for you?
SWT : buy
Swing: hold
AWT : sell

Monday, February 20, 2006

Aonix PERC gets SWT

It seems that Aonix was busy and added SWT to PERC. This could make for snappy GUI's in embedded and realtime Java devices, since SWT isn't as bloated as Swing. For my part, I just wish Swing would get buried (fat chance thats gonna happen). Now if all other embedded VM suppliers -- especially the OEM's that supply VM's for cellphones -- could just do the same thing.

Wednesday, February 08, 2006

JamaicaVM gets Swing support

Seems the aicas JamaicaVM now also supports Swing as per this press release, which would make it possible to use the same JVM throughout a distributed system, from the RT/embedded subsystem up to the GUI.

Java breaks out

Java breaks out
Brewing enhancements, OEMs target security, speed and ease of programming
EE Times (02/06/06, 10:00:00 AM EST)
An article with some details on ARM using Jazelle as hardware JVM, and on PERC Pico and its (intended) limitations. This sounds familiar, I recall the standard PERC VM having the same limitations a few years back (evidently for different reasons).
Speaking of Jazelle: Fritjof has a page with all sorts of embedded/RT-Java devices.

IBM's 2 msec latency GC j9

IBM sets real-time tempo for Java code with Metronome
By David Lammers
EE Times (09/12/05, 09:00:00 AM EDT)
Seems IBM is back in the Java-RT game. Three years ago at the Embedded Systems Conference in San Jose, I got a response from one of their main RTSJ-Java j9 developers that was pretty discouraging, but now they seem to be back. Here is an article about their 2 millisec worst case garbage collector called Metronome.
During our initial tests for our framework (in 2002), the then IBM j9 was overall a good performer, the only reason why we couldn't select it then was the unknown future of this VM in the realtime domain. I think even QNX wound up replacing the VM in their Neutrino/QNX6 RTOS (after a promising RT-Java start in 2001), since the direction of IBM wasn't clear.
Welcome back, IBM!

Also, the article contains interesting little side-kicks from Greg Bolella (distinguished engineer at Sun Microsystems Software and director of the real-time Java program):
"Both real-time garbage collection and scoped memory are necessary for these applications. Anyone, or any company, who intimates anything different just isn't clued in."
...The real-time-collection vs. scoped memory argument these IBM guys like to make is completely spurious..."
Greg was at IBM in charge of RT-Java when IBM kickstarted the RTSJ effort. He was the lead for the RTSJ 'JSR0001' for quite some time. He moved on to Sun right around the time when IBM appeared to loose interest in RT-Java.
Looks like he ain't afraid to say what he thinks...
In the end, he's right, it should not be a "either/or" choice for the consumer.

Java preps dive into real-time role

Java preps dive into real-time role
Through tweaks and modifications, Java is finding a home in critical applications ranging from the military to telecommunications
By David Lammers
EE Times (08/01/05, 10:00:00 AM EDT) article

Java with real time constraints

Building Java-based embedded designs with real time constraints
By Kelvin Nilsen (08/15/05, 09:15:00 AM EDT)
Kelvin Nilsen in an article elaborating on "soft" vs. "hard" real-time.


Articles about Aonix PERC Pico release in Bussiness Wire and Electronicstalk

Real Java for Real Time – Gain and Pain

Real Java for Real Time – Gain and Pain
Anders Nilsson, Torbjörn Ekman, Klas Nilsson
Department of Computer Science, Lund University, Sweden
A presentation about problems and potential solutions using RT-Java. The new IBM garbage collector mentioned in this article is developed at this university at the same time.

Reliability quest fuels RT Java projects

REAL-TIME JAVA: Reliability quest fuels RT Java projects
David Lammers
EE Times (03/28/2005 9:00 AM EST)

Tuesday, February 07, 2006

Real-Time Java Moving Into the Mainstream

Doug Locke's article 'Real-Time Java Moving Into the Mainstream from the December 2004 issue of RTC Magazine. In the same issue, Kelvin Nilsen talks about Java and mission-critical systems in the article titled 'Definition and Standardization Move Java into Mission-Critical Applications'

The Experts

Some of the people I keep running into and keep reading about on the subject of real-time java:
  • Douglas E. Jensen, he operates the website, which sadly hasn't seen a update in almost 2 years. Nonetheless, the material presented on his site is still valid in its fundamentals that I consider required reading.
  • Doug Locke was over a long time in charge of the reference implementation of the RTSJ at Timesys. I had the honor of meeting him, a very bright and knowledgeable man.

  • Peter Dibble is the author of 'Real-Time JAVA Platform Programming', a very well written book that explains software control problems and their solutions -- not necessarily just for Java.
  • Kelvin Nilsen is the CTO of Aonix (formerly NewMonics) and sometimes holds classes and seminars on the subject. He holds numerous patents on real-time programming and garbage collection.

  • Fridtjof Siebert, and the company he founded aicas located in Germany approaches memory garbage collection from a new perspective (sorta revolutionary as to what Newmonics did a few years ago). This company deserves to be on the 'watch list' for anyone doing embedded development.

There are quite a few more to mention, this list will be updated as needed.

The History

(Just to clarify: When 'Java' is mentioned in any of my comentary, I mean 'Java - the Platform', consisting of JVM, Language and Libraries. I'll try to use 'Java - the language' when I'm talking about any language features, but I think this will be pretty rare. 'JVM' and 'J2ME'/'J2SE' will be used for the VM and library respectively. All Java related terms and abbrevation are trademarks of Sun MicroSystems.)

Over the years since I've been following the developments in the Java embedded/real-time space (ca. since 1999) things have been constantly changing, and it certainly was a trying experience in the 'user space' of RT-Java. I was charged with architecting a control framework for semiconductor manufacturing equipment based on Java technology in 2000, and due to the constant change, it wasn't always easy to make management-digestable suggestions were to go next.

Initialy a NIST project delivered the requirements for a Java realtime specification. Around this time, the community got split into two camps
  • The (now defunct) J-Consortium lead by HP used an approach to tighten the existing Java specification without adding any extra interfaces and libraries. The argument was that if the specification (JVM and libraries) is implemented to real-time principles (i.e. determinitstic GC, interuptable I/O), there is no need for any extra modifications.
  • The RTJS experts group lead by IBM under the newly formed Sun comunity process (rumor has it that the IBM/RTSJ group caused to Sun to accelerate the creation of the JCP process: the 'Real-Time Specification for Java' is numbered 'JSR00001'), the approach here was a much more elaborate API and JVM modifications true to the core of real-time computing principles and theory.
Although the first group didn't enjoy the support of Sun, they had one distinguishing advantage: There was already an existing implementation in the form of the Newmonics (now Aonix) PERC VM. This was a clean room implementation of the Java specification with a deterministic garbage collector based on research of the Newmonics founder and chief architect Kelvin Nielsen.

In contrast, the RTSJ group had to create the specification (which was finished in 2002), the first reference implementation (which wasn't really useable, sorry) came out in 2003, and second release in 2004. The full suite wasn't released until 2005, but with severe requirements and restrictions.
Having said this, it is not meant to diminish the work of the experts group: They were basically tasked to bring light into a dark spot of computing, then full with legends and woodoo.

As it turns out, the two specs are not exclusive to each other. The German company aicas released a implementation in 2003 which fulfills the RTSJ specification and has a highly deterministic garbage collector. More and more JVM's start implementing the RTSJ *and* have RT capable GC.

Starting in 2004, the mainstream software and control publications noticed that there was something new coming into the embedded/control market, and more and more publications touted it 'the thing to come in 2005', including December, 2004 issue of the RTC Magazine and analyst Chris Lanfear.
Its not (quite) here yet. Probably because control applications take longer to implement due to their typical higher shelf-live and larger requirements set than their desktop or gaming counterparts. And probably because real-time developers tend to be as conservative as cats. But it is definitely out there...

Good Evening...

... and Welcome!

I've created this blog primarily to post shortcuts to news and developments in the Java embedded / realtime control world, and perhaps summarize and comment on some of the articles.

My background is that I'm a senior developer at a company in the Semiconductor Equipment industry and the principal architect of their next generation machine control system. It is pretty much entirely developed using Java, utilizing different Java VM's for different framework areas. My resume can be found here.

I would like use this blog to network with people in similar (or even not so similar) positions to exchange ideas and find generic solutions to common problems.

I will prime this blog with some articles that I had book-marked over the years, sometime I may even have some commentary. I'll try to do the best to get the initial set of articles into some resemblance of a chronical order, but that may not be too easy, so some stuff may be out of order.

Thanks, and have fun,