J2ME (Java 2 Micro Edition) 雖已退出主流舞臺,但其受限環境下的軟件工程思想(生命週期管理、事件驅動、資源極致優化、沙箱安全)對嵌入式 Java、物聯網模組、智能卡開發仍具指導意義。本文系統梳理 J2ME 開發者必須掌握的七大核心技術領域。
基於 javax.microedition.lcdui 的設備自適應組件:
Form (容器)、List (選單)、TextBox (文本編輯)、Alert (提示/確認/錯誤)StringItem、TextField、ChoiceGroup (單/多選)、DateField、Gauge (進度/交互)、ImageItem、CustomItem (自定義)CommandListener (屏幕級命令)、ItemStateListener (項目值變化)、ItemCommandListener (項目專用命令)應用場景:登錄/註冊表單、設置頁面、幫助信息、列表選擇、文本輸入密集型業務流程。
像素級繪圖與原始輸入事件,核心類 Canvas、Graphics:
paint(Graphics g) 回調中繪製,系統隱式雙緩衝,repaint(x,y,w,h) 觸發局部重繪keyPressed/Released/Repeated(int keyCode)、pointerPressed/Released/Dragged(int x, int y)getGameAction(keyCode) → UP/DOWN/LEFT/RIGHT/FIRE 統一遊戲動作getWidth()/getHeight() 動態佈局,Font.getHeight()/stringWidth() 文本度量應用場景:遊戲主場景、自定義圖表、電子簽名、地圖渲染、特殊交互控件。
設備級持久化存儲,無文件系統概念,類似簡易表:
RecordStore.openRecordStore(name, createIfNecessary)、addRecord(byte[])、setRecord(id, byte[])、getRecord(id, buffer, offset)、enumerate(filter, comparator, keepUpdated)、deleteRecord(id)、closeRecordStore()byte[],開發者自行序列化/反序列化 (DataOutputStream/InputStream)RecordStoreHelper 類,實現對象toByteArray/fromByteArray、索引緩存、異常重試com.nokia.mid.sound.Sound、Siemens com.siemens.mp.game.Audio)javax.microedition.media.Player、Manager.createPlayer(inputStream, "audio/mpeg")、player.start/stop/setLoopCountVolumeControl 接口Connector.open(url) 返回 Connection 子接口HttpConnection (GET/POST/HEAD、請求頭/響應頭、流式收發)、HttpsConnection (MIDP 2.0 + JSSE)SocketConnection (客戶端)、ServerSocketConnection (服務端,罕見支持)、DatagramConnection (UDP)new Thread(runnable).start()、Timer/TimerTask 定時任務、Thread.sleep/wait/notify 同步synchronized、volatile、ThreadLocal、Vector/Hashtable (同步集合)Display.callSerially(Runnable) 將 UI 更新任務排隊到事件線程執行(類似 SwingUtilities.invokeLater)MessageConnection conn = (MessageConnection)Connector.open("sms://+8613800000000")TextMessage msg = (TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE); msg.setPayloadText(content); conn.send(msg);MessageListener 接口 + PushRegistry.registerConnection("sms://:5000", MIDletClass, "*") 實現短信喚醒啟動 MIDlet| 廠商 | 代表性擴展 API | 典型能力 |
|---|---|---|
| Nokia (Series 40/60) | com.nokia.mid.* | 通訊錄讀寫、日曆、圖片編輯、藍牙、定位、攝像頭、文件系統 (JSR-75) |
| Siemens | com.siemens.mp.* | 文件系統、聲音錄製、震動、屏幕截圖、鍵盤燈控制 |
| Sony Ericsson | com.sonyericsson.* | 多媒體播放、藍牙、紅外、文件管理 |
| Motorola | com.motorola.* | iDEN 網絡特有、PTT 對講、GPS |
使用策略:核心邏輯用標準 API,差異化功能用反射動態加載廠商擴展,降級到標準實現。
J2ME 七大核心技術(高級/低級 UI、RMS、音頻、網絡、多線程、短信)構成了受限 Java 環境下的完整應用開發能力。雖然平台已謝幕,但資源約束下的架構權衡、事件驅動模型、沙箱安全、二進制協議設計、極致優化技巧 是可遷移的寶貴財富,值得每位嵌入式/移動開發者深入體會。