?? 開(kāi)發(fā)環(huán)境搭建wtk.txt
字號(hào):
J2ME開(kāi)發(fā)環(huán)境搭建 之 Sun WTK
什么是J2ME Wireless Toolkit
WTK 的全稱是Sun J2ME Wireless Toolkit —— Sun的無(wú)線開(kāi)發(fā)工具包,使用其中的工具可以開(kāi)發(fā)在與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設(shè)備上運(yùn)行的 Java 應(yīng)用程序。該工具箱包含生成工具、實(shí)用程序以及設(shè)備仿真器。到本文寫作時(shí)為止可以獲取有四個(gè)版本,分別是1.0.4, 2.0, 2.1和2.2。每個(gè)版本都包括英語(yǔ),日語(yǔ),簡(jiǎn)體中文,繁體中文4個(gè)語(yǔ)種包。
1.0.4版只能夠開(kāi)發(fā)MIDP1.0 應(yīng)用程序。
2.0版只能夠開(kāi)發(fā)MIDP2.0 應(yīng)用程序。
2.1版則可以同時(shí)開(kāi)發(fā)MIDP1.0, JTWI(CLDC 1.0, MIDP2.0, WMA1.1, 可改用CLDC1.1或加入MMAPI1.1),自定義(自己隨機(jī)組合Configuration, Profile以及Optional Package)三種環(huán)境。
2.2版中,WTK支持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);同時(shí)您也可以使用該版開(kāi)發(fā)面向CLDC1.0 和MIDP1.0的應(yīng)用程序。
系統(tǒng)要求上,WTK2.2至少需要50MB可用硬盤,128MB系統(tǒng)RAM和800MHZ Pentium III CPU。
你可以在sun的官方網(wǎng)站免費(fèi)下載。
WTK2.2 下載鏈接(需要先登陸):
http://sdlcweb3b.sun.com/ECom/EComActionServlet;jsessionid=FE979CDFE94DE539C8DE6CF74FED7878
第二節(jié) J2ME WTK的內(nèi)容和文件結(jié)構(gòu)
在說(shuō)明WTK文件結(jié)構(gòu)之前,讓我們首先把它安裝起來(lái)。
WTK的安裝程序與普通程序一樣簡(jiǎn)單,只有一點(diǎn)需要注意,由于WTK自身并沒(méi)有附帶Java的運(yùn)行環(huán)境JDK,所以,在WTK安裝之前你需要安裝自己的JDK(筆者這里選用的是JDK1.4.2)。
WTK會(huì)首先自動(dòng)檢測(cè)當(dāng)前系統(tǒng)已有的Java虛擬機(jī):
然后顯示出當(dāng)前虛擬機(jī)所在路徑
您在確定無(wú)誤后,就可以繼續(xù)了,最后安裝成功后,您將得到一個(gè)包括多種實(shí)用工具的開(kāi)發(fā)包。
無(wú)論哪個(gè)版本的WTK都會(huì)包括以下幾個(gè)目錄:
appdb目錄: RMS數(shù)據(jù)庫(kù)信息
apps目錄: WTK自帶的demo程序
bin目錄: J2ME開(kāi)發(fā)工具執(zhí)行文件
docs目錄: 各種幫助與說(shuō)明文件
lib目錄: J2ME程序庫(kù),Jar包與控制文件
session目錄:性能監(jiān)控保存信息
wtklib目錄: JWTK主程序與模擬器外觀
WTK是用來(lái)開(kāi)發(fā)MIDP的,為了讓MIDlet可以順利編譯和執(zhí)行,WTK必須具有CLDC和MIDP的類庫(kù),WTK可以幫助我們省去額外安裝調(diào)試這些類庫(kù)的時(shí)間。而不同版本的WTK包含的程序庫(kù)內(nèi)容是不一樣的,比如說(shuō)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又細(xì)分為wma11.jar, wma20.jar。如果您在開(kāi)發(fā)中需要某個(gè)特定的jar包而當(dāng)前的WTK版本又沒(méi)有時(shí),您可以簡(jiǎn)單把這個(gè)jar包拷貝如當(dāng)前WTK的lib文件夾即可。
apps目錄中包括了許多Demo程序,為我們演示了J2ME的一些技術(shù)實(shí)例,這些往往是很好的學(xué)習(xí)材料。
第三節(jié)使用J2ME WTK創(chuàng)建工程
建立新項(xiàng)目
下面讓我們用WTK來(lái)創(chuàng)建一個(gè)經(jīng)典的Hello World程序,看看這水有多深。
在WTK的程序列表中運(yùn)行KToolbar,打開(kāi)WTK主界面。WTK的標(biāo)題菜單簡(jiǎn)單明了的列出了這個(gè)工具包的可選功能。
單擊新建項(xiàng)目,鍵入新建的項(xiàng)目名和啟動(dòng)MIDlet名,這里的項(xiàng)目是一個(gè)MIDlet套間,一般情況下是與MIDlet文件(Java文件)同名。
產(chǎn)生項(xiàng)目以后,會(huì)出現(xiàn)項(xiàng)目的設(shè)置表,您可以選擇當(dāng)前目標(biāo)平臺(tái),CLDC配置,以及要采用的MIDP可選包。再不需要某個(gè)庫(kù)文件時(shí),請(qǐng)不要選中它,以減少最后程序大小。
另外,您還可以指定MIDlet的屬性,這些設(shè)置將成為JAD,即J2ME程序的描述信息文檔。
我們的Hello World目前不需要其它的附加設(shè)置,于是采用默認(rèn),確定之后,控制臺(tái)信息提示建立成功。
WTK產(chǎn)生項(xiàng)目后,不同類型的資源有著相對(duì)固定的存放位置。Java源文件被放在apps目錄下\Hello World\src下,相關(guān)程序資源文件(圖片,音頻)放在\Hello World\res下,應(yīng)用程序庫(kù)文件放在\Hello World\lib下,這在WTK中是必須注意的,即便是相對(duì)路徑,也必須是在該類型目錄下建立。
項(xiàng)目創(chuàng)建成功后,我們來(lái)創(chuàng)建一個(gè)MIDlet文件,MIDlet是J2ME項(xiàng)目文件的入口文件,也是必須的。在\Hello World\src目錄下創(chuàng)建HelloWorld.java,采用默認(rèn)包,注意,此時(shí)創(chuàng)建的java程序必須是與我們?cè)趧?chuàng)建項(xiàng)目時(shí)鍵入的MIDlet類名一致。
在新創(chuàng)建的java文件中輸入代碼,下文是一個(gè)簡(jiǎn)單的歡迎Form程序。
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的生成鍵,由WTK為您進(jìn)行編譯,如果有錯(cuò)誤生成,則會(huì)在控制臺(tái)中提示。
根據(jù)提示信息對(duì)MIDlet文件進(jìn)行修改,再重新生成,直到編譯成功。對(duì)編譯成功的程序,執(zhí)行運(yùn)行,可以看到彈出一個(gè)手機(jī)模擬器,顯示出我們的第一個(gè)Hello World程序,如果執(zhí)行有錯(cuò),依然會(huì)在控制臺(tái)中給出提示信息。
開(kāi)啟舊項(xiàng)目
當(dāng)我們下一次重新啟動(dòng)WTK的時(shí)候,選擇打開(kāi)項(xiàng)目,WTK會(huì)把a(bǔ)pps目錄下的應(yīng)用項(xiàng)目全部顯示出來(lái),包括我們剛剛建立的Hello World,選擇載入后,就能夠重新運(yùn)行了。
第四節(jié)執(zhí)行MIDlet,打包和混淆
執(zhí)行MIDlet
除了我們剛剛介紹的在KToolbar中執(zhí)行一個(gè)程序,我們還可以在程序組中直接選擇Run MIDP Application…, 這是就可以在彈出的對(duì)話框中選擇其它路徑中的JAD程序運(yùn)行了。
當(dāng)我們直接選擇運(yùn)行時(shí),需要注意兩個(gè)問(wèn)題:
1. JAD描述文件與其指定的JAR檔案文件在同一個(gè)目錄下。
2. 運(yùn)行目錄路徑中不要包含中文。
打包成JAR
KToolbar的生成功能只能幫我們將源代碼編譯并預(yù)先審核,并不會(huì)幫我們產(chǎn)生JAR文件,而我們?nèi)绻l(fā)布MIDP程序,除了JAD描述文件,JAR是必須的,這就需要打包。
在KToolbar選中項(xiàng)目 —— 包 —— 產(chǎn)生包,可以把整個(gè)程序,包括資源文件打包成JAR文件。形成的JAR保存在apps\HelloWorld\bin目錄下。
包混淆
在上面的操作中,我們看到,除了“產(chǎn)生包”,另外還有一個(gè)“產(chǎn)生混淆包”選項(xiàng)。所謂混淆,是為了防止別人反編譯后讀取源代碼,將程序(.class文件)進(jìn)行混淆,經(jīng)過(guò)混淆的Java Byte Code可以增加別人反編譯的時(shí)間,即便反編譯后,也會(huì)因?yàn)轭惷兓蓻](méi)有意義的符號(hào)而增加理解源程序的難度。更進(jìn)一步,由于混淆大大縮短的源程序中類,成員變量以及方法名稱,導(dǎo)致生成的JAR體積變小!
目前一般比較常用的混淆器是兩款開(kāi)源產(chǎn)品:ProGuard和RetroGuard,本文采用前者作為示例,你可以在http://proguard.sourceforge.net/ 上獲取。
把剛剛獲取的ProGuard解壓,在解壓目錄的lib子目錄中找到proguard.jar文件,將其拷貝到WTK安裝目錄的bin下,再執(zhí)行混淆包。這是我們將會(huì)發(fā)現(xiàn)apps\HelloWorld\bin下的JAR大小變小了,反編譯后的各個(gè)名稱也變得毫無(wú)意義了。
第五節(jié) WTK中其它值得關(guān)注的功能
到這里,我們就如何用WTK創(chuàng)建,執(zhí)行,打包,混淆一個(gè)MIDP項(xiàng)目做了比較詳細(xì)的介紹。除了以上所說(shuō)各點(diǎn),WTK(2.2版)還提供諸多實(shí)用功能。這些都可以在編輯 —— 偏好中找到。
例如,當(dāng)我們需要監(jiān)視程序性能的時(shí)候,可以選中“啟用內(nèi)存監(jiān)視器”,在下一次模擬器執(zhí)行的時(shí)候,我們就可讀出程序運(yùn)行時(shí)的內(nèi)存消耗均值,消耗峰值以及具體產(chǎn)生對(duì)象的個(gè)數(shù)和使用情況。
除了內(nèi)存監(jiān)視,我們還可以執(zhí)行網(wǎng)絡(luò)監(jiān)視,設(shè)定存儲(chǔ)區(qū)大小和堆棧大小,設(shè)定安全簽名和藍(lán)牙操作屬性,以盡可能模擬手機(jī)實(shí)際運(yùn)行環(huán)境,這些功能在進(jìn)階開(kāi)發(fā)中都是非常實(shí)用的。
注意:
雖然WTK為我們提供了各種工具來(lái)模擬手機(jī)運(yùn)行環(huán)境,但在實(shí)際開(kāi)發(fā)中,由于受到手機(jī)硬件,網(wǎng)絡(luò)條件等諸多限制,MIDP的真實(shí)性能在不同機(jī)器上會(huì)出現(xiàn)不同的反應(yīng),與WTK中的表現(xiàn)可能差別更大。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -