J2ME 不是單一規範,而是家族
1999 年 Sun 發布 Java 2 平台,將 Java 劃分為三版本:
- J2SE:桌面/低端企業應用
- J2EE:企業級伺服器端開發
- J2ME:消費性產品與嵌入式設備
J2ME 無單一規格書,而是相關規範族群,針對資源受限設備(能源、記憶體、儲存、UI 差異巨大)定義 Java 子集。
兩層架構:配置 + 簡檔
| 層級 | 定義 | 核心內容 |
| Configuration 配置 | JVM + 核心類庫最小集,滿足設備族群資源下限 | java.lang、java.util、java.io 子集 + javax.microedition 基礎 |
| Profile 簡檔 | 特定垂直領域(手機、PDA、機頂盒)的 API 增補 | UI、持久化、網絡、多媒體等領域專用 API |
兩大配置詳解
CLDC - Connected Limited Device Configuration
- 目標:≤ 512 KB 記憶體、電池供電、間歇網絡、簡單/無 UI
- 適用:手機、尋呼機、簡易 PDA
- 核心包(僅 4 個,共 76 類/介面):
java.io (18) - I/O 基礎
java.lang (38) - 語言核心(無反射、無 finalize、無浮點)
java.util (10) - 集合/工具極精簡版
javax.microedition (10) - MIDlet 管理、IO 基礎
- 缺失:UI、持久化、網絡協議 → 由 Profile 補足
CDC - Connected Device Configuration
- 目標:≥ 2 MB 記憶體、持續電源、穩定網絡
- 適用:機頂盒、車載導航、娛樂系統
- 核心:完整 JVM 規範(支援 JNI 1.1、JVMDI、JVMPI)+ 完整 Java 2 類庫子集(含
java.net、java.security、java.math、java.text、java.util.zip 等,共 14 包、400+ 類)
- 同樣無 UI → 需 Profile
兩大核心簡檔
MIDP - Mobile Information Device Profile (建構於 CLDC)
- 補足 CLDC 缺失:Timer、RMS、HTTP、高級 UI (lcdui)
- 新增 4 包(共 47 類/介面):
javax.microedition.rms (10) - 記錄管理
javax.microedition.midlet (2) - MIDlet 生命週期
javax.microedition.io (1) - HTTP 協議
javax.microedition.lcdui (24) - UI 工具包
- MIDlet 框架:擴展
MIDlet 類,由 AMS (Application Management Software) 控制 startApp/pauseApp/destroyApp 生命週期,類似 Applet。
Foundation Profile (建構於 CDC)
- 大幅擴展 CDC API(含
java.security.acl、java.security.interfaces、java.security.spec 等),總計 400+ 類
- 無 UI,需疊加 Personal Profile (JSR 62) 或其他 UI 簡檔
- 目標:取代 PersonalJava 1.1/1.2,向後相容
舊世代技術現狀
| 技術 | 現狀 | 遷移路徑 |
| PersonalJava | 逐步轉型為 CDC Personal Profile,向後相容 1.1/1.2 | 重編譯針對 Foundation + Personal Profile |
| KJava (Palm) | 實驗性、API 不穩定,Sun 提醒勿用於生產 | Palm 定義 CLDC PDA Profile 取代,遷移工作量未知 |
架構關係圖解
J2EE J2SE J2ME
├── CDC ──── Foundation Profile ──── Personal Profile (開發中)
│
└── CLDC ──── MIDP (手機/PDA)
├── 其他 Profile (PDA, RIM, 等)
開發者決策指南
- **目標裝置記憶體 < 512 KB** → CLDC + MIDP(手機遊戲、工具類)
- **目標裝置記憶體 ≥ 2 MB、需完整 Java 語言特性** → CDC + Foundation + UI Profile
- **現有 PersonalJava/KJava 代碼庫** → 評估遷移成本,PersonalJava 路徑較平滑,KJava 需重寫。
- **跨裝置部署** → 核心邏輯寫在 CLDC 共用層,UI/平台特定代碼隔離在 Profile 層。
總結
J2ME 以配置定義底線、簡檔定義上限的雙層架構,優雅解決了「一個 Java 跑遍所有嵌入式設備」的不可能三角。雖早期規格碎片化嚴重,但隨著 MIDP 2.0 普及、Personal Profile 釋出、PDA/RTV/汽車等垂直簡檔陸續定型,J2ME 正走出「不成熟期」,成為嵌入式 Java 開發的工業標準。對開發者而言,**深耕一個 Configuration+Profile 組合(如 CLDC 1.1 + MIDP 2.0)即可覆蓋 80%+ 目標市場**,投資回報率極高。
- 上一篇文章: J2ME 101 深度教程(三):RMS 記錄管理系統進階應用
- 下一篇文章: J2ME 2D 遊戲入門之旅(七):架構反思與行業觀察
Copyright ©
程式碼之家 All Rights Reserved