Java嵌入式開發講座(第三講)

azz發表於2007-08-24
Java嵌入式開發講座(第三講)[@more@]  無論學習什麼新事物,都講究循序漸進。學習J2ME也不例外,在此我想先介紹一下使用J2ME開發Palm上的一個小的應用程式,再深入探討開發更加複雜的應用程式,好,那我麼就開始吧。

  第一節 獲得 J2ME

  你可以從Sun網站上下載到 J2ME CLDC檔案。第一個檔案是 j2me_cldc_-1_0-src.winsol.zip,它包括所有開發 CLDC應用程式時需要的類庫。除了包括類庫以外,它還包括原始碼以及 Windows和 UNIX下的可執行程式碼,用於 MIDP規定的 Java虛擬機器引用實現。看了前幾篇文章的讀者肯定都知道,這裡提到的Java虛擬機器就是 K虛擬機器 ( KVM ),有了這個檔案,在開發過程中,你就可以在個人電腦上除錯程式,而不用把這些程式下載到你的手持裝置上。

  第二個檔案是 j2me_cldc-1_0-src-palm_overlay.zip,它包括一個用於執行 Palm作業系統的裝置的 KVM的實現,以及把.class檔案透過一個 Java編譯程式生成可執行 Palm檔案的工具。注意,這是一個用於 Palm作業系統的 CLDC個別實現。如果使用針對其它的裝置的實現的話,你的 Java應用程式也可以在其他裝置上執行。

  為了開發用於 Palm OS裝置的應用程式,你必需在你的計算機上安裝這兩個Zip檔案。在本文中,我假設你已經在 C盤中安裝了 CLDC資料夾。注意,為了開發 CLDC應用程式,你並不需要一個特定的 Java編譯程式。你可以使用 J2SE帶有的編譯程式,唯一的差別就是,你必須在編譯的時候更換成J2ME類庫所在的路徑。你還要使用下載到的 CLDC中帶有的特定軟體來處理生成的 .class檔案。

  第二節 執行文件附帶的應用程式示例

  你從Sun網站上下載的檔案中包含了許多示例應用程式的源程式以及編譯好的版本,你可以在你的桌上型電腦上,使用 KVM來執行這些示例應用程式。執行這些應用程式可以使你對一個 CLDC應用程式有一個感性認識。在執行這些程式之前,你必要啟動一個命令列介面,然後輸入下列命令:

  set cldc_classpath = c:;.
  set bin = %bin%;c:
  cd

  好,現在你已經設定了環境變數並進入了儲存示例應用程式的目錄,你就可以開始執行它們了。比如說,為了執行 UITest程式,輸入:
  kvm -classpath %cldc_classpath% UITest

  你也可以看看 Pong這個遊戲程式,請在命令列輸入下面的命令:kvm -classpath % cldc_classpath% Pong

  是不是挺好玩,你可以試一試執行每個示例應用程式,稍後,我們還要使用相同的方法來執行我們在桌上型電腦中開發的應用程式。

  第三節 構建一個 Palm應用程式

  好,現在你對 J2ME的程式有一點感性認識了吧?現在讓我們做一些實事吧,我將介紹如何構建一個 執行於 Palm OS裝置上的 Java應用程式。首先,雖然J2ME是Java技術,但這並非意謂著你可以使用現有的 Java應用程式,重新編譯它們然後把它們執行於新的裝置上。在前面幾章中我已經談過,J2SE和J2EE使用的Java虛擬機器中的許多關鍵特性已經從J2ME虛擬機器中刪除了,因為裝置的資源有限。

  J2ME帶的 Java虛擬機器(KVM)缺乏浮點數支援;J2ME應用程式與 J2SE、 J2EE應用程式的另外一個重要的差別是缺乏優先型多工,雖然它不是 Java規範中所述的必要條件,但是幾乎你的J2SE、 J2EE應用程式執行的所有機器都支援優先型多工。這意味著 CPU在多個 Java執行緒之間共享而不必在你的程式中新增任何特殊的程式碼,而 J2ME使用的裝置則往往沒有這種功能,為了確保多執行緒能夠工作,你必須呼叫Thread.yield()方法。

  使用 CLDC簡表的另一個值得注意的方面是J2ME類庫缺少許多 J2SE類庫中的類。在構建應用程式時,必須使用這有限制的類庫。當你下載到CLDC檔案時,你可以仔細考察你獲得的檔案,弄清楚哪一個類包含在CLDC規範中。你必須對付的最後一個問題是 CLDC類庫內部缺少訪問使用者介面元素--按鈕、選單、圖形。不使用 Palm的使用者介面,就不大可能為 Palm OS裝置開發應用程式, Sun已經解決了這個問題--使用一個單獨的類庫 com.sun.kjava來提供給你訪問基層 Palm使用者介面的許可權。下面這個示例程式就使用類庫建立視窗、按鈕和對話方塊。不過請注意,kjava類庫既不是 MIDP配置也不是 CLDC簡表的官方部分,它很有可能在未來的版本中改變或消失。這就意味著你使用 kjava類庫寫的任何程式,一旦發行新的J2ME版本你就不得不修改這個程式以適應新的J2ME版本。但是現在,它還是你開發使用Palm使用者介面的應用程式的唯一選擇。

  import lang.*;
  import com.sun.kjava.*;

  public class HelloWorld extends Spotlet

  implements DialogOwner {

  ?private Button quitButton;
  ?private Button aboutButton;
  ?private TextBox welcomeTextBox;

  ?private final String welcomeString = "Hello World ";
  ?private final String aboutTitleString = "About Hello World";
  ?private final String aboutString = "HelloWorld J2ME CLDC Application";

  ?public HelloWorld() {
  ??register(WANT_SYSTEM_KEYS);

  ??welcomeTextBox = new TextBox(welcomeString, 10, 10, 140, 130);
  ??aboutButton = new Button("About", 75, 140);
  ??aboutButton.setEnabled(true);
  ??quitButton = new Button("Quit", 125, 140);
  ??quitButton.setEnabled(true);
  ??paint();
  ?}

  public void dialogDismissed(String title) {
  ?Graphics.clearScreen();
  ?register(WANT_SYSTEM_KEYS);
  ?paint();
  }

  public void paint() {
  ?welcomeTextBox.paint();
  ?aboutButton.paint();
  ?quitButton.paint();
  }

  public void penDown(int x, int y) {
  ?if (aboutButton.pressed(x, y)) {
  ??Dialog aboutDialog = new Dialog(this, aboutTitleString, aboutString, "OK");
  ??aboutDialog.showDialog();
  ?}
  ?if (quitButton.pressed(x, y))
  ??System.exit(0);
  ?}

  ?public static void main(String args[]) {
  ??new HelloWorld();
  ?}
  }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965627/,如需轉載,請註明出處,否則將追究法律責任。

相關文章