J2ME, which stands for Java 2 Platform, Micro Edition, is a subset of the Java platform, designed by Sun Microsystems as a replacement for PersonalJava. The other two Java platforms are the Standard Edition (Java SE) and the Enterprise Edition (Java EE).
J2ME was originally developed under the Java Community Process as JSR 68, and it was developed with the purpose of providing a certified set of Java Application Programming Interfaces (APIs) which can be used to create software for small, resource-constrained devices like mobile phones, personal digital assistants (PDAs) and set-top boxes. Sun Microsystems generally does not provide free binary implementations of J2ME runtime environment for mobile devices, instead leaving it up to third parties to provide their own binary implementations.
J2ME is capable of creating games on mobile phones that can be emulated on a personal computer during the development stage, and then subsequently uploaded to the mobile phone. It is a popular platform for this purpose, as it is easier and less expensive than developing, testing and loading games using other gaming platforms such as platforms developed by Nintendo, Sony and Microsoft, all of which require costly system-specific hardware and kits.
There are two configurations for J2ME, which provide the most basic set of libraries and virtual machine features that are required in every implementation of a J2ME environment. Both configurations feature a set of profiles. The first configuration for J2ME, the Connected Limited Device Configuration (CLDC), is required for a Java virtual machine to operate.
It contains a subset of the Java class libraries, and it is used to classify myriad devices into a fixed configuration. It has the following profiles: the Mobile Information Device Profile (MIDP), which was designed for mobile phones and features graphical user interface (GUI) API, and a basic 2D gaming API is featured in MIDP 2.0; and the Information Module Profile (IMP), which was designed for "headless" devices such as industrial embedded applications, security systems, vending machines and similar devices.
The second configuration for J2ME is the Connected Device Configuration, which is richer than CLDC. It has the following profiles: the Foundation Profile, which is a headless version of Java SE; the Personal Basis Profile, which includes lightweight GUI support in the form of an Abstract Windowing Toolkit (AWT) subset in addition to the features of the Foundation Profile; and the Personal Profile, which offers applet support and a more comprehensive AWT subset in addition to the features of the Personal Basis Profile.
Among the profiles for both configurations, the most common are the MIDP, for mobile devices, and the Personal Profile, for devices such as set-top boxes and PDAs.