J2ME (Java 2 Platform, Micro Edition) devices have invaded Asia and Europe and are starting to penetrate the US. Vendors have shipped millions of GSM (Global System for Mobile Communications) mobile phones and PDAs enabled with J2ME. No longer will a communication device, and eventually consumer devices in general, be constrained to basic functionalities. The possibilities are now endless. A Java solution allows a developer to reach numerous devices with just a single piece of code.
However, as these Java devices proliferate, we will see wide variations in how quickly different applications perform particular tasks due to the deviation in processor platforms, VM implementations, and device memory capabilities. Vendors who are not traditional VM providers may develop many of the VM implementations. Thus, characterizing device performance proves useful for writing applications. Developers can better understand each device's limitations and strengths, and tailor applications to suit their intent.
Traditional benchmarking standards used in desktop and server environments, such as CaffeineMark, Linpack, SPECmarks, and Dhrystones, are comprehensive, but address many performance aspects that might not be directly relevant to J2ME devices. J2ME devices are inherently lightweight computing devices not meant to provide the same level of functionality as traditional desktop or server computing devices. Thus, we must examine how to measure performance on a J2ME device.
With less emphasis on heavy computation and complexity, J2ME devices instead emphasize simplification of user tasks. Given the typically small screen size and constrained data input mechanisms, the user interface and the computations associated with a good user experience are paramount in any J2ME application.
In this article, we approach performance measurement by examining J2ME devices' performance from a user functionality perspective. Rather than compare what processor and operating system a particular device runs, the tests focus on determining whether a good user experience results when accessing a particular function.
Since most J2ME-enabled devices currently in the market only support CLDC (Connected Limited Device Configuration) 1.0 and MIDP (Mobile Information Device Profile) 1.0, our performance benchmark is based on J2ME CLDC/MIDP 1.0. In the future, we will update our benchmark if real devices support higher J2ME versions.
As of May 15, 2002, more than 70 types of J2ME-enabled mobile devices were available in the market. The number is increasing dramatically. See Resources for a list of devices that support J2ME.
We use the following devices in our benchmark; here we classify the devices based on their functions (not performance):
We test our benchmark applications with Sun Microsystems' J2ME Toolkit 1.04 beta (using Microsoft Windows 2000 and a Intel Pentium 4 1.5-GHz processor) for a better comparison. Although J2ME Wireless Toolkit 1.04 has functions for customizing a device, tracing exceptions, monitoring memory usage, and so on, we disable all those functions during benchmarking.