国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

解析 KJava 在移動設備開發支持中的應用

2024-07-21 02:39:04
字體:
來源:轉載
供稿:網友

  摩托羅拉A6288、388型手機的登場,伴隨著一個亮點:自身帶有Kjava虛擬機(KVM),能夠通過多種方式下載且能夠運行用戶用KJava編寫的符合MIDP1.0規范的應用程序。后來,又有多款手機支持KJava。 實際上,KJava不僅能夠為A6288等手機編寫應用程序,而且還可以為其它一些移動信息設備編寫應用程序。這類嵌入式程序和一般的Java程序相比,有它的非凡之處,本文將對KJava及其應用進行介紹。
  
  1.KJava簡介
  Java語言最初是為嵌入式系統設計的一項產品,在Java 2中為了區分各種不同的應用,又細分成了Java 2 EnterPRise Edition(J2EE)、Java 2 Standard Edition(J2SE)和Java 2 Micro Edition(J2ME)三種版本,其中J2ME又稱作KJava。
  
  在J2SE中,它定義了Java規范的核心類函數庫(即Java.*)和擴展類函數庫(即Javax.*),它主要定位在客戶端的應用程序。J2EE主要定位于服務器端的應用程序,它除了支持J2SE所定義的核心類函數庫之外,還增加了一些擴展函數類庫,如支持Serverlet/jsp的Javax.servlet.*等。J2ME只支持J2SE所定義的核心函數類庫的一部分,此外,在J2ME中還增加了一些支持嵌入式系統的擴展類函數庫,如Javax.microedition.*等。
  
  同樣是嵌入式設備,它們在運算能力、電力供給等方面還是有很大的差別。Connected Limited Device Configuration(CLDC)規范描述的就是那些運算能力有限、電力供給有限的嵌入式設備,如手機等;而Connected Device Configuration(CDC)規范則描述的是像電視機頂盒這樣運算能力較強、電力供給充足的系統。J2ME分別支持這兩種不同的配置。在同一種配置下,J2ME又通過Profile來定義與特定嵌入式設備相關的擴展類函數庫。
  
  在傳統的Java環境中,為了防止程序在傳送途中被篡改以及其它一些安全上的考慮,當程序被類別載入器載入后,緊接著要進行Byte Code審核,審核通過以后才答應Java虛擬機執行它。這一操作在PC機上執行從速度上來看沒有什么問題,但是在CLDC所描述的這類系統中,要想作完全相同的處理,從處理能力和速度上來看就顯得有些力不從心了。為了解決這個問題,程序設計人員需要在程序設計結束之后額外再多做一件事:預先審核。通過預先審核,會在最終的類文件中加入一些非凡的符號,當該程序下載到目標平臺上去執行時,可以以較快的速度完成審核操作。
  
  2. Motorola SDK
  下面以摩托羅拉A6288型手機為例來具體講解KJava的程序設計。在摩托羅拉A6288中使用了兩顆CPU,一顆是Dragon Ball VZ 33MHz,用于個人數字處理,另外一顆用于通訊的處理。系統為用戶預留了約1M的內存空間,支持符合MIDP 1.0規范的KJava應用程序。我們可以到摩托羅拉的官方網站去下載開發工具:CodeWarrior(試用版),下面的內容就是基于這一開發工具。
  
  在CodeWarrior中,它包含了摩托羅拉的SDK,它實現了CLDC和MIDP 1.0。它所實現的CLDC類庫有Java.io.*、Java.lang.*、Java.util.*和Javax.microedition.io.*,實現的MIDP類庫有Javax.microedition.lcdui.*、Javax.microedition.rms和Javax.micromedition.midlet。
  
  我們在PC環境下編寫的嵌入在瀏覽器中的Java程序叫做Applet,編寫的程序必須要從Applet類擴展自己的類。而為手機這類移動信息設備編寫的KJava程序叫做MIDlet,程序必須要從MIDlet類擴展自己的類。一個MIDlet程序具備如下的典型結構:
  
  
  public class HelloWord extends MIDlet
  {
  HelloWord()
  {……}
  
  public void startApp()
  {……}
  
  public void pauseApp()
  {……}
  
  public void destroyApp(boolean unconditional)
  {……}
  }
  
  當程序被啟動時,startApp()被系統調用。(當程序剛開始運行時有啟動過程,程序被暫停后也可以被再次啟動)。當程序被暫時停止運行時,pauseApp()被調用。當程序執行結束時destroyApp()被調用。我們可以根據實際情況在各函數中進行相應的處理。

  
  在摩托羅拉SDK中沒有AWT或者SWING,因為它們的實現會耗費太多的資源,摩托羅拉SDK只是在Javax.microedition.lcdui中實現了基于LCD的一些比較簡單的設計用戶界面的功能。SDK中定義了各種Displable類(如Form),程序中當前顯示的畫面必須是某個Displable的實例,在該實例中可以再放置按鈕、文本編輯框、單選框等UI。
  
  3. 舉例
  下面是用KJava編寫的一個可以在A6288型手機上運行的簡單的例子。具體程序如下:
  
  import Java.io.*;
  import Javax.microedition.lcdui.*;
  import Javax.microedition.midlet.*;
  
  public class HelloWorld extends MIDlet implements CommandListener
  {
  
  private MainCanvas myCanvas;
  private Display myDisplay;
  private Command c1,c2,c3;
  
  HelloWorld()
  {
  myCanvas=new MainCanvas();
  myCanvas.addCommand(c1=new Command("First",Command.SCREEN,1));
  myCanvas.addCommand(c2=new Command("Second",Command.SCREEN,1));
  myCanvas.addCommand(c3=new Command("Third",Command.SCREEN,1));
  myCanvas.setCommandListener(this);
  myDisplay = Display.getDisplay(this);
  myDisplay = Display.getDisplay(this);
  }
  
  public void startApp() throws MIDletStateChangeException
  { myCanvas.setUp("first");
  myDisplay.setCurrent(myCanvas);
  }
  
  public void pauseApp() { }
  
  public void destroyApp(boolean unconditional) { }
  
  public void commandAction(Command c,Displayable d)
  { myCanvas.setUp(c.getLabel()); }
  
  class MainCanvas extends Canvas
  { String ts;
  
  MainCanvas()
  { super();
  ts=new String("first");
  }
  
  public void setUp(String s)
  { ts=new String(s); }
  
  public void paint(Graphics g)
  { g.setColor(0xFFFFFF);
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(0);
  g.drawString("Current is the "+ts,getWidth()/2,60,
  Graphics.HCENTER Graphics.TOP);
  }
  }
  }
  
  程序運行后,可以根據用戶選擇的不同菜單項顯示不同的內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米泉市| 鄂州市| 铜山县| 江油市| 福泉市| 广东省| 泸溪县| 莒南县| 罗平县| 桂东县| 泸水县| 长治县| 方正县| 宾阳县| 玛曲县| 阿克苏市| 惠安县| 正宁县| 银川市| 抚宁县| 绿春县| 西充县| 磐石市| 阜新市| 呼伦贝尔市| 天津市| 夏河县| 丰镇市| 凭祥市| 临西县| 巩义市| 新丰县| 小金县| 康马县| 凤阳县| 东港市| 响水县| 临颍县| 靖远县| 南昌市| 宁波市|