搭建開發(fā)平臺―WTK
來自:J2MEDev yefeng17
本文主要講述J2ME新手最常使用的開發(fā)工具Wireless Toolkit(WTK)。從WTK的安裝、到MIDlet項目的創(chuàng)建、以及最后的打包發(fā)布,一步步帶領讀者進入MIDlet的開發(fā)世界!
1 什么是J2ME Wireless Toolkit
WTK 的全稱是Sun J2ME Wireless Toolkit ―― Sun的無線開發(fā)工具包。這一工具包的設計目的是為了幫助開發(fā)人員簡化j2me的開發(fā)過程。使用其中的工具可以開發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設備上運行的j2me 應用程序。該工具箱包含了完整的生成工具、實用程序以及設備仿真器。到本文寫作時為止可以獲取有四個版本,分別是1.0.4, 2.0, 2.1和2.2。每個版本都包括英語,日語,簡體中文,繁體中文4個語種包。
1.0.4版只能夠開發(fā)MIDP1.0 應用程序。
2.0版只能夠開發(fā)MIDP2.0 應用程序。
2.1版則可以同時開發(fā)MIDP1.0、 JTWI(CLDC 1.0, MIDP2.0, WMA1.1)可改用CLDC1.1或加入MMAPI1.1),自定義(自己隨機組合Configuration, Profile以及Optional Package)三種環(huán)境下的應用程序。
2.2版中,WTK全面的支持JTWI規(guī)范。具體的說,即MIDP 2.0, CLDC 1.1, WMA 2.0, MMAPI 1.1, Web Services (JSR 172), File and PIM APIs (JSR 75), Bluetooth and OBEX APIs (JSR 82), and 3D Graphics (JSR 184);同時您也可以使用該版本開發(fā)面向CLDC1.0 和MIDP1.0的應用程序。
系統(tǒng)要求上,WTK2.2至少需要50MB可用硬盤,128MB系統(tǒng)RAM和800MHZ Pentium III CPU。
你可以在sun的官方網(wǎng)站免費下載。
WTK2.2 下載鏈接:http://java.sun.com
WTK是Sun提供的一個開發(fā)工具包。目前各大手機廠商往往把WTK經(jīng)過自身的簡化與改裝,推出適合自身產(chǎn)品,如SonyEricsson,Nokia Developer’s suit等,都屬于此種類型;而通過JBuilder, Eclipse等IDE,J2ME開發(fā)包工具可以被綁定在這些集成開發(fā)環(huán)境中,進一步提高開發(fā)效率。
2 J2ME WTK的內(nèi)容和目錄結構
2.1 安裝過程
在說明WTK文件結構之前,讓我們首先把它安裝起來。
WTK的安裝程序與普通程序一樣簡單,只有一點需要注意,由于WTK自身并沒有附帶Java的運行環(huán)境JDK,所以,在WTK安裝之前你需要安裝自己的JDK(我們這里選用的是JDK1.4.2)。
WTK會首先自動檢測當前系統(tǒng)已有的Java虛擬機:

然后顯示出當前虛擬機所在路徑

您在確定無誤后,就可以繼續(xù)了,最后安裝成功后,您將得到一個包括多種實用工具的開發(fā)包。以下是安裝顯示的菜單項。

2.2 目錄結構
無論哪個版本的WTK都會包括以下幾個目錄:
appdb目錄: RMS數(shù)據(jù)庫信息
apps目錄: WTK自帶的demo程序
bin目錄: J2ME開發(fā)工具執(zhí)行文件
docs目錄: 各種幫助與說明文件
lib目錄: J2ME程序庫,Jar包與控制文件
session目錄:性能監(jiān)控保存信息
wtklib目錄: JWTK主程序與模擬器外觀
WTK是用來開發(fā)MIDP的,為了讓MIDlet可以順利編譯和執(zhí)行,WTK必須具有CLDC和MIDP的類庫,WTK可以幫助我們省去額外安裝調試這些類庫的時間。而不同版本的WTK包含的程序庫內(nèi)容是不一樣的,比如說2.0中包含了midpapi.jar, wma.jar, mmapi.jar,而在2.1中則變?yōu)榱薱ldcapi10. jar, cldcapi11.jar, midpapi10.jar, midpapi20.jar, wma.jar以及mmapi.jar;在2.2中,wma.jar又細分為wma11.jar, wma20.jar。如果您在開發(fā)中需要某個特定的jar包而當前的WTK版本又沒有時,您可以簡單把這個jar包拷貝如當前WTK的lib文件夾即可。
apps目錄中包括了許多Demo程序,為我們演示了J2ME的一些技術實例,這些往往是很好的學習材料。
3 使用J2ME WTK創(chuàng)建工程
3.1 建立新項目
下面讓我們用WTK來創(chuàng)建一個經(jīng)典的Hello World程序,看看這水有多深。
在WTK的程序列表中運行KToolbar,打開WTK主界面。WTK的標題菜單簡單明了的列出了這個工具包的可選功能。
單擊新建項目,鍵入新建的項目名和啟動MIDlet名,這里的項目是一個MIDlet套件,而MIDlet類名則是這個套件的入口,MIDlet文件名(也是Java文件的名字)。

產(chǎn)生項目以后,會出現(xiàn)項目的設置表,您可以選擇當前目標平臺,CLDC配置,以及要采用的MIDP可選包。再不需要某個庫文件時,請不要選中它,以減少最后程序大小。
另外,您還可以指定MIDlet的屬性,這些設置將成為JAD,即J2ME程序的描述信息文檔。我們的Hello World目前不需要其它的附加設置,于是采用默認,確定之后,控制臺信息提示建立成功。


