J2ME (Java ME) 曾是功能機時代移動開發的主流平台,雖已退出歷史舞台,但其「受限設備配置 + 配置文件」的分層架構思想對嵌入式、物聯網 Java 開發仍有啟發。本文深度解析 J2ME 三大核心概念:內存劃分、CLDC 配置、MIDP 配置文件。
| 區域 | 用途 | 特點 | 優化建議 |
|---|---|---|---|
| Programme Memory | 存放 MIDlet Suite (JAR 包) 字節碼 | 廠商限制大小(如 64KB),超過無法安裝 | 使用 ProGuard 混淆壓縮,移除無用代碼、縮短符號名 |
| Heap (運行時堆) | 對象實例、局部變量、線程棧 | 極小(幾十~幾百 KB),易 OOM | 對象復用、避免大對象、及時釋放引用、使用基本類型代替包裝類 |
| Persistent Storage (RMS) | RecordStore 持久化存儲(類輕量級嵌入式 DB) | 掉電不丟,按記錄讀寫,無 SQL | 按主鍵索引查詢、批量寫入、定期備份 |
java.lang、java.util(集合僅 Hashtable/Vector)、java.io(無 NIO)、javax.microedition.io(GCF 通用連接框架)。java.lang.ref(弱引用)、浮點運算、雙精度支持。運行在 CLDC 之上,定義完整應用生命週期、UI、持久化、網絡協議:
startApp()、pauseApp()、destroyApp() 由 AMS (Application Management Software) 調度。Form、List、TextBox、Alert 等跨設備自適應組件。Canvas、Graphics 像素級繪製、鍵盤/指針事件,遊戲引擎基石。Connector.open(url),支援 HTTP、HTTPS、Socket、Datagram、Comm 等協議。| 組合 | 典型設備 | 關鍵特性 |
|---|---|---|
| CLDC 1.0 + MIDP 1.0 | 早期功能機 (Nokia S40 早期) | 無浮點、無弱引用、Canvas 基礎繪圖 |
| CLDC 1.1 + MIDP 2.0 | 主流功能機、早期智能機 | 浮點、HTTPS、推送註冊、多媒體 API (MMAPI)、遊戲 API (GameCanvas) |
| CLDC 1.1 + MIDP 3.0 (JSR 271) | 高端功能機、嵌入式模組 | 多任務、豐富 UI、SQLite、Web Services、完整網絡協議棧 |