2


開發 MIDlet 套裝軟體

這一章描述如何使用 Sun JavaTM Wireless Toolkit for CLDC 建立應用程式。一開始,先說明工具組專案,然後逐步完成開發過程。

建立 MIDlet 套裝軟體應用程式時,您可能會遵循兩個基本的開發周期。第一個開發周期比較快,也比較簡單。在最初開發階段也非常有用。第二個周期比較長,但有比較寬裕的時間進行全方位而且實際的測試。

這一章後面的部分會介紹,如何將 Sun JavaTM Wireless Toolkit for CLDC 與進階開發工具 (如混淆器與除錯程式) 結合使用。最後一節簡要說明如何配置 Web 伺服器,以服務 MIDP 應用程式。


2.1 關於專案

在 Sun JavaTM Wireless Toolkit for CLDC 中,MIDlet 套裝軟體有條理的組織成一個個專案,而一個專案最後的成果就是一個 MIDlet 套裝軟體。專案包含即將用來生成 MIDlet 套裝軟體的所有檔案,包括 Java 原始碼檔案、資源檔案與 MIDlet 描述元。

Sun JavaTM Wireless Toolkit for CLDC 一次處理一個專案。您可以建立新專案,或開啟現有專案。

這一章會使用非常簡單的專案範例。當您研讀開發周期的每個步驟時,您可以使用工具組一起進行相同的操作。

若要建立新專案,請先啟動使用者介面。在 Microsoft Windows 中,選擇 [開始] > [程式集] > [Sun Java Wireless Toolkit 2.5.2 for CLDC] > [Wireless Toolkit 2.5.2]。[1] 將顯示使用者介面,如圖 2-1 中所示。

圖 2-1 工具組的使用者介面

啟動時顯示的預設工具組 UI。

按一下 [新建專案]。工具組會要求您輸入專案名稱與即將撰寫的 MIDlet 類別名稱。填入名稱,再按一下 [建立專案]。

圖2-2 建立新專案

顯示 [新建專案] 對話方塊的 KToolbar 視窗。 [專案名稱] 是 Tiny,[MIDlet 類別名稱] 是 TinyMIDlet。

顯示 [設定] 視窗。您的選擇會影響專案的生成環境。此範例使用預設選項即可,所以只要按一下 [確定] 關閉視窗。主控台上將顯示一些訊息,告訢您此專案的原始碼與資源檔案確切的儲存位置。

圖2-3 主控台上的檔案位置

KToolbar 主控台顯示專案檔案的位置。


2.2 簡單的開發周期

簡單的開發周期如下:

編輯原始碼 > 生成 > 執行

1. 編輯原始碼

在這個步驟中,要建立應用程式即將使用的 Java 原始檔與資源檔案。

2. 生成

工具組會編譯並預先驗證您的 Java 原始檔。

3. 執行

已編譯的 Java 類別檔案在模擬器上執行。

當工具組嘗試編譯原始碼檔案時,如果發生錯誤,請回頭重新編輯。如果在模擬器中測試應用程式時發現錯誤,請編輯該原始碼檔案以修正錯誤。

概略瞭解簡單的開發周期後,這一節其他部分會演示如何使用 Sun JavaTM Wireless Toolkit for CLDC 完成每個步驟。

2.2.1 編輯原始碼

