J2ME開發環境搭建 之 Sun WTK

來源:互聯網
上載者:User
什麼是J2ME Wireless Toolkit

WTK 的全稱是Sun J2ME Wireless Toolkit —— Sun的無線開發套件,使用其中的工具可以開發在與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規範相容的裝置上啟動並執行 Java 應用程式。該工具箱包含產生工具、公用程式以及裝置模擬器。到本文寫作時為止可以擷取有四個版本,分別是1.0.4, 2.0, 2.1和2.2。每個版本都包括英語,日語,簡體中文,繁體中文4個語種包。

1.0.4版只能夠開發MIDP1.0 應用程式。

2.0版只能夠開發MIDP2.0 應用程式。

2.1版則可以同時開發MIDP1.0, JTWI(CLDC 1.0, MIDP2.0, WMA1.1, 可改用CLDC1.1或加入MMAPI1.1),自訂(自己隨機組合Configuration, Profile以及Optional Package)三種環境。

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);同時您也可以使用該版開發面向CLDC1.0 和MIDP1.0的應用程式。




系統要求上,WTK2.2至少需要50MB可用硬碟,128MB系統RAM和800MHZ Pentium III CPU。




你可以在sun的官方網站免費下載。

WTK2.2 下載連結(需要先登陸):

http://sdlcweb3b.sun.com/ECom/EComActionServlet;jsessionid=FE979CDFE94DE539C8DE6CF74FED7878










第二節 J2ME WTK的內容和檔案結構

在說明WTK檔案結構之前,讓我們首先把它安裝起來。

WTK的安裝程式與普通程式一樣簡單,只有一點需要注意,由於WTK自身並沒有附帶Java的運行環境JDK,所以,在WTK安裝之前你需要安裝自己的JDK(筆者這裡選用的是JDK1.4.2)。

WTK會首先自動檢測當前系統已有的Java虛擬機器:



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



您在確定無誤後,就可以繼續了,最後安裝成功後,您將得到一個包括多種工具 + 生產力的開發包。






無論哪個版本的WTK都會包括以下幾個目錄:

appdb目錄: RMS資料庫資訊

apps目錄: WTK內建的demo程式

bin目錄: J2ME開發工具執行檔案

docs目錄: 各種協助與說明檔案

lib目錄: J2ME程式庫,Jar包與控制檔案

session目錄:效能監控儲存資訊

wtklib目錄: JWTK主程式與模擬器外觀




WTK是用來開發MIDP的,為了讓MIDlet可以順利編譯和執行,WTK必須具有CLDC和MIDP的類庫,WTK可以協助我們省去額外安裝調試這些類庫的時間。而不同版本的WTK包含的程式庫內容是不一樣的,比如說2.0中包含了midpapi.jar, wma.jar, mmapi.jar,而在2.1中則變為了cldcapi10. jar, cldcapi11.jar, midpapi10.jar, midpapi20.jar, wma.jar以及mmapi.jar;在2.2中,wma.jar又細分為wma11.jar, wma20.jar。如果您在開發中需要某個特定的jar包而當前的WTK版本又沒有時,您可以簡單把這個jar包拷貝如當前WTK的lib檔案夾即可。




apps目錄中包括了許多Demo程式,為我們示範了J2ME的一些技術執行個體,這些往往是很好的學習材料。










第三節使用J2ME WTK建立工程

建立新項目

下面讓我們用WTK來建立一個經典的Hello World程式,看看這水有多深。

在WTK的程式列表中運行KToolbar,開啟WTK主介面。WTK的標題菜單簡單明了的列出了這個工具包的可選功能。

單擊建立項目,鍵入建立的項目名和啟動MIDlet名,這裡的項目是一個MIDlet套間,一般情況下是與MIDlet檔案(Java檔案)同名。






產生項目以後,會出現項目的設定表,您可以選擇當前目標平台,CLDC配置,以及要採用的MIDP可選包。再不需要某個庫檔案時,請不要選中它,以減少最後程式大小。

另外,您還可以指定MIDlet的屬性,這些設定將成為JAD,即J2ME程式的描述資訊文檔。

我們的Hello World目前不需要其它的附加設定,於是採用預設,確定之後,控制台資訊提示建立成功。








