1999 年 Sun 推出 Java 2 Micro Edition (J2ME),目標是 16/32-bit 處理器、16 MHz、512 KB 以下記憶體、間歇性無線網路、簡易圖形介面** 的消費性電子裝置 (手機、PDA、機頂盒、POS 終端…)。標準版 (J2SE) 足足 32 MB JVM 根本塞不進去,因此 J2ME 採用「配置 + 簡表」雙層架構,將 Java 運行環境模組化、可裁剪。
| 層級 | 名稱 | 目標裝置 | 最低規格 | 核心類別庫 | 虛擬機 |
|---|---|---|---|---|---|
| Configuration | CLDC (Connected Limited Device Configuration) | 手機、PDA、寶貝監視器… | 160 KB 記憶體、16-bit CPU、間歇網路 | java.lang.*、java.io.*、java.util.* (子集)javax.microedition.io.* | KVM (Kilobyte VM, ~128 KB) |
| CDC (Connected Device Configuration) | 機頂盒、車載資訊系統、智慧家電… | 512 KB+ 記憶體、32/64-bit CPU、持久網路 | 近乎完整 J2SE 核心庫 | 完整 JVM (功能強健版) |
關鍵差異:CLDC 針對極度受限裝置,移除 float/double (CLDC 1.0)、finalization、JNI、反射、使用者定義類別載入器;CDC 則保留完整 Java SE 功能集。
javax.microedition.lcdui、javax.microedition.rms、javax.microedition.midlet 等。「一個 Configuration + 至少一個 Profile」= 完整 J2ME 執行環境。應用程式只針對 Profile 開發,無需額外支援類別。
+---------------------------+ | Profile(s) | ← 垂直領域 API (MIDP, PDAP, Game, BT...) +---------------------------+ | Configuration | ← 橫向裝置群組核心 API (CLDC 或 CDC) | (Core Libraries + VM) | +---------------------------+ | Host OS / Hardware | +---------------------------+
Sun 參考實作將 KVM 與 CLDC 綁定發布,但規範允許廠商替換 VM (如實時 JVM、硬體加速 VM),只要通過相容性測試 (TCK)。
Sun 承認:消費性裝置形態極度多樣 (鍵盤、觸控、語音、手寫、單鍵滾動…),強行統一 UI 註定失敗。因此 UI 定義在 Profile 層** (MIDP 定義高階/低階 UI),CLDC/CDC 完全不涉及 UI。
| 特性 | 標準 JVM (J2SE) | KVM (CLDC) |
|---|---|---|
| 記憶體佔用 | ~32 MB | ~128 KB |
| Float/Double | 支援 | CLDC 1.0 無,1.1 有 |
| 類別載入器 | 可自訂 | 僅系統載入器 |
| Finalization | 有 | 無 |
| JNI | 有 | 無 |
| 弱引用/軟引用 | 有 | 無 |
javax.microedition.midlet.MIDlet 三大生命週期方法 → 執行模擬器除錯。java.io、java.util 精簡版、javax.microedition.io)。理解「Configuration 定義底線、Profile 定義上限、KVM 提供引擎」的分層哲學,才能在碎片化的行動裝置世界中,設計出既符合規格又能發揮平台特色的應用程式。這篇入門教程不著墨於語法細節,而是幫你建立「見山是山、見水是水」的架構心智——這才是踏入 J2ME 世界大門的真正鑰匙。