現代視角重審 Java ME (舊稱 J2ME) 架構:Configuration/Profile/Optional Packages 三層組合模型、主流開發工具鏈 (WTK/NetBeans/Eclipse/廠商 SDK) 選型指南。
一、Java ME 定位與演進
- Java 三大版本:Java SE (桌面/伺服器)、Java EE (企業級)、Java ME (嵌入式/行動/物聯網)
- 皆經 JCP (Java Community Process) 標準化
- 最廣泛應用:遊戲軟體 (低門檻、跨裝置、工具鏈成熟)
- 潛在領域:工業控制、車載系統、智慧家電、醫療裝置、物聯網閘道
二、三層架構模型
1. Configuration (縱向:硬體能力基線)
| CLDC | CDC |
| 記憶體 | 128KB~512KB | >512KB |
| 處理器 | 16/32-bit 低頻 | 32/64-bit |
| 電源 | 電池、間歇網路 | 外接電源、持續網路 |
| 虛擬機 | KVM | CVM |
| 核心類庫 | java.lang/io/util 精簡 + GCF | J2SE 1.3 子集 + 完整 CLDC |
| 典型裝置 | 功能機、早期智慧手機、PDA、傳感器節點 | 機頂盒、車載、工業控制器、智慧家電中樞 |
2. Profile (橫向:垂直領域功能集)
| Profile | 基礎 Config | 核心功能 |
| MIDP (Mobile Information Device Profile) | CLDC | UI (高/低階)、RMS、HTTP/HTTPS、Timer、GameCanvas、PushRegistry |
| IMP (Information Module Profile) | CLDC | 無使用者介面的資訊模組 (自動售貨機、追蹤器) |
| Foundation Profile | CDC | 完整網路堆疊、安全性、無 UI |
| Personal Basis Profile | CDC | Foundation + AWT 輕量 UI |
| Personal Profile | CDC | PBP + 完整 AWT、Applet、Swing 子集 |
3. Optional Packages (獨立模組化擴展)
- JSR 75: PDA Optional Packages (FileConnection, PIM API - 通訊錄/行程/待辦)
- JSR 82: Bluetooth API (L2CAP, RFCOMM, OBEX, Service Discovery)
- JSR 135: MMAPI (Mobile Media API - 音訊/視訊播錄、MIDI、攝影)
- JSR 172: Web Services (JAX-RPC, SAAJ - SOAP/XML-RPC 客戶端)
- JSR 179: Location API (GPS/基地台/Wi-Fi 定位)
- JSR 184: M3G (Mobile 3D Graphics API)
- JSR 205: WMA 2.0 (Wireless Messaging API - 簡訊/多媒體訊息收發)
- JSR 211: CHAPI (Content Handler API - 檔案關聯啟動)
三、開發工具鏈選型指南
| 工具 | 定位 | 優點 | 缺點 | 適用階段 |
| Sun Java Wireless Toolkit (WTK) | 官方參考實作 | 免費、標準相容、輕量、含模擬器/預驗證/簽名工具 | 無程式碼編輯器、UI 簡陋 | 入門教學、CI/CD 自動化建置、標準相容性測試 |
| NetBeans Mobility Pack | 整合式 IDE | 視覺化 MIDlet 流程設計、視覺化 MIDlet 流程設計、專案範本、整合 WTK、專案範本、整合 WTK | 舊版本 (4.x/5.x) 已停更 | 全生命週期開發 (編碼/除錯/封裝/部署) |
| EclipseME / EclipseMTJ | Eclipse 外掛 | 免費開源、整合 Eclipse 生態、支援多種建置工具 | 設定複雜、穩定性視版本而定 | Eclipse 忠實用戶、大型專案 |
| Nokia SDK / Sony Ericsson SDK | 廠商專屬 | 專屬模擬器 (真實皮膚/按鍵)、擴展 API (Nokia UI, UI Enhancement)、效能分析工具 | 綁定特定廠商、安裝龐大 | 針對特定裝置優化、使用擴展 API 開發 |
四、現代開發建議
- **起步**:JDK 8+ + NetBeans 8.2 (最後支援 Mobility 的版本) 或 Eclipse + EclipseMTJ
- **建置自動化**:Ant/Maven + WTK
wtkbuild / wtkpackage 指令
- **測試矩陣**:WTK 預設模擬器 + 目標廠商 SDK 模擬器 + **至少兩款實體裝置**
- **程式碼品質**:Checkstyle + PMD + ProGuard (混淆/壓縮/優化)
- **遺產維護**:既有 J2ME 專案建議漸進式遷移至 Android/iOS/HTML5,新專案慎重評估 Java ME 適用性