許多初學者從 J2SE 書籍入手,卻不知 J2ME 是精簡子集。以下明確劃分:
javac/java 命令細節(WTK/IDE 自動化構建)javax.microedition.* 官方文檔)javax.microedition.lcdui.*)雖具備 JVM 跨平台基因,實際表現差強人意:
| 痛點 | 說明 | 影響 |
|---|---|---|
| 螢幕尺寸碎片化 | 96x65 ~ 320x240+ 多種解析度 | 低級 UI (Canvas) 遊戲需多套資源/邏輯適配 |
| 廠商擴展 API 不統一 | Nokia UI API、Siemens API、Moto API 互不相容 | 使用擴展功能即綁定特定品牌/機型 |
| 平台 Bug 差異 | Nokia 7650 雙緩衝 Bug、S40 記憶體限制等 | 需機型特定 workaround,產生「移植工程師」崗位 |
| 效能天花板 | S40 最大 JAR 64KB、堆 210KB | 嚴格控制資源體積與記憶體佔用 |
結果:遊戲發布必附「支援機型列表」,催生專職移植工程師角色。
public class MyMIDlet extends MIDlet {
protected void startApp() { /* 應用啟動/恢復前台 */ }
protected void pauseApp() { /* 應用進入後台/暫停 */ }
protected void destroyApp(boolean unconditional) { /* 應用銷毀/退出 */ }
}
系統自動回調,開發者實現業務邏輯。
| 高級 UI (High-level) | 低級 UI (Low-level/Canvas) |
|---|---|
| Form, List, TextBox, Alert, ChoiceGroup | Canvas, Graphics, GameCanvas |
| 系統自動佈局/渲染,跨機型適應性強 | 開發者完全控制像素繪製、按鍵事件、動畫迴圈 |
| 適用:表單、選單、設定、資訊展示 | 適用:遊戲、自訂圖表、特效動畫 |
| JSR | 功能領域 |
|---|---|
| 75 | PIM (通訊錄/行程) / FileConnection |
| 82 | Bluetooth |
| 118 | MIDP 2.0 核心 |
| 120 | WMA (無線訊息:SMS/MMS/CBS) |
| 135 | MMAPI (多媒體:音訊/視訊/錄製/播放) |
| 172 | Web Services (XML/RPC/SOAP) |
| 179 | Location API (GPS/基站定位) |
| 184 | M3G (Mobile 3D Graphics) |
| 205 | WMA 2.0 |
| 211 | CHAPI (內容處理器) |
| 234 | AMMS (進階多媒體) |
J2ME 雖已退出主流舞臺(Android/iOS 統治移動端),但其「受限環境下的極致優化」工程思維——嚴格記憶體預算、像素級繪圖控制、跨平台適配策略、沙箱安全模型——對嵌入式開發、物聯網裝置編程、遊戲引擎底層優化仍具極高參考價值。初學者建議以「理解約束下的工程權衡」為核心學習目標,而非單純追趕已過時的 API。