WTK產生項目後,不同類型的資源有著相對固定的存放位置。Java源檔案被放在apps目錄下\Hello World\src下,相關程式資源檔(圖片,音頻)放在\Hello World\res下,應用程式庫檔案放在\Hello World\lib下,這在WTK中是必須注意的,即便是相對路徑,也必須是在該類型目錄下建立。




項目建立成功後,我們來建立一個MIDlet檔案,MIDlet是J2ME專案檔的入口檔案,也是必須的。在\Hello World\src目錄下建立HelloWorld.java,採用預設包,注意,此時建立的java程式必須是與我們在建立項目時鍵入的MIDlet類名一致。




在新建立的java檔案中輸入代碼,下文是一個簡單的歡迎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為您進行編譯,如果有錯誤產生,則會在控制台中提示。






根據提示資訊對MIDlet檔案進行修改,再重建,直到編譯成功。對編譯成功的程式,執行運行,可以看到彈出一個手機模擬器,顯示出我們的第一個Hello World程式,如果執行有錯,依然會在控制台中給出提示資訊。






開啟舊項目

當我們下一次重新啟動WTK的時候,選擇開啟項目,WTK會把apps目錄下的應用項目全部顯示出來,包括我們剛剛建立的Hello World,選擇載入後,就能夠重新運行了。












第四節執行MIDlet,打包和混淆

執行MIDlet

除了我們剛剛介紹的在KToolbar中執行一個程式,我們還可以在程式組中直接選擇Run MIDP Application…, 這是就可以在彈出的對話方塊中選擇其它路徑中的JAD程式運行了。











當我們直接選擇運行時,需要注意兩個問題:

1. JAD描述檔案與其指定的JAR檔案檔案在同一個目錄下。

2. 運行目錄路徑中不要包含中文。

打包成JAR

KToolbar的產生功能只能幫我們將原始碼編譯並預先審核,並不會幫我們產生JAR檔案,而我們如果要發布MIDP程式,除了JAD描述檔案,JAR是必須的,這就需要打包。

在KToolbar選中項目 —— 包 —— 產生包,可以把整個程式,包括資源檔打包成JAR檔案。形成的JAR儲存在apps\HelloWorld\bin目錄下。









包混淆

在上面的操作中,我們看到,除了“產生包”,另外還有一個“產生混淆包”選項。所謂混淆,是為了防止別人反編譯後讀取原始碼,將程式(.class檔案)進行混淆,經過混淆的Java Byte Code可以增加別人反編譯的時間,即便反編譯後,也會因為類名變化成沒有意義的符號而增加理解來源程式的難度。更進一步,由於混淆大大縮短的來源程式中類,成員變數以及方法名稱,導致產生的JAR體積變小!

目前一般比較常用的混淆器是兩款開源產品:ProGuard和RetroGuard,本文採用前者作為樣本,你可以在http://proguard.sourceforge.net/ 上擷取。

把剛剛擷取的ProGuard解壓,在解壓目錄的lib子目錄中找到proguard.jar檔案,將其拷貝到WTK安裝目錄的bin下,再執行混淆包。這是我們將會發現apps\HelloWorld\bin下的JAR大小變小了,反編譯後的各個名稱也變得毫無意義了。









第五節 WTK中其它值得關注的功能

到這裡,我們就如何用WTK建立,執行,打包,混淆一個MIDP項目做了比較詳細的介紹。除了以上所說各點,WTK(2.2版)還提供諸多實用功能。這些都可以在編輯 —— 偏好中找到。



例如,當我們需要監視程式效能的時候,可以選中“啟用記憶體監視器”,在下一次模擬器執行的時候,我們就可讀出程式運行時的記憶體消耗均值,消耗峰值以及具體產生對象的個數和使用方式。








除了記憶體監視,我們還可以執行網路監視,設定儲存區大小和堆棧大小,設定安全簽名和藍芽操作屬性,以儘可能類比手機實際運行環境,這些功能在進階開發中都是非常實用的。




注意:

雖然WTK為我們提供了各種工具來類比手機運行環境,但在實際開發中,由於受到手機硬體,網路條件等諸多限制,MIDP的真實效能在不同機器上會出現不同的反應,與WTK中的表現可能差別更大。






相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。