WTK產(chǎn)生項目后,不同類型的資源有著相對固定的存放位置。Java源文件被放在apps目錄下\Hello World\src下,相關程序資源文件(圖片,音頻)放在\Hello World\res下,應用程序庫文件放在\Hello World\lib下,這在WTK中是必須注意的,即便是相對路徑,也必須是在該類型目錄下建立。
項目創(chuàng)建成功后,我們來創(chuàng)建一個MIDlet文件,MIDlet是J2ME項目文件的入口文件,也是必須的。在\Hello World\src目錄下創(chuàng)建HelloWorld.java,采用默認包,注意,此時創(chuàng)建的java程序必須是與我們在創(chuàng)建項目時鍵入的MIDlet類名一致。
在新創(chuàng)建的java文件中輸入代碼,下文是一個簡單的Form程序。
HelloWorld.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class HelloWorld extends MIDlet {
Display display;
public HelloWorld() {
super();
display = Display.getDisplay(this);
}
protected void startApp(){
Form form = new Form("Hello World!");
form.append("Welcome to J2ME world!");
display.setCurrent(form);
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0){
}
}
完成后保存java文件,單擊“生成”按鈕,由WTK為您進行編譯,如果有錯誤生成,則會在控制臺中提示。

根據(jù)提示信息對MIDlet文件進行修改,再重新生成,直到編譯成功。對編譯成功的程序,你可以從“設備”選項中選擇DefaultColorPhone,DefaultGrayPhone或者其它WTK自帶的設備模擬器,單擊按鈕可以看到彈出一個手機模擬器,顯示出我們的第一個Hello World程序,如果執(zhí)行有錯,依然會在控制臺中給出提示信息。

運行成功以后,在HelloWorld/bin目錄下,將會產(chǎn)生一個程序描述文檔JAD,它清楚的描述了當前MIDlet的名稱與版本,發(fā)行人,指定的JAR包名稱與大小,支持CLDC與MIDP版本等信息。在進階開發(fā)中,默認的聯(lián)網(wǎng)字符串,簽名私鑰等信息也可以保存在這個描述文檔中。
3.2 開啟舊項目
當我們下一次重新啟動WTK的時候,選擇打開項目,WTK會把自身apps目錄下的應用項目全部顯示出來,包括我們剛剛建立的Hello World,選擇“打開項目”后,就能夠對apps目錄下的MIDlet項目進行開發(fā)更改了。

4 執(zhí)行MIDlet、打包和混淆
4.1 執(zhí)行MIDlet
除了我們剛剛介紹的在KToolbar中執(zhí)行一個程序,我們還可以在程序組中直接選擇Run MIDP Application…, 這是就可以在彈出的對話框中選擇其它路徑中的JAD程序運行了


當我們直接選擇運行時,需要注意兩個問題:
1. JAD描述文件與其指定的JAR文件在同一個目錄下。
2. 運行目錄路徑中不要包含中文。
4.2 打包成JAR
KToolbar的生成功能只能幫我們將源代碼編譯并預先審核,并不會幫我們產(chǎn)生JAR文件,而我們?nèi)绻l(fā)布MIDP程序,除了JAD描述文件,JAR是必須的,這就需要打包。
在KToolbar選中項目 ―― 包 ―― 產(chǎn)生包,可以把整個程序,包括資源文件打包成JAR文件。形成的JAR保存在apps\HelloWorld\bin目錄下。

4.3 包混淆
在上面的操作中,我們看到,除了“產(chǎn)生包”,另外還有一個“產(chǎn)生混淆包”選項。所謂混淆,是為了防止別人反編譯后讀取源代碼,將程序(.class文件)進行混淆,經(jīng)過混淆的Java Byte Code可以增加別人反編譯的時間。
這里我們使用開源的ProGuard,關于混淆的詳細介紹和混淆工具的下載,見本教程的前面的章節(jié)。
把剛剛獲取的ProGuard解壓,在解壓目錄的lib子目錄中找到proguard.jar文件,將其拷貝到WTK安裝目錄的bin下,再執(zhí)行混淆包。這是我們將會發(fā)現(xiàn)apps\HelloWorld\bin下的JAR大小變小了,反編譯后的各個名稱也變得毫無意義了。

5 WTK中其它值得關注的功能
到這里,我們就如何用WTK創(chuàng)建,執(zhí)行,打包,混淆一個MIDP項目做了比較詳細的介紹。除了以上所說各點,WTK(2.2版)還提供諸多實用功能。這些都可以在編輯 ―― 偏好中找到。


例如,當我們需要監(jiān)視程序性能的時候,可以選中“啟用內(nèi)存監(jiān)視器”,在下一次模擬器執(zhí)行的時候,我們就可讀出程序運行時的內(nèi)存消耗均值,消耗峰值以及具體產(chǎn)生對象的個數(shù)和使用情況。
除了內(nèi)存監(jiān)視,我們還可以執(zhí)行網(wǎng)絡監(jiān)視,設定存儲區(qū)大小和堆棧大小,設定安全簽名和藍牙操作屬性,以盡可能模擬手機實際運行環(huán)境,這些功能在進階開發(fā)中都是非常實用的。
注意:
雖然WTK為我們提供了各種工具來模擬手機運行環(huán)境,但在實際開發(fā)中,由于受到手機硬件,網(wǎng)絡條件等諸多限制,MIDP的真實性能在不同機器上會出現(xiàn)不同的反應,與WTK中的表現(xiàn)可能差別更大。
從菜單中選擇“工具集”可以看到更多的實用工具,這些都是開發(fā)實用的j2me程序時會頻繁使用到的。介于本教程面向入門級讀者,所以這部分內(nèi)容請讀者自行研究.
