前言:資源受限環境的生存法則
J2ME(Java 2 Micro Edition)針對記憶體、運算力極度受限的行動裝置設計。初學者常混淆記憶體分類、配置與配置檔概念,導致優化無從下手。本文釐清三大核心概念,為高效開發奠基。
一、記憶體三重奏:Programme Memory、Heap、Persistent Storage
1. Programme Memory(程式記憶體)
- 定義:分配給 MIDlet Suite 的空間,等同於 JAR 檔大小
- 限制:廠商設定上限(如 Nokia 6108 僅 64KB),超過無法安裝
- 優化關鍵:使用混淆器(ProGuard)壓縮 JAR,移除未用代碼、縮短符號名
2. Heap(堆積區)
- 定義:執行期物件、區域變數、成員變數的存儲空間
- 規模:通常數十 KB 至數百 KB
- 管理:GC 自動回收,但受限裝置 GC 效率低,需主動釋放引用、避免大物件、復用物件池
3. Persistent Storage(持久化儲存)
- 定義:MIDP 應用本地資料持久化空間(RMS:Record Management System)
- 特性:非結構化位元組陣列存儲,支援記錄級增刪改查、監聽器機制
- 生命週期:隨 MIDlet Suite 卸載而刪除,跨啟動持久
二、CLDC:配置層的基石
Connected Limited Device Configuration
- 核心組件:KVM(K Virtual Machine,針對受限裝置優化的 JVM)+ 精簡基礎類庫
- 硬體抽象成果:專家組依裝置特性(記憶體<512KB、間歇網路、有限顯示)設計 KVM
- 基礎包(CLDC 1.0):
java.io、java.lang、java.util(子集)
javax.microedition.io(通用連接框架 GCF)
- CLDC 1.1 新增:
java.lang.ref(弱引用支援,利於快取實現)
三、MIDP:配置檔層的應用模型
Mobile Information Device Profile
- 定位:建構在 CLDC 之上,定義完整應用程式模型
- 核心子集:
- 應用生命週期(MIDlet 抽象類:
startApp/pauseApp/destroyApp)
- 用戶介面(高階
Screen/Form、低階 Canvas/Graphics)
- 資料管理(RMS 持久化、HTTP/HTTPS/HTTPS/ Socket 連接)
- 平台組合:J2ME = 1 個 CLDC + 1~多個 Profile(MIDP、PDAP、DoJa 等)
關係圖譜總結
J2ME 平台
├── CLDC (配置 Configuration)
│ ├── KVM
│ └── 核心類庫子集
└── Profile (配置檔) - 針對垂直領域
├── MIDP (行動資訊裝置) ← 本文重點
├── PDAP (個人數位助理)
└── DoJa (日本 NTT DoCoMo 專用)
結語:理解約束,才能超越約束
J2ME 開發的本質是在極窄資源窗口內舞動。記住:Programme Memory 決定能否安裝,Heap 決定能否執行,Persistent Storage 決定資料能否留存;CLDC 提供跨裝置的執行底座,MIDP 給出應用開發的標準框架。吃透這三者,才是行動開發的真功夫。