Just An Application

June 2, 2009

What’s New In MIDP 3.0 ? Part 1: An Overview

Filed under: Java, JME, MIDlets, MIDP, MIDP3 — Tags: , , , , — Simon Lewis @ 2:58 pm

Its been a long time coming, almost eighteen months since the Public Review, but the Proposed Final Draft of MIDP 3 (JSR 271) has just been published. So what’s new since MIDP 2 ? I’ll start by giving an overview of some of the new features and changes, then go into more detail on each of them in subsequent posts.

1 Events

Using the new Event API, MIDlets can listen for defined system events, for example, battery level, system state, etc., and listen for and post application specific events.

MIDlets can also specify that they be launched in response to specific system or application events.

2 Inter-MIDlet Communication (IMC)

Using the existing Connector API, MIDlets on a device can communicate with each other via two new Connection types IMCConnection and IMCServerConnection. A MIDlet can act as a client or a server, or both. An IMC server connection URI can be registered with the push registry.

An IMC server MIDlet can limit access to authorized clients only, and an IMC client MIDlet can require that it can only connect to an authorized server.

3 LIBlets

Common code can now be packaged as LIBlets rather than being included in each MIDlet suite that uses it. A MIDlet suite can specify dependencies on one or more LIBlets. During installation these LIBlets will be automatically installed if not already present on the device.

Like a MIDlet suite, a LIBlet is packaged as a JAD and a JAR.

LIBlets themselves can specify dependencies on other LIBlets.

LIBlets may have their own RecordStores associated with them.

4 Multi-Media

The sub-set of the MMAPI (JSR135) defined in MIDP 2 has been removed. A MIDP 3 implementation must support MMAPI version 1.1


MIDP 3 adds the following features to RMS.

5.1 Encryption

It is now possible to specify that a RecordStore must be encrypted when stored on the device.

5.2 Export/Import

A MIDlet may programatically export or import a RecordStore. An RMS interchange file format is defined to enable this. RecordStores may be exported encrypted, and encrypted RecordStores may be imported.

5.3 Provisioning

RMS now supports the creation of RecordStores during MIDlet suite/LIBlet installation, using data (in the interchange file format) bundled with the MIDlet suite/LIBlet, or downloaded during installation.

5.4 Tags

Records in a RecordStore can have an associated integer tag and RecordEnumerations can be constrained to return only those Records having a given tag or tags. This provides a limited form of indexing.

6 Security

6.1 Application Level Access Authorization

MIDP3 supports the ability to specify which MIDlets are authorized to access application events, IMC servers or shared RecordStores. Authorized MIDlets are specified by a combination of domain, vendor and signer.

6.2 ‘Fine-grained’ Permissions

As a consequence of requiring CLDC 1.1.1 (JSR 139) MIDP 3 supports JSE like ‘fine-grained’ permissions. Permission classes are defined where necessary. For example, the EventPermission classes is defined to control access to the new Event API.

7 UI


There are a number of additions and changes to LCDUI. These are some of the more notable ones.

7.1.1 Multiple Displays

LCDUI now supports devices with multiple displays. Displays may have different capabilities, and these can be queried programatically. Display events, for example, orientation changes, can be listened for

7.1.2 New Screens

There are two new sub-classes of Screen

  • FileSelector
  • TabbedPane

7.1.3 Images

LCDUI now supports animated images (AnimatedImage) and scalable images (ScalableImage)

7.1.3 Menus And Explict Command Layout

MIDlets can now explicitly control the layout of Commands associated with a given Displayable. This includes the ability to create menus of commands using the new Menu class.

7.1.4 Notifications

LCDUI now provides a Notification class, instances of which can be used to display small amounts of information to the user in a platform specific manner.

7.1.5 Text Handling Input

LCDUI now provides the TextEditor class which can be used to perform text input in either a Canvas or CustomItem. Layout

LCDUI now provides the Text class which can be used to layout text in conjunction with a Graphics object.

7.2 IdleScreen MIDlets

A MIDlet can be specified as an idle screen midlet, that is, a MIDlet which wishes to display content on the default or idle screen, of the device.

An idle screen MIDlet can display content on the idle screen of a device using an instance of the new class IdleItem.

7.3 Screensaver MIDlets

A MIDlet can be specified as a screensaver MIDlet.

7.4 Splash Screens

One or more images for potential use as a splash screen can be bundled with a MIDlet suite. The display of the ‘splash screen’ is handled automatically.

8 Miscellaneous

There a number of other new features which do not fit neatly into any of the categories above. For example,

8.1 CDC Support

MIDP 3 specifies that the underlying configuration can be either CLDC 1.1.1 (JSR 139) or CDC 1.1 (JSR 218)

8.2 Lifecycle Control

At the MIDlet suite level MIDP 3 now makes it possible to specify that a MIDlet suite cannot be updated and/or deleted.

At the application level MIDP 3 now makes it possible to specify that a given MIDlet cannot be started and/or stopped by the user.

8.3 System Properties

A number of device and user specific properties are now accessible as system properties, for example, the IMEI and the IMSI.

Copyright (c) 2009 By Simon Lewis. All Rights Reserved.


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: