The Mobile Information Device Profile (MIDP) v2.1 for the Java Platform, Micro Edition (Java ME™) defines an enhanced architecture and the associated APIs required to enable an open, third-party, application development environment for mobile devices.
The MIDP 2.1 specification is based on the MIDP 1.0 and MIDP 2.0 specifications and provides backward compatibility with MIDP 1.0 and MIDP 2.0 so that MIDlets written for MIDP 1.0 or MIDP 2.0 can execute in MIDP 2.1 environments. It is included in from 3rd Edition Feature Pack 2 and Series 40 5th Edition onwards. The MIDP 2.1 API is supported in its entirety as specified in the JSR-118 specificationThe MIDP 2.1 API is supported in its entirety as specified in the JSR-118 specification.
The MIDP implementation supports a single display for each
active MIDlet with at most one active Displayable
at a time.
All UI callbacks are serialized, and they never occur in parallel, although timer callbacks may run concurrently with UI event callbacks.
MIDP API is thread-safe. Methods can be called from callbacks, TimerTask
s or other threads created by
the application.
The MIDP implementation provides full support for standard key codes for the ITU-T keypad (0-9, *, #).
Canvas
repeat events are supported.
Double-buffered graphics are supported.
Repainting is done automatically for all screens, except for Canvas
es. A MIDlet using Canvas
must
call the repaint()
method to paint the contents.
However, this does not ensure that the screen is updated with the
contents of the Canvas
immediately. The MIDlet
may have to force this by flushing all the pending repaint()
requests by calling the method serviceRepaints()
.
The Text
input elements such as the TextField
and TextBox
support various text input modes
(for example, writing language, predictive input, and numbers-only
input mode) that are consistent across Java and native applications.
The jog dial requirements from the MIDP API specification are not implemented.
Canvas
motion and Canvas
pointer events are not supported in Series 40 6th Edition and earlier
releases.
TimeZone.useDaylightTime
always
returns false.
If your MIDlet does not handle an exception
thrown by timertask.run
method, then the platform
catches the exception silently.