首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 新手入門指南:架構、核心概念與開發流程

     編輯:J2ME

J2ME 新手入門:從架構理解到第一支 MIDlet

本文以新手視角重新梳理 J2ME 基礎架構,涵蓋 Configuration/Profile 概念、MIDlet 生命週期、JAR/JAD 封裝、核心 API 包與開發工具鏈選擇,並附上 Hello World 完整實作步驟。

1. Java 類庫體系

  • 核心類庫:java.* (J2SE 子集,功能精簡)
  • 擴充類庫:javax.* (含 javax.microedition.*)

2. Configuration 與 Profile

3. MIDlet 與 MIDlet Suite

  • MIDlet:可執行單元,繼承 javax.microedition.midlet.MIDlet,含類別與資源檔 (非 class)。
  • MIDlet Suite:多個 MIDlet 的集合 = 一個 MIDP 應用程式。通常一個 Suite 只含一個 MIDlet。部署單位為 Suite。

4. JAR 與 JAD

  • JAR:ZIP 格式,包含 class、資源檔、MANIFEST.MF (內部描述檔)。
  • JAD:文字檔,外部描述檔,記錄 Suite 資訊 (名稱、版本、廠商、MIDlet 清單、JAR URL/大小、權限、憑證)。
  • 編碼注意:描述檔/清單檔若含非 ASCII 字元,預設需 UTF-8 編碼 (MIDP for Palm 除外)。現代工具自動轉換中文為 UTF-8。

5. MIDP 應用程式基本存取

  • 同一 JAR 內的 class 可被所有 MIDlet 共用。
  • 資源檔透過 Class.getResourceAsStream("/path") 存取 (路徑以 / 開頭表 JAR 根目錄)。class 檔不可作為資源存取。
  • JAD/Manifest 屬性值:MIDlet.getAppProperty(key)。
  • 平台系統屬性:System.getProperty(key)。

6. 開發工具鏈推薦

  • J2ME Wireless Toolkit (WTK) + JDK + EditPlus/UltraEdit:免費、輕量、標準合規、適合入門到精通。「重劍無鋒,大巧不工」。
  • IBM VisualAge Micro Edition:介面複雜、非綠色、不推薦。
  • Metrowerks CodeWarrior:IDE 完善、類 Visual Studio、適合中階、收費 (30 天試用)。
  • Borland JBuilder + MobileSet:功能全但配置繁瑣。

7. 模擬器選擇

WTK 內建 6 種模擬器 (Default Color/Gray Phone, Minimum Phone, Motorola i85s, PalmOS, RIM Java Handle)。原則上針對目標裝置選擇對應模擬器,但 J2ME 跨平台特性使得結果基本一致。推薦 RIM Java Handle (螢幕大、視覺舒適),但勿忘實機螢幕尺寸差異。

8. Hello World 完整實作 (WTK 1.0.3)

  1. 啟動 KToolbar → New Project:Project Name: fancy, MIDlet Class: fancy.test.HelloWorld。
  2. 原始碼儲存於 apps/fancy/src/fancy/test/HelloWorld.java:
package fancy.test;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener {
    private Display display;
    private Form form;
    private Command exitCmd = new Command("Exit", Command.EXIT, 1);

    public HelloWorld() {
        display = Display.getDisplay(this); // 建構子取得 Display
    }

    public void startApp() {
        form = new Form("Hello World");
        form.append("Hello World!\n");
        form.addCommand(exitCmd);
        form.setCommandListener(this);
        display.setCurrent(form);
    }

    public void pauseApp() {
        display.setCurrent(null);
        form = null;
    }

    public void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable d) {
        if (c == exitCmd) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}
  1. 點擊 Build 編譯 → Run 執行模擬器。

9. 核心 API 包速查

  • javax.microedition.lcdui:UI (Command, Form, Canvas, List, Alert...)
  • javax.microedition.rms:記錄管理 (持久化)
  • javax.microedition.midlet:MIDlet 生命週期
  • javax.microedition.io:網路 (HttpConnection, SocketConnection...)
  • java.io.*, java.lang.*, java.util.*:核心精簡包

10. 中文顯示測試

模擬器通常正常顯示中文,實機可能出現亂碼 (編碼不匹配)。測試程式 Poem.java 以詩詞驗證中文渲染。

11. 系統屬性與記憶體查詢範例

  • System.getProperty("microedition.configuration") 等查詢平台資訊。
  • Runtime.getRuntime().totalMemory()/freeMemory() 監控記憶體。

12. List 選單元件用法

List list = new List("Choose URL", Choice.EXCLUSIVE); // 單選
list.append("www.pku.edu.cn", null); // 第二參數為 Image 圖示
list.addCommand(exitCmd);
list.setCommandListener(this);
display.setCurrent(list);

Choice.MULTIPLE 可實現多選清單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
層級名稱全稱說明
ConfigurationCLDCConnected Limited Device Configuration資源受限裝置 (手機、PDA),含 KVM、核心 java.lang/io/util、javax.microedition.io
ConfigurationCDCConnected Device Configuration資源較豐富裝置,含 CVM、完整 Java 2 核心子集
ProfileMIDPMobile Information Device Profile建構於 CLDC 之上,提供 UI (lcdui)、持久化 (rms)、生命週期 (midlet) 等行動裝置專用 API