Java applications that run on MIDP devices are known as MIDlets.
A MIDlet consists of at least one Java class that must be derived
from the MIDP-defined abstract class
javax.microedition.midlet.MIDlet. MIDlets run in
an execution environment within the Java VM that provides a
well-defined lifecycle controlled via methods of the
MIDlet class that each MIDlet must implement. A
MIDlet can also use methods in the MIDlet class to obtain services
from its environment, and it must use only the APIs defined in the
MIDP specification if it is to be device-portable.
A group of related MIDlets may be collected into a MIDlet suite. All of the MIDlets in a suite are packaged and installed onto a device as a single entity, and they can be uninstalled and removed only as a group. The MIDlets in a suite share both static and runtime resources of their host environment, as follows:
At runtime, if the device supports concurrent running of more than one MIDlet, all active MIDlets from a MIDlet suite run in the same Java VM. All MIDlets in the same suite therefore share the same instances of all Java classes and other resources loaded into the Java VM. Among other things, this means that data can be shared between MIDlets, and the usual Java synchronization primitives can be used to protect against concurrent access not only within a single MIDlet, but also between concurrently executing MIDlets from the same suite.
Persistent storage on the device is managed at the MIDlet ...