Curious case of J2ME apps, Is Android going the same way?

Curious case of J2ME apps, Is Android going the same way? Having mentioned all the problems with the implementation, the concept behind J2ME still remain solid.

Java 2 Micro Edition (popularly known as J2ME) started with a huge promise “Write once run everywhere”. This was supposed to be a cure for all the 3rd party Mobile developers. It is still the most widely ported run time for Mobile devices. But somewhere along the line, it did not remain as attractive to developers as it used to be. The current joke amongst developers is that if you develop an application in J2ME you “write once and port everywhere”. Here are some of my thoughts on why it turned out that way.

There are 3 main components to building a kickass developer community.

  1. Easy development tools
  2. Ease of distribution
  3. Strong monetization channels

Some of my points on why J2ME failed to address them.

1. Weak regulatory body

The Java community is responsible for developing the specifications called JSRs for Java virtual machines and is made up of people/organisations with varied interests. In the early 2000s when there was a huge tug of war in Western countries between operators and device manufacturers to control the user experience, it did not help to have both of them sitting at the table defining these JSRs. The end result was a specification with the majority of portions marked as “optional”. As an example, look at JSR75. Basic functionality such as reading contacts from the user’s phonebook has been marked “optional” !!

2. Too much stuff left for interpretation

There are no standard ways to map different keypad layouts or screen sizes across different devices which meant that different JVM providers as well as different manufacturers built some basic functionality differently. End result, point 5.

3. Handset manufacturers focussed on building the next cool apps or features themselves rather than building a developer community

Traditionally Mobile handset manufacturers have been focused on building all the functionality they think users need in the phone itself. This is markedly different from the approach Apple has taken where they “depend” on developers to come up with innovations apart from some basic or key phone functionality. This approach of traditional manufacturers meant that the quality of tools and support offered to 3rd party developers are abysmal. For example, setting up the development environment in itself takes at least a week for any new developer.

4. Weak monetization models

The app stores concept though existing for almost a decade now has never got the mind-share of biggies in the Mobile Industry till recently. This meant that as an app developer, you depended disproportionately on limited channels.

5. Exponential porting effort

The biggest problem in the J2ME application ecosystem has been the porting effort. This stems mainly from 1 and 2 above but this in itself has been cited as the main reason why leading players such as Enterprises, Media companies and VCs stay away from Mobile applications. I know one company in India which charges rs 18000/- (~$400) for porting an app to one handset model(e.g. Nokia 2700). Considering that there are ~500 important handset models supporting J2ME, your porting cost alone could spiral to $200K whereas developing the app in the first place may have cost you just $10K.

Having mentioned all the problems with the implementation, the concept behind J2ME still remains solid. I do see improved support from some of the bigger handset manufacturers such as Nokia, Samsung and Sony Ericsson in recent times. There have also been more prominent app stores recently. So there may be a resurgence of sorts for J2ME applications, especially for entry-level phones and low-end feature phones.

In high-end feature phones and smartphones, Android seems to be the new hope for developers trying to reach many handsets. Simply due to ease of development and a solid Google app store, not to mention the Google brand itself which developers love to associate themselves with. But, when I look at the number of customizations handset manufacturers are doing on Android and the Android versioning system in itself, I sometimes fear that we may be revisiting the J2ME nightmare. That’s probably a topic for another post…

Does anyone know how I can embed this in the post? The embed code on the Dilbert site does not work..:-(

If you enjoyed reading this article don't forget to share with others!
This site is registered on as a development site.