May 6, 2008

Java ME CDC needs a new version

The final release of the JSR for Java ME Connected Device Configuration (CDC ) version 1.1 was 3 years ago. The early draft of the specification is almost 5 years old. The situation is indifferent with the smaller and more common Connected Limited Device Configuration (CLDC) version 1.1. CDLC specification is also about 5 years old. In the past 5 years the development of the Java did not stop. Java SE had two major releases Java SE 5 and Java SE 6, and these releases brought major changes to the java language. Today, the java language level of the Java ME remains at 1.4 level as defined by CDC and CLDC specifications.

In the meantime. the mobile handset industry has been changing constantly. The devices nowadays have more resources. Devices like N95 have 330 MHz or larger CPUs, 3D accelerators, a good amount of memory, and this was last year. iPhone had made a very positive impact in the industry and convinced the consumers that smartphones are more than phones.  On the other hand, the rapid growth of the developer community around the Google's Android proven that the developers welcome an innovation platform that is closer to Java SE level, rich with APIs on the devices.

I believe mobile industry had never been more ready for having CDC as the mainstream Java ME configuration. The richer APIs of CDC will allow the innovation juices of the mobile java developers flow rapidly. The ability to use JNI will enable software that is more integrated to the the device features without need for the platform providers to provide the APIs. This is all sounds good and desired but lately I started to wonder is that enough?

The latest discussions on e4 made it more clear that there is a desire on the developers to use Java 5 features. This is not really news, there had been similar discussions on different Eclipse components concerning their use with eRCP, including the latest experience from Wayne Beaton. While with the current state of Java ME, it is a necessity for the components to keep the java language level at 1.4 level. I think it is really time to start with a new version of the CDC to move the the language level to Java SE 5 level and be prepared for the inevitable.

Of course, it is some work and investment to do a new CDC specification and therefore the possibility to define a subset of the latest Java SE and calling it the new mobile java remains attractive to many.