前言
J2ME 於 1999 年隨 Java 2 平台推出,將 Java 劃分為 J2SE、J2EE、J2ME 三版本。J2ME 非單一規範,而是針對資源受限裝置的**配置**與 **Profile** 組合家族。本文系統梳理其架構演進、核心差異、舊規範(KJava/PersonalJava)去向,助你建立完整認知地圖。
核心架構:配置 + Profile
| 層級 | 定義 | 代表 |
| 配置 | JVM + 核心類庫最小子集,對應硬體資源等級 | CLDC(<512KB)、CDC(>2MB) |
| Profile | 針對特定垂直裝置類別(手機、PDA、機頂盒)增加 API | MIDP (CLDC)、Foundation/Personal (CDC) |
CLDC + MIDP:手機/PDA 主流組合
- CLDC 1.x:僅 4 個套件(java.lang/util/io + javax.microedition),
java.util 從 47 類精減至 10 類,無反射、無浮點、無使用者定義 ClassLoader
- MIDP 1.0/2.0:補齊 Timer、RMS (Record Management System)、HTTP、LCDUI(高/低階 UI),引入 MIDlet 生命週期(startApp/pauseApp/destroyApp)
- 四大
javax.microedition.* 套件:rms、midlet、io、lcdui
CDC + Foundation/Personal:高階嵌入式組合
- CDC:需完整 JVM(支援 JNI/JVMDI/JVMPI)、近乎 J2SE 的核心類庫(java.io/lang/net/security/math/text/util 等),**無 AWT/Swing**
- CVM:CDC 指定 JVM,支援 ROM 化類別、快速執行緒同步、原生執行緒
- Foundation Profile:在 CDC 之上擴充安全、網路、集合等 API,**仍無 UI**
- Personal Profile (JSR 62):提供 AWT 子集,預計取代 PersonalJava,向後相容 1.1/1.2
舊規範現狀
- PersonalJava → 正轉型為 CDC Personal Profile,開發中,將向後相容
- KJava (Sun Spotless 專案,針對 Palm) → Palm 正制定 CLDC PDA Profile 取代,遷移成本未明,Sun 已標示為實驗性、API 可能劇烈變更
學習路徑建議
- 先精通 **CLDC + MIDP**(市場佔有率最高、工具鏈最成熟)
- 有機頂盒/車載/工控需求再深入 **CDC + Foundation/Personal**
- 關注 JSR 進度(如 JSR 118 MIDP 2.1、JSR 209 AGUI 等)
結語
J2ME 架構雖複雜,但「配置定底座、Profile 定垂直」邏輯清晰。隨著規範成熟與 Profile 增加,J2ME 將鞏固嵌入式 Java 霸主地位。開發者應主動嘗試、回饋需求,共同推動生態演進。