編輯原始碼是唯一完全無需使用 Sun JavaTM Wireless Toolkit for CLDC 的步驟。使用自選的文字編輯器,建立與編輯原始碼檔案。如果您沒有喜歡的文字編輯器,請嘗試 jEdit (位於 http://jedit.org/)。

如果您正按照範例專案進行操作,請建立一個新的 Java 技術原始碼檔案 TinyMIDlet.java。將其儲存在專案的來源目錄中。例如,在 Windows 上此檔案為 workdir\apps\Tiny\src\TinyMIDlet.java。該檔案包含以下簡單的 MIDlet:


import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
 
public class TinyMIDlet
    extends MIDlet
    implements CommandListener {
  public void startApp() {
    Display display = Display.getDisplay(this);
    
    Form mainForm = new Form("TinyMIDlet");
    mainForm.append("Welcome to the world of MIDlets!");
    
    Command exitCommand = new Command("Exit", Command.EXIT, 0);
    mainForm.addCommand(exitCommand);
    mainForm.setCommandListener(this);
    
    display.setCurrent(mainForm);
  }
  public void pauseApp () {}
  
  public void destroyApp(boolean unconditional) {}
  
  public void commandAction(Command c, Displayable s) {
    if (c.getCommandType() == Command.EXIT)
      notifyDestroyed();
  }
}

完成時,把檔案儲存起來。

2.2.2 生成

下一個步驟是生成原始碼。工具組讓這個部分非常容易。

在使用者介面中,按一下 [生成] 按鈕。假設您把原始碼檔案儲存在正確的位置,工具組將會找到檔案,並進行編譯。編譯錯誤會顯示在主控台中。如果有錯誤,如圖 2-4 中所示,請編輯原始碼以修正問題。排除錯誤之後,主控台會通知您生成程序已成功完成。

圖2-4 有關生成的訊息

主控台顯示 Tiny 檔案的生成訊息以及錯誤。 指數符號 (^) 表示錯誤。

工具組也會在幕後預先驗證已編譯的類別檔案。MIDlet 類別檔案必須經過預先驗證後,才能在 MIDP 裝置或模擬器上執行。工具組會自動為您處理此細節。如需有關預驗證的詳細資訊,請參閱 CLDC 規格。

2.2.3 執行

生成成功之後,專案就已經完成準備工作,可以在模擬器中試用。按一下 [執行] 按鈕。模擬器會顯示專案中所有 MIDlet 清單。

圖 2-5 專案 MIDlet 清單

專案 MIDlet 的清單顯示 Tiny MIDlet

選擇您要的 MIDlet,並選取 [啟動]。如果您要照著 TinyMIDlet 範例來做,結果將如圖 2-6 中所示。

圖 2-6 TinyMIDlet 實際運作

TinyMIDlet 輸出為「歡迎來到 MIDlet 世界!」


2.3 完整的開發周期

第二個開發周期稍微複雜一點。它由下列主要步驟組成:

編輯原始碼 > 封裝 > 安裝 > 執行

1. 編輯原始碼

這與簡單周期相同。

2. 封裝

在此步驟中,Sun JavaTM Wireless Toolkit for CLDC 會編譯並預先驗證原始碼檔案 (基本上,跟之前的生成步驟一樣)。然後將 Java 類別檔案與資源檔案結合起來,成為 MIDlet 套裝軟體 Java Archive (JAR) 檔與 MIDlet 套裝軟體描述元。

3. 安裝

MIDlet 套裝軟體需要安裝後才能執行。您可以將 MIDlet 套裝軟體安裝到 Sun JavaTM Wireless Toolkit for CLDC 模擬器或實際裝置上。

4. 執行

與在簡單開發周期一樣,執行應用程式,並測試有無錯誤。

在完整開發周期中,第一個步驟與簡單開發周期完全一樣。編輯原始碼的方式都相同。生成步驟現在併入封裝中。

完整開發周期包含封裝與安裝二個新的步驟。最後,在許多重要的方面,安裝應用程式的執行方式不同於簡單開發周期中應用程式的執行方式。

2.3.1 封裝

Sun JavaTM Wireless Toolkit for CLDC 可將 MIDlet 套裝軟體的封裝作業自動化。封裝出來的成果是二個檔案,一個 MIDlet 描述元與一個 MIDlet 套裝軟體 JAR 檔案。描述元是一個小文字檔,其中包含有關 MIDlet 套裝軟體的資訊。JAR 檔案包含組成 MIDlet 套裝軟體的類別檔案與資源。裝置在下載整個 JAR 檔案之前,可以使用描述元瞭解應用程式,這對於記憶體不足、頻寬又有限的無線世界而言,是很重要的考量。

若要讓工具組封裝您的 MIDlet 套裝軟體,請選擇 [專案] > [封裝] > [建立封裝]。就會產生 MIDlet 套裝軟體描述元與 JAR 檔案,並放在專案的 bin 目錄中。

封裝可能需要其他步驟。您可以使用程式碼混淆器,將 MIDlet 套裝軟體 JAR 檔案縮小,這個技術會在本章稍後說明。此外,工具組提供了一些工具可讓您加密簽署 MIDlet 套裝軟體。如需詳細資訊,請參閱第 6 章

2.3.2 安裝

若要正確測試 MIDlet 套裝軟體,將它安裝在工具組模擬器或實際裝置上。當您在使用者介面中按下 [執行] 按鈕後,MIDlet 套裝軟體不會安裝到模擬器中。而是由模擬器直接執行 MIDlet 類別。

模擬器還能夠將應用程式安裝在其記憶體中,整個過程類似在實際裝置上透過 Over the Air (OTA) 傳送與安裝應用程式。若要在 Sun JavaTM Wireless Toolkit for CLDC 模擬器中安裝應用程式,請選擇 [專案] > [經由 OTA 執行]。

模擬器視窗隨即開啟,但模擬器不會直接執行您的 MIDlet 類別,而是顯示 [應用程式管理軟體 (AMS)] 歡迎畫面。模擬器的軟體是實際裝置在管理 MIDlet 套裝軟體時必備的一種軟體類型。

圖 2-7 模擬器 AMS 歡迎畫面

此圖顯示了帶有初始歡迎訊息的模擬器螢幕部分

選擇 [應用程式] 進入已安裝應用程式的主要清單。選取 [安裝應用程式],再按下模擬器上的選取按鈕。模擬器會提示您輸入要安裝的應用程式 URL 位置。URL 已經預先完成。

圖 2-8 URL 提示

該範例中,要安裝程式的 URL 為 http://localhost:2455/Tiny/bin/Tiny.html

從功能表選擇 [開始],開始安裝。模擬器會顯示它在 URL 找到的應用程式清單。選擇唯一的一個,再從功能表選取 [安裝]。模擬器會最後一次確認您的意向。

圖 2-9 確認安裝

當提示「您確定嗎?」時,請選取右下角的 [安裝] 以完成本次安裝

再次選擇 [安裝] 以完成安裝。您會回到模擬器的已安裝應用程式清單,清單中會包含您剛才新增的應用程式。

圖 2-10 應用程式功能表

使用 [選取] 按鈕選取應用程式

[經由 OTA 執行] 是極為有用的功能,讓您可以在工具組模擬器上輕鬆安裝 MIDlet 套件。有些功能一定要使用這個技術進行測試,包括推送註冊表以及已簽署 MIDlet 套裝軟體的安裝。

如果要在實際裝置上測試 MIDlet 套裝軟體,您必須先進行安裝。這項動作的進行方式,絕大部分須視所用裝置而定。可能的狀況有二:

2.3.3 執行

安裝應用程式後,請從清單中選擇此應用程式,然後從功能表中選擇 [啟動]。

圖 2-11 啟動安裝的應用程式

使用軟鍵開啟功能表並選取 1 (啟動)

在實際裝置上執行應用程式的方式,絕大部分須視裝置本身而定。如需詳細資訊,請參閱裝置的文件。


2.4 從 MIDlet 套裝軟體建立專案

您也可以使用 MIDlet 套裝軟體歸檔 (.jar 檔案) 和描述元 (.jad 檔案) 來建立 Sun JavaTM Wireless Toolkit for CLDC 專案。即使您沒有可用的原始碼,這對於從工具組使用者介面執行 MIDlet 套裝軟體也是非常有用的。您可以使用工具組輕鬆處理描述元中的屬性,或者可以執行專案並使用工具組的監視工具 (如第 5 章所述) 檢查其運作方式。

若要以 MIDlet 套裝軟體為基礎建立專案,請選擇 [檔案] > [從 JAD/JAR 建立專案]。瀏覽至您要使用的描述元,按一下 [開啟]。請注意,描述元和 JAR 檔案必須在同一目錄下。


2.5 使用混淆器

混淆器 (Obfuscator) 是可以將類別檔案變小的工具。MIDlet 套裝軟體必須非常精簡,一來可以縮短下載時間,二來也可以符合部分製造商或供應商對 JAR 檔案大小所設下的嚴格限制。使用混淆器就是讓 MIDlet 套裝軟體 JAR 檔案變小的一種方法 (但不是唯一的方法)。

您可以在開發周期的封裝步驟中使用混淆器。雖然 Sun JavaTM Wireless Toolkit for CLDC 不隨附混淆器,但已經配置成可以使用 ProGuard 混淆器。您只需下載 ProGuard,並將它放在工具組找得到的位置即可。

ProGuard 的發行遵循 GNU 一般大眾授權 (General Public License, GPL) 的規定。如果您同意授權規定,即可免費下載及使用 ProGuard。

2.5.1 安裝 ProGuard

請遵循以下步驟安裝 ProGuard:

1. 移至 ProGuard 網站 http://proguard.sourceforge.net/

2. 下載最新版本。

3. 從 ProGuard 安裝的 lib 目錄,將 proguard.jar 檔案解壓縮到 toolkit/bin 目錄。

2.5.2 使用 ProGuard

安裝 ProGuard 之後,只要選擇 [專案] > [封裝] > [建立模糊化封裝] 即可開始使用。

在某些狀況下,您必須提供控制混淆器運作方式的程序檔檔案。例如,如果是用 Class.forName() 載入類別,您必須告訴 ProGuard 不要變更類別名稱。

若要調用該程序檔,您必須能夠修改您自己的 ktools.properties 檔案副本。

single-step bullettoolkit/wtklib/os/ktools.properties 複製至 workdir/wtklib/os/ktools.properties

請用文字編輯器建立程序檔檔案,然後儲存在專案的主目錄下。如需程序檔檔案的資訊,請參閱 ProGuard 的文件。接下來,告訴工具組如何找到此檔案。若要執行此動作,請編輯您已複製到 workdir/wtklib 中的 ktools.properties 檔案。新增底下這一行:

obfuscate.script.name: scriptfile

用您使用的程序檔檔案名稱取代 scriptfile。您必須退出並重新啟動工具組才能使變更生效。


2.6 使用除錯程式

應用程式除了自行執行之外,還能夠使用除錯程式來執行。除錯程式可讓您更密切監視執行中的應用程式、設定中斷點與檢視變數。

您必須自行提供除錯程式。您可以使用 Java SE 平台的 jdb 除錯程式,或您選擇的其他除錯程式。如果您想要使用除錯程式,則可納入 Sun JavaTM Wireless Toolkit for CLDC 的整合開發環境 (IDE) 可能是最好的選擇 (如 Sun Java Studio Mobility 軟體)。如需更多資訊,請參閱 http://www.sun.com/software/products/jsmobility/

由選擇 [專案] > [除錯] 開始。輸入除錯程式用來與模擬器連線的 TCP/IP 連接埠號。按一下 [除錯]。模擬器開始執行,並等待來自除錯程式的連接。

啟動除錯程式,將它連接到您指定的連接埠。務必將遠端除錯程式設成以遠端模式執行,而且使用 TCP/IP。如需詳細資訊,請參閱除錯程式的文件。

除錯 MIDlet」具有在 Sun JavaTM Wireless Toolkit for CLDC 中使用jdb 的相關資訊。可以在
http://developers.sun.com/techtopics/mobility/midp/questions/jdb/ 取得。


2.7 在 Web 伺服器上部署應用程式

MIDP 2.0 規格包括 Over The Air User Initiated Provisioning Specification,以描述 MIDlet 套裝軟體如何透過 Over-the-Air (OTA) 傳輸到裝置。您可以使用 Sun JavaTM Wireless Toolkit for CLDC 模擬器測試這種狀況。

若要在 Web 伺服器上從遠端部署封裝的 MIDP 應用程式,請將 Java Application Descriptor (JAD) 檔的 MIDlet-Jar-URL 特性變更為 JAR 檔案的 URL。URL 必須是絕對路徑。例如:

MIDlet-Jar-URL: http://your.server.com/midlets/example.jar

接著,確定 Web 伺服器使用 JAD 和 JAR 檔案正確的 MIME 類型:

關於如何配置 Web 伺服器的詳細資訊,是依據所使用的特定軟體而定。

模擬器會在 OTA 供裝過程中實作裝置的運作方式。您可以使用模擬器,測試並示範 MIDlet 套裝軟體從伺服器到裝置的完整佈建程序。所需要的執行動作,只是啟動模擬器的 AMS 即可。如果用過 [經由 OTA 執行] 選項,則您可能已經熟悉了 AMS。

若要啟動模擬器的 AMS,您有二個選項:

接著,依照 AMS 提示安裝您的應用程式。這個程序非常類似本章描述的 [經由 OTA 執行] 選項,但是您必須輸入自己的伺服器 URL,以安裝您的應用程式。


1 (註腳) 依 Microsoft Windows 配置方式的不同,您可能不是選擇 [開始] > [程式集],而要選擇 [開始] > [所有程式]。