Mobility Resources Search Box

Relevant mobility-specific web search.

 

The Concern with CLDC-based Profiles Today

by C. Enrique Ortiz, August 11, 2004

To "profile" or not to "profile".  That is the question. There is the Mobile Information Device Profile (MIDP), and the Information Module Profile (IMP). And most recently the new Set-top box (STB) profile JSR was submitted to the JCP. In this essay we briefly explore CLDC-based profiles today, and the concern that CLDC-based profiles are being defined without proper forward-looking organization or structure. Over the last 5 years the J2ME platform, and especially the CLDC and MIDP, have become a proven application platform with millions of deployments - it is time to address any organizational issues now, before the problem gets compounded.

Organization

Java[TM] is owned by Sun Microsystems. Java evolves via the Java Community Process (JCP). Enhancements to Java are done by companies or individuals who submit to the JCP a Java Specification Request (JSR).  The JCP is governed by executive committees (EC): there is one committee for J2EE, one for J2SE and one for J2ME. Committee members are elected members consisting of companies or individuals with a common interest. The EC is responsible for accepting or rejecting submitted JSRs based on criteria such as usefulness, duplication, API fragmentation, or lack of clarity/purpose.

The J2ME architecture is organized as a software stack with functionality increasing as we move up the stack. This organization is the result of JSR-68, which defines the organization of J2ME. This architecture or software stack consist of configurations, profiles and optional packages:

Figure 1. J2ME Organization

At the bottom of the stack we have the hardware and operating system. As we move up we have configurations which "contain" the JVM and core Java packages, and as we move up we find higher-level definitions (the profiles) that define device characteristics and supported APIs such as UI, networking and storage APIs. Profiles addresses the characteristics and common functionality for a specific device-type such as a cellphones, headless devices, or set-top boxes. Optional packages extend profiles with extension APIs, for example, messaging or multi-media APIs - the original idea was for profiles to define the base functionality for a device-family, and optional packages to provide extended functionality. At the top of the stack is the application itself.

The Concern

Note the above definition of a profile: "Profiles addresses the characteristics and common functionality for a specific device-type such as a cellphones, headless devices, or set-top boxes". This is exactly how profiles are being defined today: MIDP for cellphones, IMP for headless devices, and STB profile for set-top boxes. But if we look a bit closer, we will see that some of these profiles are a complete subset of an existing profile (see IMP). The reason for this is historical - MIDP was defined first. The concern is that we are not building functionality up the stack - but instead decomposing MIDP down, without defining a base or foundation set of functionality (profile) for CLDC, without proper forward-looking organization or structure. This introduces some issues, for example:

  • The challenge (and cost) associated with keeping dependent profiles synchronized over-time..
  • Duplication of functionality, for example, the basic MIDP multimedia API vs. JSR-135 MM API optional package.
  • New unnecessary profiles; profile creep.

The number of profiles shall be kept to a minimum, while leveraging optional packages as much as possible.

Some Background

J2ME is broken into 2 branches: the Connected Device Configuration (CDC) and related profiles, and the Connection, Limited Device Configuration (CLDC) and related profiles.

In the case of CDC, profiles are neatly defined/separated: we have a Foundation Profile that provides the base/minimal functionality (minimal networking, no UI API, basic Java APIs), moving up we have the Personal Basis Profile that add some UI APIs and other functionality. And we have the Personal Profile which is basically J2SE 1.3 or 1.4 for CDC 1.0 or 1.1 respectively. In addition there are optional packages, such as support for JDBC APIs.

For the CLDC we have the MIDP that is mainly targeted at cellphone-like and low-end PDAs type of devices. We have the IMP, which can be viewed as parallel to MIDP; IMP is MIDP with UI APIs removed. And there is a new Set-top box profile (JSR-242), that as the name implies, is targeted at set-top boxes (note: I am not sure how the set-top box profile relates or not to MIDP or IMP). On CLDC, the organization and separation between profiles is not as clear as in the CDC. Instead of building increased functionality as we go up the stack, there is MIDP, and then we have profiles such as IMP that duplicates MIDP, with certain functionalities (the UI related APIs) removed:

Figure 2. Current CLDC-based Profiles: IMP and MIDP relationship

It Would be Great if....

It would be great if there is a clear definition for CLDC-based profiles, a definition similar to what have been done for CDC.  In this ideal architecture,  functionality is really broken down into optional packages - imagine that each major API in Figure 1, such as RMS or Security, is its own optional package. In this scheme profiles define the set of optional packages that comprises the given profile. At the bottom of the stack we would have a base profile for CLDC (lets call it the CLDC Base Profile), which defines the base structure and life-cycle of an Xlet, and any related methods. On top of the Base Profile would be the IMP, which would define the base functionality for headless devices with limited connectivity, and on top the MIDP would be the MIDP as we know it (functionality-wise) today - in this scheme each layer (profile) builds functionality as we move up the stack. In this scheme other optional packages could be optionally included by device-vendors, for example, a headless (IMP) device that needed "enterprise integration" would include support for the Web Services for J2ME API:

Figure 3. Ideal Organization for CLDC-based Profiles

In Conclusion...

Addressing this issue is not easy. For one, there is an existing MIDP base of millions of devices.

The issue brought up here is more than just an architectural purism thing - there is an economical impact associated with this - for example, keeping profiles synchronized is VERY expensive (it requires the formation of an expert group), and new certification tests (TCKs) licensed and passed. Also, a well defined organization helps minimize duplication of functionality.

I am hoping this important issue gets addressed ASAP, before more profiles for CLDC get submitted.  I am hoping for a plan from the different expert groups leaders, and the J2ME JCP executive committee.

Note: It is not fair to write about this topic without first admitting that I have been part of the problem I am addressing here; I was member of the MIDP 2.0 expert group, but failed at that time to see this problem - too focused on MIDP. Today as part of the IMP expert group and with Carl Zetie's feedback (see his report "Market Overview Update 2003: J2ME in the Enterprise") I have come to realize the importance of addressing this important issue ASAP, before more CLDC-based profiles go through the JCP.

ceo

 

 

Why Google Ads?
To help subsidy this web site's hosting expenses.