Jump to content

Java Platform, Micro Edition

From Alfawiki
Java Platform, Micro Edition
Company typeComputing platform
IndustrySoftware
PredecessorPersonalJava
FounderSun Microsystems
FateAcquired by Oracle Corporation
Headquarters
United States
Area served
Embedded devices, mobile devices
ProductsJava ME SDK, Java ME configurations and profiles
OwnerOracle Corporation
ParentOracle 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

JSR Number Title Details
297 Mobile 3D Graphics API (M3G) 2.0 Targeted Proposed Final Draft date: April 14, 2009

ESR Consortium

The 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.

ESR Number Specification Name Summary
001 B-ON (Beyond CLDC) Establishes a solid base for embedded Java applications by defining dependable device startup procedures and categorizing objects into three types: immutable, immortal, and standard.
002 MicroUI Outlines a framework enabling open third-party application creation on embedded Human-Machine Interface (HMI) devices equipped with displays, sensors, and audio features.
011 MWT Facilitates three distinct roles—Widget Designers, Look and Feel Designers, and Application Designers—allowing binary HMI applications to operate uniformly across various platforms including embedded systems, mobile phones, set-top boxes, and personal computers.
015 ECLASSPATH Integrates CLDC, CDC, Foundation, SE, and EE editions into a cohesive ~300-class API to support portable binary code compatibility across diverse Java environments.

Related Topics

References

Notes

Bibliography


External links