J2ME MIDP 2.0: The Next Generation
By most measures, Java 2 Micro Edition (J2ME) is a success. Mobile Information Device Profile (MIDP) implementations are availableand sellingfrom all the major wireless handset manufacturers, and J2ME functionality is regularly touted in carrier advertising as part of its never-ending efforts to differentiate itself from the competition. If you're new to J2ME, I suggest you start with a number of articles available here at InformIT.com or at Sun's Wireless Developer site.
As a quick refresher, it's important to understand the J2ME concept of configurations and profiles. Currently, there are two defined configurations: the Common Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC). In 25 words or fewer: CLDC devices are typically pagers, mobile phones, and the like, whereas CDC devices are typically higher-end PDAs, set-top boxes, or tablet computers (see24 words!).
Profiles sit atop configurations and define the set of APIs required for a device's J2ME setup to comply the profile specification. The two most popular profiles are the MID Profile (runs on CLDC devices; targeted at mobile phones, pagers, and entry-level PDAs) and the Personal Profile (runs on CDC devices; the J2ME incarnation of the legacy PersonalJava technology).
MIDP 1.0: A Nice First Step
MIDP 1.0 devices first began appearing in 2001 and are now widely available in the U.S. (Motorola leads the way with a number of J2ME devices), from carriers such as Sprint and Verizon. MIDP 1.0, however, leaves much to be desired from a developer's perspective. The first incarnation of the specification provided support for basic UI functionality, a primitive record store, and HTTP networking. Missing were more advanced media, graphics, networking, and security APIsall of which are virtual necessities for game and mobile commerce applications (two of J2ME's "core constituencies" in political-speak).
One other glaring deficiency was the lack of a standardized provisioning specification. Provisioning is a wireless industry term that refers to the carrier's capability to provision applications or updates to applications on a fee basis out to user's mobile devices. The capability to handle application provisioning over-the-air (that is, over a wireless network) allows carriers to dynamically push applications and content to mobile devices, which in turn creates much-needed new revenue streams and builds ever-important customer loyalty. Looking back, it's a tribute to the design and implementation of J2ME MIDP that it became successful with all these shortcomings! (A side discussion might compare MIDP 1.0 with the more capable BREW technology) and draw conclusions about the importance of time-to-market and ubiquity versus advanced functionality, but we'll save that discussion for another time.)