初學者常混淆「配置」、「概要文件」、「虛擬機」、「內存區」。本文用通俗語言、對比表格,徹底講清 J2ME 平台的基石概念。
| 分區 | 用途 | 大小典型值 | 管理方式 | 開發關注點 |
|---|---|---|---|---|
| Programme Memory | 存放 MIDlet Suite 的 JAR 文件(類、資源、清單) | 64 KB ~ 2 MB (視設備) | 安裝時寫入,不可運行時擴展 | 壓縮 JAR:混淆、移除無用資源、資源外置(OTA 下載) |
| Heap (運行時堆) | 對象實例、數組、局部變量引用 | 50 KB ~ 500 KB | GC 自動管理,極易 OOM | 對象復用、避免大數組、及時置 null、System.gc() 輔助 |
| Persistent Storage (RMS) | RecordStore 持久化數據(設置、高分、緩存) | 100 KB ~ 數 MB | 應用管理,RecordStore API 操作 | 序列化開銷、記錄碎片整理、敏感數據加密 |
口訣:JAR 進 Programme Memory,對象住 Heap,數據存 RMS。
| 維度 | CLDC (Connected Limited Device Configuration) | CDC (Connected Device Configuration) |
|---|---|---|
| 目標設備 | 手機、PDA、嵌入式控制器(內存 < 2MB、間歇網絡、電池供電) | 機頂盒、車載系統、高端 PDA(內存 > 2MB、持久網絡、外部供電) |
| 虛擬機 | KVM (Kilobyte VM),精簡、解釋執行、無 JIT | CVM (Compact VM) / 完整 JVM,支持 JIT、完整線程模型 |
| 核心庫 | java.lang、java.io、java.util、javax.microedition.io (子集) | 幾乎完整 J2SE 1.3/1.4 庫(除 AWT/Swing) |
| 浮點數 | CLDC 1.0 無 float/double;CLDC 1.1 支持 | 完整支持 |
| 版本 | 1.0 / 1.1 (JSR 139) | 1.0 / 1.1 (JSR 218) |
Configuration 定義「底座」,Profile 定義「能力」。
| Profile | 基於配置 | 核心 API | 典型應用 |
|---|---|---|---|
| MIDP (Mobile Information Device Profile) | CLDC | MIDlet 生命週期、LCDUI (高/低級 UI)、RMS、網絡 (GCF)、推送註冊 | 手機遊戲、工具、商業應用 |
| MIDP 2.0 (JSR 118) | CLDC 1.1 | + 安全域、HTTPS、WMA (SMS/MMS)、多媒體 (MMAPI)、遊戲 API、SVG (JSR 226) | 豐富媒體、安全交易 |
| Personal Basis Profile | CDC | AWT 軟量級、RMI、JDBC 子集 | 機頂盒、工業終端 |
| Personal Profile | CDC | 幾乎完整 AWT、Applet 支持 | 高端嵌入式 |
| RMI Profile | CDC | 完整 RMI-IIOP | 分布式嵌入式 |
J2ME Platform = Configuration (CLDC|CDC) + Profile(s) (MIDP|PBP|PP|...)
例子:
- 典型功能機:CLDC 1.1 + MIDP 2.0
- 早期黑白屏手機:CLDC 1.0 + MIDP 1.0
- 智能機頂盒:CDC 1.1 + Personal Basis Profile 1.1
J2ME 世界的「配置 + 概要文件」雙軌制,本質是對異構硬體能力的標準化切割。搞清 內存三分區、CLDC/CDC 差異、Profile 能力邊界,才能在選型、優化、移植時做正確決策。