專案背景
作者分享一個基於 J2ME (MIDP 2.0/CLDC 1.1) 的 WAP 瀏覽器原型,採用 kXML 解析 WML,MVC 架構分離業務與 UI,支援多線程下載、Command 操作模式、可插拔 UI 組件。代碼可在 Eclipse + EclipseMe 直接運行,授權商業使用(需通知作者)。
核心架構
- 解析層:kXML 拉式解析器,將 WML 轉為二維表結構。
- 數據層:會話管理(Session ID 持久化)、緩存策略(記錄操作歷史、檢測服務端變更)。
- UI 層:自繪 Canvas 組件(按鈕、列表、輸入框)、皮膚主題、字體控制。
- 網絡層:多線程 HTTP/HTTPS 下載,預留 Proxy 圖片加載介面。
關鍵技術難點
- 解析與顯示同步:邊下載邊解析顯示(體驗好但複雜) vs 全量下載後渲染(實現易但延遲高)。
- 會話持久化:手機端儲存 SessionID,請求時攜帶,應對不支持 Cookie 的 WAP 閘道。
- 緩存失效判斷:基於 URL + 最後修改時間/ETag,決定是否重新下載。
- 低階 UI 重繪:Canvas
paint() 優化,避免閃爍與記憶體抖動。
截圖展示
主選單、WML 頁面渲染、皮膚切換效果:



開發心得
- 可組裝 UI 框架是基石,先行投入回報最高。
- kXML 文檔較少,需閱讀源碼掌握事件流。
- J2ME 記憶體極其有限,對象池、弱引用、及時
null 釋放是常態。
- 真機測試不可或缺,模擬器行為差異大(特別是網絡、文件系統、按鍵映射)。
源碼獲取
作者原文提供完整源碼下載鏈接(文中提及 UploadFiles/2007-1/18575526.zip),有興趣者可自行研究擴展。
結語
雖然 J2ME 已成歷史,但該專案展示的「受限環境下的全棧自研」思想——輕量解析器、自繪 UI、協議適配——對嵌入式、物聯網、輕量級客戶端開發仍具參考價值。