前言
本系列從零開始建立 J2ME 知識體系。首篇涵蓋定義、整體架構、目標裝置、封裝部署要點,並對比 J2SE/J2EE 定位。
一、J2ME 定義
Sun 定義:高度優化的 Java 執行環境,針對廣泛消費性產品(呼叫器、手機、視訊電話、機頂盒、車載導航)。1999 年 JavaOne 發布,將 Java 跨平台能力延伸至小型裝置。
二、整體架構:四層模型
J2ME 執行環境建構在宿主作業系統之上,四層疊加:
- Java 虛擬機層:針對特定裝置 OS 定製的 JVM 實作(KVM 或 CVM),支援特定 Configuration。
- 配置層:定義核心類別庫最小集與 JVM 功能。兩大配置:
• CLDC + KVM:16/32 位元、記憶體受限裝置(手機、PDA),開發挑戰性最高。
• CDC + CVM:32 位元、≥2MB 記憶體裝置(機頂盒),不在本教程範圍。
- Profile 層:建構於 Configuration 之上,定義特定裝置族群的 API 最小集(UI、持久化、聯網等)。應用程式針對 Profile 開發。一裝置可支援多 Profile。CLDC 上主流為 MIDP 與 KJava。
- MIDP 層:處理 UI、持久儲存、聯網的 Java API 集合,提供標準執行環境動態部署新應用。

三、目標裝置特徵對比
| 特徵 | CLDC 裝置 | CDC 裝置 |
| 記憶體 | 160-512 KB | ≥ 2 MB |
| 處理器 | 16/32 位元 | 32 位元 |
| 電源 | 電池、有限 | 固定/充足 |
| 網路 | 無線、間歇、低頻寬 | 無線、間歇、低頻寬 |
| UI | 簡易或無 | 簡易或無 |
| 典型裝置 | 手機、呼叫器、PDA、POS | 智慧手機、通訊器、家電、車載導航 |
四、J2ME vs J2SE vs J2EE
J2ME 為精簡子集,針對資源受限環境;J2SE 為桌面標準版;J2EE 為企業級分散式擴充。三者核心語言一致,類別庫層層遞增。

五、封裝與部署注意事項
- 應用程式打包為 JAR,附帶 JAD 描述檔(含 MIDlet 名稱、版本、主類別、圖示、大小等屬性)。
- JAD 允許 OTA(Over-The-Air)下載安裝。
- 預先驗證器優化類別檔,減少裝置端驗證時間。
- 混淆器(ProGuard)可大幅縮減 JAR 體積,符合裝置安裝上限。