I’m writing about this topic based on a request made by Artur Lojewski back in November last year, it has taken me a while to collect my thoughts on this topic as well as find time to sit down and write a posting. Artur attended Eclipse Summit Europe where Dave Thomas (Big Dave) gave a talk entitled “Next Generation Embedded Software – The Imperative is Agility!” and asked what my opinion was.
Unfortunately I didn’t attend that Eclipse Summit Europe, so I didn’t hear what Dave had to say. Talking to some folk that I do know who went – their impression was “Vintage Dave“. I have made reference to this in the past – but I did work for Object Technology International and my university education was heavily influenced by Dave Thomas – myself and my classmates were some of the first to work our way through learning datastructures etc., in Smalltalk. So a lot of my opinions of what Dave says are going to be coloured by my past experience (and his influence on the start of my career).
There are others who are predicting that embedded java is dead, even James Gosling has suggested that J2ME is done. However, if we take a look at embedded Java today – you’ll see that the Blu-ray format is a new niche for this technology. As well, even low cost phones such as the Nokia 2760 support the J2ME profile. This means that as a platform, there are actually billions of devices out there – how is this not success?
Looking at embedded hardware, we’re starting to see more and more capable hardware in the palm of your hand. For example – iPhone is a 400MHz ARM cpu compare this to a hot desktop circa 1998 (PentiumII 400MHz), the very definition of what embedded means is changing. In the near term J2ME will continue to be an expected feature in cell phones, so there is still a market which will continue for several (5?) years. As the smart phone market sorts itself out we’ll see which new (or old) technology rises to the top. It is probably safe to say that J2ME will have an impact on the outcome, but to bet on it as the winner is probably long odds.
Disclaimer: The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.
4 thoughts on “Future of Java Embedded VMs”
“Probably the biggest threat to the J2ME space is the new generation of smart phones: iPhone, G1 and Palm Pre – none of these have embraced Java as the path forward.”
Most people would say the G1 (ie, Android) IS using Java.
Ditto what Pat said, in fact they’re using our Java class libraries donated to Apache Harmony. The difference from JavaME is that Android is using core class libraries which provide most of what people need and adding additional functionality as required to extend device programmatic access into the Java language without going through the difficult and timely process known as a Java Specification Request. Further, they’re not following the Java VM specification but are implementing a VM which can run (after preprocessing) Java bytecodes in an optimized way for embedded devices. To the end developer this is just another step on the way to testing or deploying. In Java ME you needed an extra step anyway to create a JAR and a JAD file before deploying, both of which could be created by a tool as well. Android will only be relevant if all downstream deployed runtimes consume from and contribute back to an originating open source project (please let it be Apache Harmony). Otherwise in less than 2 years, Android will be as fractured and fragmented as JavaME due to differing implementations and Android doesn’t even have a TCK to make it more or less compatible with itself. By choosing the GPL without a classpath exception, Sun ruined a perfect opportunity to make Phone ME the centre to do embedded Java runtime development. Java is relevant on mobile devices if applied properly. I would say RIM and Android have bet the device on it. More thoughts but I have to run to a meeting, darn…
My naive take on this is that Java is simply ‘sleeping’ in the embedded space and it will ‘wake up’ (Yeah I know that sounds a little cheesy).
Companies like Windriver etc are moving towards Virtualization on embedded targets. This obviously has its advantages.
However in my view this is extremely heavy weight and makes it clearer to me that there is more room yet for Java on small systems. In many cases I could see myself preferring multiple JVM’s over an entire OS emulator.
Again possibly a naive point of view … but that’s how I see it 🙂
ps as for the ‘android vs j2me’ debate you you guys may enjoy this: