Java ME
About
Java ME (Java Platform, Micro Edition) is a subset of the Java platform tailored for embedded systems and resource-constrained devices such as feature phones, set-top boxes, industrial controllers, and IoT devices.
Target: Small devices with limited memory, display, and power (e.g., 128 KB–1 MB RAM)
Origin: Initially called J2ME (Java 2 Micro Edition)
Current: Part of the overall Java Platform but less prominent due to rise of smartphones and IoT-specific platforms
Base: Subset of Java SE APIs with additional libraries for device-specific capabilities
Components
Configurations
Define the basic runtime environment:
CLDC (Connected Limited Device Configuration): For devices with very limited resources
CDC (Connected Device Configuration): For more capable devices (e.g., set-top boxes)
Profiles
Built on top of configurations to add more APIs:
MIDP (Mobile Information Device Profile): For mobile phones and PDAs
Foundation Profile: For CDC-based devices
Optional Packages
Bluetooth (JSR 82)
Wireless Messaging API (JSR 205)
Mobile Media API (JSR 135)
Location API (JSR 179)
Development Tools
Java ME SDK: Provided by Oracle
Eclipse ME: Plugin for Eclipse
NetBeans: Better out-of-box support for Java ME
Emulators: Used to test applications on different device profiles
Deployment Model
.jar/.jad files: Java Application Descriptor (JAD) used alongside the JAR for deployment to mobile phones
OTA (Over-the-Air) provisioning
Java ME vs Java SE
Feature
Java ME
Java SE
Target Devices
Mobile, embedded, IoT
Desktop, server
API Coverage
Subset + mobile extensions
Full standard APIs
GUI Support
Limited (LCDUI in MIDP)
Swing, JavaFX
Networking
Mobile-optimized
Full TCP/IP, RMI
Security
Sandbox, permissions
Full JVM security
Real-World Use Cases
Feature phones (e.g., Nokia Series 40, Motorola)
Payment terminals
RFID scanners
Set-top boxes
Industrial automation
Early GPS/Location-based apps
Decline and Transition
Smartphones (Android, iOS) replaced the need for Java ME in consumer mobile devices
Android uses a separate Java-based runtime (Dalvik/ART) not based on Java ME
Java ME Embedded and Java ME 8 attempted to modernize the platform for IoT
IoT is now largely handled by other languages/frameworks: C, Python, Node.js, etc.
Future and Current Status
Java ME is not actively evolving
Used in legacy systems and niche embedded devices
Oracle focuses on Java SE for embedded solutions now
Eclipse IoT and Jakarta EE are modern replacements in enterprise and IoT space
Last updated
Was this helpful?