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
5 RMS
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
7.1 LCDUI
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
7.1.5.1 Input
LCDUI now provides the TextEditor class which can be used to perform text input in either a Canvas or CustomItem.
7.1.5.2 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.