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 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 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 build 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 responsible for developing the specifications called JSRs for Java virtual machines is made up of people/organisations with varied interests. In early 2000s when there was a huge tug of war in western countries between operators and device manufacturers to control 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 majority portions marked as “optional”. As an example, look at JSR75. A basic functionality such as reading contacts from 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 next cool apps or features themselves rather than building a developer community
Traditionally the Mobile handset manufacturers have been focussed 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 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 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 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 where as developing the app in the first place may have costed 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 Erricsson 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 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 amount 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 topic for another post…
p.s. Checkout my own comic creation attempt ..:-)
Anyone knows how I can embed this in post? The embed code on Dilbert site does not work..:-(