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

Java ME (J2ME) 無線開發入門教程:環境搭建與首個 MIDlet

     編輯:Java 程式設計入門

學習目標

掌握 J2ME (Java ME) 開發環境搭建、MIDlet 生命週期、模擬器測試、Servlet 伺服端協作,打造首個「行動裝置 ↔ 伺服器」雙端應用。

一、系統需求與工具準備

組件最低規格推薦規格 (含 Forte for Java)
CPU166 MHz300 MHz+
記憶體64 MB128 MB+
磁碟30 MB140 MB+
作業系統Linux / Solaris / Windows同左

必裝三件套

  1. J2SE SDK 1.3+:下載,安裝後將 `/bin` 加入 `PATH`。
  2. J2ME Wireless Toolkit (WTK):含預編譯器、模擬器、打包工具。獨立安裝或整合 Forte/NetBeans。
  3. 文字編輯器:Notepad、jEdit、Vim、Forte 內建編輯器皆可。

二、安裝驗證

# Windows 98 autoexec.bat 範例
PATH=%PATH%;C:\jdk1.3.1\bin

# 驗證
java -version
# 輸出範例: java version "1.3.1_01"

三、首個 MIDlet:HelloMIDlet

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet implements CommandListener {
    private Display display;
    private Form mainForm;
    private Command exitCmd, sendCmd;

    public HelloMIDlet() {
        display = Display.getDisplay(this);
        mainForm = new Form("Hello MIDlet");
        mainForm.append("Welcome to Java ME!");

        exitCmd = new Command("Exit", Command.EXIT, 1);
        sendCmd = new Command("Send", Command.SCREEN, 2);
        mainForm.addCommand(exitCmd);
        mainForm.addCommand(sendCmd);
        mainForm.setCommandListener(this);
    }

    protected void startApp() {
        display.setCurrent(mainForm);
    }

    protected void pauseApp() {}

    protected void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable d) {
        if (c == exitCmd) {
            notifyDestroyed();
        } else if (c == sendCmd) {
            // TODO: 實現 HTTP 連線 Servlet
            mainForm.append("\nConnecting to servlet...");
        }
    }
}

四、編譯、預驗證與打包 (WTK 命令列)

# 1. 建立專案目錄結構
mkdir -p HelloProject/src HelloProject/res

# 2. 複製源碼到 src/
# 3. 使用 WTK 建構
# Windows: \bin\ktoolbar.exe (圖形介面)
# Linux:   /bin/ktoolbar

# 或命令列批次建構 (WTK 2.x)
/bin/preverify -classpath /lib/midpapi.jar -d tmpclasses src/
jar cvf HelloMIDlet.jar -C tmpclasses . -C res .
# 產生 JAD 描述檔 (手寫或工具生成)

五、模擬器測試

  • WTK 模擬器提供預設手機皮膚 (DefaultColorPhone、MediaControlSkin 等)。
  • 執行 `Run` 即可在模擬器中啟動 MIDlet,測試按鍵、畫面轉換、網路連線。
  • 網路權限:簽名 MIDlet 或在模擬器安全策略中授權 `javax.microedition.io.Connector.http`。

六、Servlet 伺服端環境搭建 (Tomcat 5.x)

  1. 安裝 Tomcat,確保 `servlet-api.jar` 在 CLASSPATH。
  2. 編寫簡單 Servlet 接收 MIDlet HTTP POST:
public class DataServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        String data = req.getParameter("data");
        System.out.println("Received from MIDlet: " + data);
        resp.setContentType("text/plain");
        resp.getWriter().println("OK: " + data);
    }
}
  1. `web.xml` 映射 `/data`,部署至 `webapps/ROOT/WEB-INF/classes`。
  2. 啟動 Tomcat,驗證 `https://localhost:8080/data` 可訪問。

七、MIDlet 呼叫 Servlet (HttpConnection)

// 在 commandAction 中實現
new Thread(() -> {
    try {
        HttpConnection conn = (HttpConnection) Connector.open(
                "https://localhost:8080/data", Connector.READ_WRITE);
        conn.setRequestMethod(HttpConnection.POST);
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        String payload = "data=HelloFromMIDlet";
        OutputStream os = conn.openOutputStream();
        os.write(payload.getBytes("UTF-8"));
        os.close();

        InputStream is = conn.openInputStream();
        StringBuilder sb = new StringBuilder();
        int ch;
        while ((ch = is.read()) != -1) sb.append((char) ch);
        is.close();
        conn.close();

        // 回到事件執行緒更新 UI
        display.callSerially(() -> mainForm.append("\nServer: " + sb));
    } catch (Exception e) {
        e.printStackTrace();
    }
}).start();

八、常見問題與現代化建議

問題解決/替代
WTK 早已停止更新改用 Java ME SDK 8.3 (支援 CLDC 8 / MEEP 8) 或 MicroEJ 開發平台
功能機市場消失轉向 Android (Kotlin/Java)、iOS (Swift)、Flutter、React Native
舊系統維護保留 WTK 2.5.2 离線安裝包,虛擬機運行 Windows XP/7 進行維護編譯

教學價值:理解「受限環境下的生命週期管理」「無縫網路協議 (HTTP/HTTPS)」「MIDP/CLDC 配置檔概念」,為嵌入式 Java、物聯網邊緣運算打基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved