Opinionated comments on mobile phone industry news

All entries are written by Anders Borg, CEO and Consultant of Abiro, that has a long experience in strategic planning, developing embedded and Java software, usability aspects, and the mobile phone industry in general.

You can also read the latest Mobile News entries on your phone via wap.abiro.com, and we provide many News Feeds from popular news services.

For advertising and contribution queries, please use the feedback form.

News feed (local)        FeedBurner Feed
View Anders Borg's profile on LinkedIn

Wednesday, June 21, 2006

 
Java ME, still not Write Once, Run Anywhere
If you’ve never developed Java applications for mobile phones, or you work in Sun’s marketing department, you might still believe this is true, but anyone having tried to launch a mobile Java application to a broader market knows it’s very far from.

Here are some of the reasons why this is so:
  • Phones have very different levels of Java functionality, from the simplest MIDP 1.0 to MIDP 2.0 with different support for additional JSRs for Bluetooth, photography, video, audio, location etc. There are also operator-specific implementations like DOJA by DoCoMo.
  • There are several providers of KVMs (Java ME JVMs) and many more different integrations of those into phones, meaning there are also different interpretations of the specifications from Sun, leading to different behavior and outright bugs. This even though there is fairly strict testing of KVMs.
  • As the firmware is not upgraded in phones on the market except in very rare cases, possible bugs stay with the life-span of that phone model.
  • To speed up deployment of new phone features some manufacturers add proprietary APIs for that functionality, which obviously makes it much harder to port applications between phones and especially brands of phones. This is more or less a thing of the past, but many such phones still exist.

It’s not all bad though (under-statement) for the would-be application developer:
  • Even the lowest level of Java ME (CLDC 1.0 and MIDP 1.0) is OK for games and transaction-type applications, as it at least supports a bitmap canvas (yet limited) and HTTP communication.
  • Java ME dominates the market for application platforms. You might think otherwise due to Microsoft’s marketing of Windows Mobile and Nokia’s promotion of Symbian OS / Series 60, but it’s a fact that Java ME completely dominates with close to 1B units. Also, Java ME is found in anything from simple featurephones and up. Windows Mobile and Symbian OS / Series 60 are still mainly found in more expensive featurephones or smartphones. Note also that Windows Mobile and Symbian phones typically also support Java ME.
  • The industry is increasingly aware of the issues with portability and device differences, and has e.g. locked down base functionality in Java Technology for the Mobile Industry (JTWI) specification that all new phones support.
  • Java, as opposed to C and C++, is a modern programming language designed from the ground-up with object-oriented programming in mind and common pitfalls like pointers and type inconsistency designed out. Hence, it’s typically much quicker to write an error-free application in Java than in e.g. C/C++.

To support future phone functionality Java ME of course needs to be enhanced, so application developers will never see one single incarnation of Java ME. There are also more major improvements being planned, so that phone applications get a similar environment to that of PCs. MIDP 3 is now being specified and there are also talks about implementing CDC (as opposed to CLDC, that is used today) in phones. There will also be support for advanced cameras etc.

There are now a lot of companies that can perform multi-phone testing for you, so that you don't have to get all possible phones yourself, which for smaller developers would be impossible.

It’s my clear conviction that Sun should be the only provider of Java ME implementations. That would have solved many of the compatibility issues. Manufacturers can of course still screw up the integrations in the phones, but it would mean less headache for the application developer, as Sun would then guarantee that at least the byte-code parsing and APIs would be 100% the same on all phones running the same version of Java ME.

For more information about Java ME, and ways to get started on developing applications, please visit my Java ME pages.

You may also find my previous postings on the topic of Java ME interesting. Here are a few:

Note: Java ME means Java Platform, Micro Edition. You will also see it called J2ME at many places, but that’s the old term.


Comments: Post a Comment

Links to this post:

Create a Link



<< Home

This page is powered by Blogger. Isn't yours?