I'm sure you've all heard that the original Java slogan of "write once, run everywhere" was converted to "write once, test everywhere", and this has never been more true when deploying J2ME apps to mobile platforms. It is not always possible to restrict the devices/platforms that your end-users will be using , and therefore my experience has lead me to conclude that in order to ensure maximum compatibility between your app and the various devices on the market you have to test the app on a variety of physical devices. This leads to the important question, which devices do you choose?

Platforms

There are 6 main mobile device operating systems/platforms in the consumer market today:

  1. Symbian Series 40 (S40)
  2. Symbian Series 60 (S60)
  3. Windows Mobile 6.X (WM6.X)
  4. Google Android (Android)
  5. Apple iPhone (iPhone)
  6. Research in Motion Blackberry (BlkB )

There are also additional small-scale players, but for the sake of the argument I will focus on these. On a related note, there is an excellent list of available development platforms/frameworks and an overview of their capabilities at Wikipedia http://en.wikipedia.org/wiki/Mobile_development

J2ME Support

It is well known that the Apple iPhone OS does not support the installation (at least natively) of J2ME apps. You can hack an iPhone to allow the installation of J2ME apps, and on a more official note there is promise of a JVM being available via the app store. At the current time this effectively wipes out the iPhone from the rest of our discussion.

The rest of the platforms listed above natively support J2ME, and although different OS/platforms all support different JSRs the core functionality offered by the J2ME APIs should be consistent... right? And of course, all of the implementations of each specific OS flavour behave exactly the same... don't they?

Well no, often this is not the case. My experience indicates that you have to install and test an app on a subset of devices available in the market to ensure the greatest level of compatibility. Having said that, if you need a guarantee that an app will function as expected on a specific device you must install and test the app on the actual device! A few examples of the problems I have seen should drive home the point

  • An http communication module within an app deployed in production for 6 months to a BB 8320 does not work (and simply hangs) on the new BB 8900
  • Many S40 phones do not arrange native J2ME screen components in a consistent manner (leading a colleague to create his own custom screen widgets which provided more control)
  • Accessing the multimedia/camera functionality on various implementations of the S60 platform is not consistent
  • RMS Storage behaviour is not consistent across devices (such as the maximum storage space available, and the method for determining if this space has been exceeded)

The List of Phones

The main outcome of this article is that I have created a list of mobile devices that I would recommend you test your J2ME apps on if you are looking to deploy them into the business world over the next 6 months, and you can’t restrict which devices will be used by your end-users. I've compiled the list by looking at the major manufacturer websites, the current personal/business phones being offered by the major network providers and a few choice blogs.

The list is in an approximate order of my thoughts on predicted prevalence/desirability in the business community. I have also indicated the OS/platform of each device, and unless otherwise stated all devices have a built-in camera and GPS

  1. RIM Blackberry Curve 8900 (BlkB ) http://uk.blackberry.com/devices/blackberrycurve8900/
  2. Nokia N97 (S60) http://europe.nokia.com/find-products/devices/nokia-n97#/main/landing
  3. Nokia 5800 (S60) http://www.nokia.co.uk/find-products/all-phones/nokia-5800/specifications
  4. HTC Touch Diamond2 /Pro2 (WM6.1) http://www.htc.com/uk/product/touchdiamond2/specification.html http://www.htc.com/www/product/touchpro2/overview.html
  5. Nokia 6300 (S40) [NO GPS] http://europe.nokia.com/find-products/devices/nokia-6300
  6. HTC Hero / Magic (Android) http://www.htc.com/uk/product/hero/specification.html
  7. Samsung Jet S8000 (S60) http://jet.samsungmobile.com/
  8. Sony Ericsson C510 (S60) [NO GPS] http://www.sonyericsson.com/cws/products/mobilephones/overview/c510
  9. Nokia E75 (S60) http://europe.nokia.com/find-products/devices/nokia-e75/specifications
  10. RIM Blackberry Curve 8300 http://uk.blackberry.com/devices/blackberrycurve8300/

If anyone has any comments or different thoughts, I would always appreciate hearing them...

Daniel

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS