Java Platform, Micro Edition
| Company type | Computing platform |
|---|---|
| Industry | Software |
| Predecessor | PersonalJava |
| Founder | Sun Microsystems |
| Fate | Acquired by Oracle Corporation |
| Headquarters | United States |
Area served | Embedded devices, mobile devices |
| Products | Java ME SDK, Java ME configurations and profiles |
| Owner | Oracle Corporation |
| Parent | Oracle Corporation |
Java Platform, Micro Edition (commonly referred to as Java ME) serves as a computing platform designed for creating and running portable applications on embedded devices and mobile devices. These include microcontrollers, sensors, gateways, mobile phones, PDAs, set-top boxes, and printers. Previously identified as Java 2 Platform, Micro Edition or J2ME, it employs the object-oriented Java programming language and forms a segment of the larger Java software platform. Originating from Sun Microsystems (now under Oracle Corporation), Java ME succeeded the earlier PersonalJava framework.
By 2013, Java ME was supported by more than 3 billion mobile handsets; nevertheless, its presence diminished with the rise of smartphones overtaking feature phones.
History
Java ME gained substantial traction in feature phones such as Nokia's Series 40 devices and was compatible with operating systems like Bada and Symbian. It was also implemented on platforms including Windows CE, Windows Mobile, Maemo, MeeGo, and existed as a proof-of-concept on Android.
The platform’s development occurred through the Java Community Process under JSR 68, advancing via multiple JSRs that established various device profiles. The most prevalent profiles include the Mobile Information Device Profile, tailored for mobile phones, and the Personal Profile, aimed at embedded consumer electronics such as set-top boxes and PDAs. These profiles are derived from two primary configurations: the Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC).
By 2008, Java ME implementations were confined to features available in Java Runtime Environment 1.3 and utilized corresponding class file formats (version 47.0).
Implementations
Oracle provides a reference implementation of the Java ME specification along with configurations and profiles supporting MIDP and CDC. Since the release of JavaME 3.0 SDK, these components have been integrated within a unified NetBeans-based Integrated Development Environment (IDE).
Contrary to Sun’s extensive binary distributions for Java platforms on servers and desktops, official binaries for Java ME targets were generally not released by Sun Microsystems; instead, third-party vendors supplied them. An exception was an MIDP 1.0 Java Runtime Environment for Palm OS. Despite widespread demand, Sun never produced a J2ME JRE for Microsoft Windows Mobile, so third-party solutions remain prevalent on that platform.
Sun formerly published an abandoned reference implementation called phoneME.
Operating systems that support Java ME include DoCoMo’s proprietary DoJa platform and SavaJe OS, which Sun acquired in 2007 and subsequently used as a foundation for its JavaFX Mobile initiative.
The open-source project Mika VM offers an implementation of JavaME CDC/FP but lacks official certification—since certified versions require royalty payments incompatible with open-source licensing—thus devices running Mika VM cannot claim formal JavaME CDC compliance.
Although Android OS utilizes a Java-based language variant sharing some objectives with Java ME, it is proprietary and significantly diverges from the standard Java ME platform.
Emulators
- Sun Java Wireless Toolkit (WTK) — a proprietary emulator for Java ME originally developed by Sun Microsystems and now maintained by Oracle.
- MicroEmulator (MicroEMU) — an open-source emulator supporting Java ME.
Other emulators are also available, including those bundled within development kits provided by manufacturers such as Nokia, Sony-Ericsson, and Siemens Mobile.
Connected Limited Device Configuration
The Connected Limited Device Configuration (CLDC) specifies a constrained subset of Java class libraries essential for a basic Java virtual machine. It establishes the fundamental VM capabilities and core libraries that are mandatory across all J2ME platforms.
Targeted at devices with total memory ranging from 160KB to 512KB—including a minimum of 160KB ROM and 32KB RAM accessible to Java—CLDC, when combined with appropriate profiles, offers a uniform foundation for application development on embedded and consumer gadgets.
Mobile Information Device Profile
Created specifically for mobile phones, the Mobile Information Device Profile delivers a GUI, data storage APIs, and MIDP 2.0 introduces a simple 2D gaming API. Applications built for this profile are known as MIDlets.
JSR 271: Mobile Information Device Profile 3, finalized on December 9, 2009, launched MIDP3 which broadened capabilities and enhanced device compatibility. Maintaining backward compatibility with MIDP2 applications was a primary objective.
Information Module Profile
The Information Module Profile (IMP) is tailored for embedded, "headless" devices such as vending machines, industrial controllers, and security hardware that have limited or no display but possess some network connectivity.
Initially created by Siemens Mobile and Nokia under JSR-195, IMP 1.0 represents a strict subset of MIDP 1.0, deliberately omitting user interface APIs (excluding javax.microedition.lcdui). JSR-228 (IMP-NG), based on MIDP 2.0, utilizes its advanced security and networking features like PushRegistry and platformRequest(), while continuing to exclude UI and gaming APIs.
Connected Device Configuration
The Connected Device Configuration is derived from Java SE, incorporating nearly all non-GUI libraries. It offers a more comprehensive environment compared to CLDC.
Foundation Profile
The Foundation Profile is a Java ME CDC profile intended for devices requiring a complete Java virtual machine implementation along with the full Java Platform, Standard Edition API. Implementations typically select subsets based on supported additional profiles. This profile was developed through the Java Community Process.
Personal Basis Profile
Building upon the Foundation Profile, the Personal Basis Profile includes lightweight GUI capabilities through a subset of the AWT. This profile serves as the basis for BD-J.
Foundation
| JSR # | Name | Description |
|---|---|---|
| 68 | J2ME Platform Specification | |
| 30 | CLDC 1.x | |
| 37 | MIDP 1.0 | |
| 118 | MIDP 2.x | |
| 139 | CLDC 1.1 | |
| 271 | MIDP 3.0 | Applicable to Java ME 3.4 and earlier; final specification targeting mobile phones; aligns Java language features with Java SE 1.3 |
| 360 | CLDC 8 | Introduced in Java ME 8 |
| 361 | MEEP 8 | New to Java ME 8; supports Java SE 8 language features aimed at Internet of Everything devices |
Primary extensions
| JSR # | Title | Overview | MSA | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 75 | File Connection and PIM API | Access to file systems, contacts, calendars, and task lists | Template:Ya | |||||||||||||||||||||
| 82 | Bluetooth | Bluetooth serial port communication and OBEX file transfers | Template:Ya | |||||||||||||||||||||
| 120 | Wireless Messaging API (WMA) | |||||||||||||||||||||||
| 135 | Mobile Media API (MMAPI) | Support for audio, video, and multimedia content | Template:Ya | |||||||||||||||||||||
| 172 | Web Services API | XML parsing and remote procedure calls | Template:Ya | |||||||||||||||||||||
| 177 | Security and Trust Services API (SATSA) | APDU communication, Java Card RMI, PKI, and cryptographic functions | Template:Ya | |||||||||||||||||||||
| 179 | Location API | GPS data, street address resolution, orientation sensors, and landmark storage | Template:Ya | |||||||||||||||||||||
| 180 | SIP API | Template:Ya | ||||||||||||||||||||||
| 184 | Mobile 3D Graphics (M3G) | Advanced 3D graphics capabilities | Template:Ya | |||||||||||||||||||||
| 185 | Java Technology for the Wireless Industry (JTWI) | General-purpose specifications | ||||||||||||||||||||||
| 205 | Wireless Messaging API (WMA) 2.0 | Functionality for sending and receiving SMS and MMS messages | ||||||||||||||||||||||
| 211 | Content Handler API (CHAPI) | Template:Ya | ||||||||||||||||||||||
| 226 | Scalable 2D Vector Graphics API for J2ME (M2G) | Support for SVG Tiny format handling | Template:Ya | |||||||||||||||||||||
| 228 | Information Module Profile Next Generation (IMP NG) | |||||||||||||||||||||||
| 229 | Payment API | Template:Ya | ||||||||||||||||||||||
| 234 | Advanced Multimedia Supplements (AMMS) | Extensions to the MMAPI standard | Template:Ya | |||||||||||||||||||||
| 238 | Mobile Internationalization API | Management of localized resources, locale-specific date/number formatting, and string comparisons | Template:Ya | |||||||||||||||||||||
| 239 | Java Bindings for the OpenGL ES API | |||||||||||||||||||||||
| 248 | Mobile Service Architecture (MSA) | Template:Ya | ||||||||||||||||||||||
| 253 | Mobile Telephony API | |||||||||||||||||||||||
| 256 | Mobile Sensor API | Access to sensor data from accelerometers, gyroscopes, compasses, thermometers, and barometers | ||||||||||||||||||||||
| 257 | Contactless Communication API | |||||||||||||||||||||||
| 258 | Mobile User Interface Customization API | |||||||||||||||||||||||
| 272 | Mobile Broadcast Service API for Handheld Terminals | |||||||||||||||||||||||
| 280 | XML API for Java ME | |||||||||||||||||||||||
| 281 | IMS Services API | |||||||||||||||||||||||
| 287 | Scalable 2D Vector Graphics API 2.0 for Java ME | |||||||||||||||||||||||
| 293 | Location API 2.0 | |||||||||||||||||||||||
| 298 | Telematics API for Java ME | |||||||||||||||||||||||
| 300 | DRM API for Java ME | |||||||||||||||||||||||
| 325 | IMS Communication Enablers |
%} Future Developments
ESR ConsortiumThe Embedded Systems R&D (ESR) consortium specializes in developing affordable embedded Java standards tailored for sectors such as industrial automation, machine-to-machine communication, healthcare devices, electronic metering, smart home systems, consumer electronics, and human-machine interfaces.
Related Topics
References
Bibliography
External links
|