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

J2ME WTK 開發環境完整配置指南:從 JDK 安裝到 MIDlet 打包部署

     編輯:J2ME

搭建標準化、可復現的 J2ME 開發環境是高效開發的前提。本文系統梳理 WTK (Wireless Toolkit) 全流程配置:JDK 選型、WTK 安裝、IDE 集成、項目結構、編譯預驗證、JAR/JAD 打包與 OTA 部署要點。

核心概念速覽

三層軟件架構

  1. 硬件層:手機設備
  2. 本地系統層:廠商 OS + 系統庫
  3. KVM 層:Java 運行環境
  4. CLDC 層:核心 API (java.*, javax.microedition.io)
  5. MIDP 層:GUI (lcdui)、RMS、網絡、PushRegistry 等

Windows 環境安裝步驟

  1. JDK 1.4.2 (必須,WTK 2.x 不支持 JDK 5+)
    安裝路徑示例:D:\j2sdk1.4.2
  2. IDE 選擇:
    • Forte for Java (Sun 官方,WTK 安裝時可選集成)
    • Eclipse + MTJ 插件 / JCreator / 純文本編輯器 + Ant
  3. WTK 2.2:
    下載 J2ME_wireless_toolkit-2_0-Windows.exe,安裝至 D:\wtk22,勾選 IDE 集成選項

MIDlet 開發基礎

核心 API 包

  • javax.microedition.midlet:MIDlet 抽象類、生命周期 (startApp/pauseApp/destroyApp)
  • javax.microedition.lcdui:高級 UI (Screen, Form, List, TextBox) + 低級 UI (Canvas, Graphics)
  • javax.microedition.rms:RecordStore 持久化存儲
  • javax.microedition.io:Generic Connection Framework (HTTP, Socket, Datagram, Comm)

HelloWorld MIDlet 模板


package com.example;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet {
    private Form form;
    public HelloMIDlet() {
        form = new Form("Hello");
        form.append("Hello J2ME World!");
    }
    protected void startApp() {
        Display.getDisplay(this).setCurrent(form);
    }
    protected void pauseApp() {}
    protected void destroyApp(boolean unconditional) {}
}

構建流程:編譯 → 預驗證 → 打包

命令行構建腳本 (build.bat 核心邏輯)


REM 1. 編譯 (覆蓋 bootclasspath 防止誤用 J2SE 類)
javac -bootclasspath "%J2ME_API%" -classpath "%J2ME_API%" -g:none -d classes src\*.java

REM 2. 預驗證 (CLDC 字節碼驗證器簡化版)
preverify -classpath "%J2ME_API%" -d output classes

REM 3. 複製資源文件 (圖片、屬性配置等)
copy res\*.* output

REM 4. 創建 JAR (含 Manifest)
jar cvfm MyApp.jar MANIFEST.MF -C output .

REM 5. (可選) 混淆優化
java -jar proguard.jar @config.pro

REM 6. 二次預驗證 (混淆後必須)
preverify -classpath "%J2ME_API%" -d finalJar MyApp.jar

REM 7. (可選) KZip 重壓縮縮減體積
7za x MyApp.jar -ozip & kzip /r MyApp_final.jar zip\*

JAD / Manifest 關鍵屬性

術語全稱角色
CLDCConnected Limited Device Configuration定義 JVM 子集與核心類庫 (java.lang/io/util 等)
MIDPMobile Information Device Profile提供 UI、持久化、網絡、應用生命周期 API
KVMK Virtual MachineCLDC 參考實現 JVM,針對受限設備優化
WTKWireless Toolkit預驗證器、模擟器、構建腳本、文檔的綜合工具包

KToolBar 圖形化構建

  1. 啟動 KToolBar → New Project → 項目名/主類名
  2. Settings 面板:
    Required/Optional/User Defined 標簽編輯屬性
    MIDlets 標簽管理套件內多 MIDlet
  3. Build → Create Package → 生成 bin/ 目錄下 .jar/.jad
  4. Run → 模擟器運行調試 (支持 DefaultColorPhone, DefaultGrayPhone 等皮膚)

OTA 部署注意事項

  • Web 服務器需配置 MIME:
    text/vnd.sun.j2me.app-descriptor jad
    application/java-archive jar
  • JAD 中 MIDlet-Jar-URL 必須為絕對 HTTP URL
  • 設備 AMS (Application Management Software) 會校驗 JAD 7 大必需屬性、JAR 大小、版本兼容性
  • 自定義屬性勿以 MIDlet- 開頭,讀取用 MIDlet.getAppProperty()

常見坑位避雷

  • JDK 版本不匹配:WTK 2.x 僅支持 JDK 1.4.x,高版本 javac 生成的類文件版本號過高導致預驗證失敗
  • Bootclasspath 缺失:編譯時未指定 -bootclasspath 引入 J2SE 核心類 (如 Collections) 導致運行時 NoClassDefFoundError
  • 混淆後未二次預驗證:ProGuard 修改字節碼結構,必須再次 preverify
  • JAR 體積超限:部分設備限制 64KB/128KB,需啟用 KZip/7za 深度壓縮

建立標準化構建腳本 (Ant/Maven/Gradle 插件) 並納入版本控制,可消除「在我機器上能跑」的環境差異,實現持續集成與自動化發布。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
屬性ManifestJAD說明
MIDlet-Name必需必需應用套件名稱
MIDlet-Version必需必需版本號 (如 1.0.0)
MIDlet-Vendor必需必需開發商
MIDlet-1必需必需主 MIDlet: 名稱, 圖標, 類名
MIDlet-Jar-URL無必需JAR 下載地址 (OTA 關鍵)
MIDlet-Jar-Size無必需JAR 字節大小 (OTA 校驗)
MicroEdition-Profile必需必需如 MIDP-2.0
MicroEdition-Configuration必需必需如 CLDC-1.1