許多開發者從 J2SE 入門,習慣了完整的 JDK 類別庫與 Swing/AWT 圖形介面,轉向 J2ME 時發現:類別被大幅精簡、沒有 main() 入口、UI 模型完全不同、甚至連 float 運算在 CLDC 1.0 都不支援。本文整理「必學核心」、「可略過項目」、「平台限制」、「跨平台陷阱」與「職涯出路」,助你少走彎路。
| 領域 | 必學項目 | 備註 |
|---|---|---|
| 語法基礎 | 基本型別、關鍵字、運算子、流程控制 | 與 J2SE 相同 |
| 物件導向 | 類別/物件、繼承、多型、介面、多型 | 核心設計原則不變 |
| 例外處理 | try-catch-finally、throw/throws、自訂例外 | 資源釋放 (finally 關閉連線) 極重要 |
| 多執行緒 | Thread/Runnable、synchronized、wait/notify | 網路、畫面重繪、遊戲迴圈皆需背景執行緒 |
javac/java 指令操作 → 改用 WTK/SDK 的建置腳本或 Ant/Maven。java.lang.*、java.io.*、java.util.* 子集。javax.microedition.lcdui (高階 UI) 與 Canvas (低階繪圖)。建議:直接研讀 MIDP 2.0 / CLDC 1.1 官方 API 文件**,別拿 J2SE 書籍硬套。
| 阻礙 | 說明 | 對策 |
|---|---|---|
| 螢幕尺寸碎片化 | 96×65 ~ 640×200 皆有,遊戲需自適應佈局 | 採用相對座標、可縮放 Sprite、多套解析度素材包 |
| 廠商擴充 API 不統一 | Nokia UI、Siemens API、Moto API 互不相容 | 核心邏輯用標準 API,平台特有功能用介面隔離 + 工廠模式 |
| 實作 Bug 差異 | 如 Nokia 7650 雙緩衝失效、部分裝置 drawImage 透明度錯誤 | 建立「裝置相容性資料庫」,針對已知機型關閉特定功能 |
| 硬體資源上限 | Jar 上限 64 KB (S40)、Heap 210 KB、CPU 週期極少 | 程式碼混淆、資源壓縮、延遲載入、物件池複用 |
因此產生「移植工程師」這個職位:負責將基準版 (通常針對 S40) 移植至 S60、S80、Sony Ericsson 等平台。
| 職位 | 核心技能 | 典型產出 |
|---|---|---|
| 遊戲開發工程師 | Canvas 繪圖、Sprite 動畫、雙緩衝、執行緒迴圈、物理碰撞、網路對戰 (HTTP/Socket) | 動作、RPG、益智、大型線上手機遊戲 |
| 應用程式開發工程師 | 高階 UI (Form/List/TextBox)、RMS、HTTP/HTTPS、XML/JSON 解析、JSR-172 Web Service、JSR-75 PIM/FileConnection | 行動銀行、即時通訊、地圖導航、企業行動化 APP |
| 遊戲移植工程師 | 各平台解析度/按鍵/Heap/Jar 上限對照、廠商模擬器除錯、真機測試流程、自動化建置腳本 | 單一遊戲產出 10+ 版本套件 (S40/S60/UIQ/BREW 等) |
ProgressForm 或 Gauge。關鍵里程碑:能在 Eclipse/NetBeans 中建立 MIDlet 專案、設定多裝置建置目標、一鍵產出簽名後的 JAD/JAR,即具備專業開發環境。
J2ME 雖已非主流,但其「資源受限、沙箱隔離、跨平台抽象」的核心思維,完美對應今日 IoT 嵌入式 Java (Java ME Embedded)、Android 低階系統開發、WebAssembly 輕量化執行環境**。掌握 J2ME 開發精髓,等於掌握「在極限資源下寫出穩定、可維護程式」的通用能力。