J2ME 定位
J2ME (Java 2 Platform, Micro Edition) 不是單一軟體或規範,而是面向資源受限嵌入式裝置的技術與規範集合。針對裝置多樣性 (手機、PDA、機頂盒、智能卡、汽車導航),採用「配置 + 概要 + 可選包」三層疊加架構,實現「寫一次,到處跑」的受控適配。
核心概念
| 層級 | 名稱 | 職責 | 關鍵點 |
| 配置 | CLDC / CDC | 定義 JVM + 核心類庫子集 | 決定運行時基礎能力 |
| 概要 | MIDP / PDAP / FP / PBP / PP | 特定垂直領域 API (UI、網絡、存儲、生命週期) | 建構於配置之上 |
| 可選包 | WMA / MMAPI / RMI / JAXP / JSR-172 等 | 橫向擴展特定功能 (簡訊、多媒體、Web Service) | 可選擇性加入 |
兩大配置詳解
CLDC (Connected Limited Device Configuration)
- 目標:16/32 位 CPU、160~512 KB 總記憶體、間歇性無線網絡、有限輸入輸出。
- JVM:KVM (Kilobyte VM),極精簡、解譯執行、無 JIT、無 finalization、無 JNI、弱引用簡化。
- 核心包:
java.io、java.lang、java.util (子集) + javax.microedition.io (GCF 通用連接框架)。
- 典型裝置:早期功能機 (Nokia S40、Siemens、Moto)、雙向傳呼機、低端 PDA。
CDC (Connected Device Configuration)
- 目標:32 位 CPU、≥2 MB 記憶體、穩定網絡、較豐富 UI。
- JVM:CVM (Compact VM),支援 J2SE 1.3 完整特性:JIT、JNI、JVMTI、弱/軟/虛引用、完整類加載器架構。
- 核心包:CLDC 所有包 +
java.net、java.security、java.text、javax.microedition.io 等更接近 J2SE。
- 典型裝置:智能手機 (Symbian、Windows Mobile)、高端 PDA、機頂盒、車載系統、IP 電話。
已發布概要
基於 CLDC
- MIDP 1.0 (JSR 37):首個正式概要,定義
MIDlet 生命週期、javax.microedition.lcdui 高級 UI、rms 記錄存儲、HTTP/HTTPS (1.0 仅 HTTP)。幾乎所有功能機廠商支援。
- MIDP 2.0 (JSR 118):新增 HTTPS、WMA (簡訊)、MMAPI (多媒體)、遊戲 API (
GameCanvas/Layer/Sprite)、推送註冊、信任域簽名。
- PDAP (JSR 75):PIM (聯繫人/日程)、FileConnection (檔案系統存取) — 後併入 MIDP 3.0 草案。
基於 CDC
- Foundation Profile (FP, JSR 46):無 UI,為其他 CDC 概要提供基礎類庫 (安全、網絡、集合增強)。適合無頭嵌入式設備。
- Personal Basis Profile (PBP, JSR 129):最小 AWT (輕量 UI)、Xlet 生命週期、JavaBeans。針對互動數字電視、資訊亭。
- Personal Profile (PP, JSR 62):完整 AWT + Applet 支援,PersonalJava 遷移目標。高端裝置 (≥2 MB RAM)。
關鍵可選包
- WMA (JSR 120/205):
javax.wireless.messaging — SMS/CBS/二進制簡訊收發。
- MMAPI (JSR 135):
javax.microedition.media — 音頻/視頻播放錄製、MIDI、音效控制、數據源處理器。
- RMI (JSR 66):
java.rmi.* — 精簡版遠程方法調用,支援分佈式對象。
- JSR 172 (Web Services):JAX-RPC 子集 + SAX/StAX 解析器,支援 SOAP/HTTP 呼叫。
- JSR 75 (PDA Optional Packages):FileConnection + PIM。
- JSR 179 (Location API):GPS/基站/藍牙定位統一介面。
- JSR 238 (MIDP 3.0):模組化、服務發現、豐富 UI、多任務 — 未廣泛商用,Android 發布後歷史使命終結。
架構優勢與遺產
疊加式設計讓廠商可按硬體成本裁剪:低端機只實作 CLDC+MIDP1.0,智能機疊加 MMAPI/WMA/Location。雖然 J2ME 已退出主流舞臺,但其模組化、受限環境工程、二進制相容性思想深深影響了後續的 Android (Dex/ART)、Java Card、嵌入式 Java (Java SE Embedded)、以及現代 MicroProfile / Quarkus / GraalVM Native Image 的輕量化演進。