一句話定義 J2ME
J2ME (Java 2 Micro Edition) 是針對資源受限嵌入式設備 (手機、PDA、機頂盒、智能卡等) 定義的一組 Java 運行環境規範族群,核心採用「Configuration + Profile」雙層架構。
Configuration:設備硬件能力基線
| 配置 | 全稱 | 目標設備 | 典型內存 | CPU | 核心庫 | JVM | 浮點 |
| CLDC | Connected Limited Device Configuration | 手機、低端 PDA、頁碼機 | 160-512 KB | 16/32-bit | java.lang/io/util 子集 + javax.microedition.io | KVM | 1.0 無,1.1 有 |
| CDC | Connected Device Configuration | 高端 PDA、機頂盒、車載、工控 | 2 MB+ | 32-bit+ | 接近 J2SE 核心庫 | CVM | 完整支持 |
CLDC 1.0 vs 1.1 關鍵差異
- 浮點類型:1.0 無
float/double,1.1 完整支持
- Math 工具類:1.0 僅基本方法,1.1 完整
- 弱引用:1.1 新增
java.lang.ref.WeakReference
- 錯誤處理:1.1 完善
Error/Exception 體系
Profile:垂直領域 API 標準
| Profile | 全稱 | 基礎 Configuration | 核心功能 | 典型設備 |
| MIDP | Mobile Information Device Profile | CLDC | UI (Form/List/Canvas)、RMS、HTTP/HTTPS、Game API、多媒體子集、推送、安全域 | Java 手機 (主流) |
| PBP | Personal Basis Profile | CDC | AWT 子集、輕量 UI | 高端 PDA、機頂盒 |
| PP | Personal Profile | CDC | AWT + Swing 子集、豐富 UI | 高端 PDA、嵌入式桌面 |
| IMP | Information Module Profile | CLDC | 無 UI、網絡管理、工業模塊 | 路由器、電表、傳感器 |
MIDP 1.0 → 2.0 關鍵增強
- Game API:
Sprite、Layer、GameCanvas、Graphics 雙緩衝
- 多媒體:
Player、VolumeControl、ToneControl (MMAPI 子集)
- 推送註冊:
PushRegistry 支持 Socket/HTTP/SMS 喚醒
- 安全模型:Trusted/Untrusted 域、權限聲明、數字簽名
- UI 增強:
CustomItem、PopUp、AlertType、鍵盤鎖定
可選包:按需擴展能力矩陣
| JSR | API 名稱 | 功能域 | 依賴 | 典型應用 |
| 135 | MMAPI | 多媒體 (音視頻錄製/播放、MIDI、音效、攝像頭) | CLDC/MIDP | 音樂播放器、視頻播放、錄音、鈴聲 |
| 184 | M3G | 3D 圖形 (模型加載、動畫、光照、材質) | CLDC/MIDP | 3D 遊戲、地圖導航、產品展示 |
| 120 | WMA | 無線消息 (SMS、CBS、MMS 收發) | CLDC/MIDP | 短信應用、WAP Push、彩信客戶端 |
| 75 | PIM / FileConnection | 個人信息管理 (聯繫人/日曆/待辦) + 文件系統訪問 | CLDC/MIDP | 通訊錄同步、文件管理器、備忘錄 |
| 82 | Bluetooth | 藍牙通信 (L2CAP、RFCOMM、OBEX、服務發現) | CLDC/MIDP | 文件傳輸、藍牙打印、外設控制 |
| 172 | Web Services | JAX-RPC Stub、WSDL 解析、SOAP/HTTP 調用 | CLDC/MIDP | 企業級移動客戶端、ERP/CRM 移動化 |
| 179 | Location | 定位 (GPS、Cell-ID、WiFi 定位、地標) | CLDC/MIDP | 導航、LBS、軌跡記錄、查找附近 |
| 211 | CHAPI | 智能卡/安全元件訪問 (APDU、卡管理) | CLDC/MIDP | 移動支付、票務、身份認證 |
| 177 | SATSA | 安全 API (AAPDU、CRYPTO、PKI、存儲) | CLDC/MIDP | 數字簽名、加密存儲、DRM |
選型決策樹:根據目標設備選擇技術棧
目標設備類型
│
├─ 普通功能機 / 早期智能機 (內存 < 2MB, 無觸屏)
│ → CLDC 1.1 + MIDP 2.0
│ → 按需加可選包:MMAPI(音視頻)、WMA(短信)、PIM(通訊錄)、Bluetooth
│
├─ 高端 PDA / 機頂盒 / 車載 (內存 ≥ 2MB, 有觸屏/鍵盤)
│ → CDC 1.1 + PBP 1.1 / PP 1.1
│ → 可用 AWT/Swing 開發豐富 UI
│
├─ 工業模塊 / 無屏設備 (路由器、電表、傳感器)
│ → CLDC 1.1 + IMP-NG (JSR 228)
│ → 無 UI,專注網絡管理、數據採集
│
└─ 智能卡 / SIM 卡 / 安全元件
→ Java Card (獨立平台,非 J2ME 子集)
→ 极精簡 API,專注安全邏輯、APDU 通信
開發環境檢查清單
- 確認目標設備支持的 CLDC/MIDP 版本 (廠商開發文檔或
System.getProperty() 運行時檢測)
- 確認必需可選包是否預裝 (如 MMAPI、WMA、JSR 75)
- JAR 大小限制 (舊機型 30-64KB,新機型 100KB-1MB+)
- 堆內存限制 (影響圖片緩存、數據結構設計)
- 線程數限制 (影響網絡並發、後台任務設計)
- 簽名需求:訪問受限 API (網絡、文件、PIM、短信) 必須簽名獲取 Trusted 域
總結
J2ME 不是單一技術,而是Configuration (硬件基線) + Profile (垂直 API) + 可選包 (橫向擴展) 的組合。明確目標設備能力 → 選擇最小充分技術棧 → 按需引入可選包,是高效交付、最大化兼容性的核心策略。