<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 97,  comments - 93,  trackbacks - 0
    在無線通信領域有兩項重大的技術應用,一個是寬帶CDMA技術,一個是IP技術。前者使無線通信獲得更多帶寬,3G的目標是靜態速率達到2Mbps,而現 在的2.5G技術(如國內正在建設的GPRS和CDMA2000 1X)都可達到115kbps的速率;后者使無線通信和因特網融合起來,實際上當前WAP2.0技術就采用已經很成熟的TCP、TLS和HTTP協議,而 移動IP和IPv6技術將促使更多設備接入互聯網,如各種設備、家電等。

      就是在這樣的環境下J2ME技術得以快速發展,J2ME用來為接入和即將接入互聯網的設備提供應用開發平臺和執行環境,本文則主要論述如何利用JBuilder進行快速的J2ME應用開發。

      1. J2ME分層結構及MIDP簡表

    J2ME是SUN的JAVA2平臺微型版(JAVA2平臺3個版本之一,另兩個是標準版J2SE和企業版J2EE),采用3層結構設計。最低層為配置層 (Configuration),包括虛擬機(VM)和類庫兩部分,這一層與設備層(硬件及操作系統)關系緊密,由SUN提供參考規范和源代碼,設備廠商 根據設備特征進行相應的移植。當前J2ME提供有兩個配置:連接設備配置(CDC)和有限連接設備配置(CLDC)。前者主要面向有較大內存和處理能力而 只需有限功能的設備,如電視置頂盒、冰箱、汽車導航設備等,這些設備都有連接網絡和相互交互的需求,其內存在2M以上;后者主要面向對內存和處理能力有較 大限制的手持設備,如現在使用的手機、PDA等,現在及將來大多數這些設備都已經能夠接入互聯網,其內存范圍160Kb(其中128Kb用于虛擬機及類 庫,至少32Kb用于CLDC規范所要求的應用程序堆棧空間)到2M。二者主要區別在于能提供給VM及應用程序的存儲空間,CDC所用VM及類庫實際是參 考J2SE標準,去除了不需要的功能如AWT。CLDC所用VM(稱作KVM)則有較大區別,包括類驗證機制。對于下一代移動終端設備如智能電話、高端 PDA,則是CDC所應用對象,因為它們將有超過2M的內存。

      設備層之上是簡表層(Profile),再之上則是應用層 (Application)。簡表層擴展了配置層功能為上層應用提供API,如果說配置層面向設備,簡表層則面向應用。可以根據需要在CDC或CLDC基 礎之上提供多種簡表,一個配置層之上也可以有多個簡表。當前CDC之上有基礎簡表(Foundation Profile)和基于FP的Personal Profile和RMI Profile。CLDC之上則主要提供有移動信息設備簡表(MIDP),即用于手機、PDA等移動終端的設備簡表,提供API以支持無線應用的開發。

      CLDC類庫一部分來自J2SE,這部分類庫是經過裁減的,去除了不必要的功能,主要包括java.lang包中的系統類、數據類型 類、異常處理類,java.util包的集合類、時間類和附加工具類,java.io包的I/O處理類。CLDC專有類則主要是"通用連接框架(GCF) ",為CLDC提供網絡連接功能,這些網絡接口都是Connection類的子類,由類Connector所提供的方法調用,這些接口或類位于包 javax.microedition.io。

      CDC類庫則是CLDC的超集,因此為CLDC開發的應用程序可以移植到CDC平 臺,由于CDC采用標準的J2SE VM,因此其開發與標準的J2SE開發一致,只是在用javac工具編譯源代碼時需要使用CDC的類庫,即使用-bootclasspath參數指向 CDC類庫。

      MIDP擴展了CLDC的功能,它繼承了GCF并在此基礎上增加了類HttpConnection,用以提供 HTTP連接功能(盡管從理論上CLDC/MIDP可以提供socket、數據報、文件、NFS等多種連接類型,但現在標準的CLDC/MIDP僅支持 HTTP協議,一些設備實現則提供了socket和HTTPS協議的支持),MIDP類庫

      總結如下:

      java.io、java.lang、java.util,屬于MIDP的核心包,分別用來提供系統I/O、語言支持和工具支持。包中的類來自CLDC并稍有增加,但都來自J2SE。

      javax.microedition.midlet,定義了MIDP應用程序,以及應用程序和它所運行于環境之間的交互。

      javax.microedition.lcdui,為MIDP應用程序提供用戶界面API。

      javax.microedition.rms,用來為MIDlet提供持久存儲的機制,應用程序可以存儲數據,在以后需要的時候獲取這些數據。

      javax.microedition.io,提供了基于CLDC通用連接框架的網絡支持。


    2. MIDP應用程序開發

      這里討論的J2ME無線應用開發主要是基于CLDC/MIDP的開發,其應用程序可運行于移植有KVM的手機、PDA等,這類設備由MIDP定義,即移動信息設備(MID),可看作一垂直應用市場。

      可在PC(Windows、UNIX或Linux平臺)上開發MIDP應用程序,編譯成類文件形式,下載到目標設備上,經過類文件的驗證(驗證是否有不符合KVM規范的方法調用等)后即可解釋執行。

      生成的.java文件至少有一個是擴展了javax.microedition.midlet.MIDlet類的子類,并且實現幾個規定的接口,比如下面的一個MIDlet程序 :


    import javax.microedition.midlet.*; //應用程序生命周期,和J2SE一樣,包java.lang.*是默認加載的
    import javax.microedition.lcdui.*; //MIDP用戶界面
    public class FirstMIDlet extends MIDlet implements CommandListener {
    private Display display; // 引用MIDlet的Display 對象
    private TextBox textBox; // Textbox 顯示一條消息
    private Command cmdExit; // 設定按鈕用于退出MIDlet
    public FirstMIDlet() { // MIDlet構造程序
    display = Display.getDisplay(this);
    cmdExit = new Command("Exit", Command.SCREEN, 1);
    textBox = new TextBox("My First MIDlet", "Hello, J2ME!", 50, 0);
    textBox.addCommand(cmdExit);
    textBox.setCommandListener(this);
    }
    public void startApp() { // 必須要實現的接口,被應用管理軟件調用來啟動MIDlet
    display.setCurrent(textBox);
    }
    public void pauseApp() { } // 必須要實現的接口
    public void destroyApp(boolean unconditional) { } //必須要實現的接口
    public void commandAction(Command c, Displayable d) { //檢查一下是否選擇了退出命令
    if (c == cmdExit) {
    destroyApp(false);
    notifyDestroyed();
    }
    }
    }

    這是最簡單且功能完整的MIDlet應用程序,其中接口startApp、pauseApp、destroyApp是必須要實現的,應用程序管理器 (JAM)通過這些接口調用和控制應用程序,與Applet類似。除這個主類外還可以有其它輔助類,其要求和J2SE一致。

    然后使用 javac工具編譯,javac工具來自J2SE,至少JDK 1.3版,編譯時應該使用參數-bootclasspath并指向MIDP類庫。之后使用preverify工具預驗證,以保證生成的.class文件符 合CLDC要求,這一步為每個類文件添加堆棧映射(stackmap,此屬性為CLDC新定義)屬性,增加類文件大小約5%。

      此時可以用midp工具(來自MIDP實現的可執行文件)模擬運行,之后即可打包,需要編寫一清單文件(清單文件參考CLDC/MIDP規范),用jar工具(來自J2SE)把預驗證后的類文件、資源文件、清單文件打包。

    要發布應用程序還需要編寫一描述文件(JAD),JAD的要求同清單文件一致,可以自定義參數供應用程序調用。其中一個參數MIDlet-Jar- URL以URL方式指向JAR文件,移動終端設備通過JAM連接網絡獲取JAD,下載MIDlet-Jar-URL指向的JAR到設備中,通常JAM要先 判斷JAD與清單文件是否一致,應用程序是否有效,然后才決定下載。

      運行時執行環境、JAR包、JAD文件和應用程序生命周期,這些要素構成MIDlet套件,由JAM管理,每個MIDlet套件可包含一個或多個MIDlet。

      上面是一個MIDP應用程序開發的關鍵點,具體的開發方法及開發工具大致分為如下幾種:

      Ⅰ. 基本開發工具

    最基本的開發方式是下載SUN提供的CLDC/MIDP參考實現及源代碼,可根據需求編譯生成一個CLDC/MIDP實現,并移植到設備上。配置好開發 環境(CLDC/MIDP實現、JDK1.3)后即可采用上述方法和工具進行開發,多采用命令行方式,這是最原始的方法。

      Ⅱ. J2MEWTK開發工具

    這是SUN提供的便捷開發工具,用于Windows環境,同樣需要先安裝JDK1.3。源程序仍需要使用常規的文本編輯器,把編輯好的源文件及資源文件 按一定要求放在規定目錄下,J2MEWTK所提供的是菜單或按鈕方式的命令。J2MEWTK中有相應的編譯(和預驗證一個步驟)、打包、模擬運行的菜單 (或按鈕),以及其它輔助工具。

      Ⅲ. IDE工具

      可以使用Forte For Java、JBuilder等IDE工具和J2MEWTK集成使用,它們除了有J2MEWTK的功能外,就是提供有可視化的開發工具。

    3. 使用JBuilder MobileSet

    JBuilder是Java程序員常用工具之一,在于它強大的可視化編程工具,集成的編譯、運行和調試環境。要為JBuilder提供J2ME無線應用 開發支持,需要在JBuilder基礎之上安裝MobileSet,建議安裝2.0版,當前支持CLDC/MIDP的1.0.3版本,而JBuilder 的版本應該是6。JBuilder MobileSet 2可從下面網址免費下載:

      http: //www.borland.com/jbuilder/mobileset/ 同時還要下載相應的MobileSet序列號和許可密鑰(免費),根據提示安裝MobileSet并注冊后,運行JBuilder會找到 "Help|MobileSet Guilde"菜單項。使用菜單"File->New..."打開"Object Gallery"對話框,會出現一個新的頁面標簽"Micro",此時圖標"MIDlet"和"MIDP Displayable"是灰色的,只有生成一個MIDP項目后才能使用這兩個圖標。

      3.1 JBuilder MobileSet的特征

      JBuilder MobileSet是一個開放工具,能夠與其它供應商提供的J2ME開發工具包集成在一起,當前提供了對下列廠商工具包的支持:

      Sun提供的J2ME無線開發工具包1.0.3版(J2MEWTK)

      諾基亞的J2ME開發套件(http://forum.nokia.com/)

      西門子的SMTK開發工具包(http://www.siemens-mobile.de/)

      其中J2MEWTK已經包含在MobileSet 2的安裝文件中,如果要使用J2MEWTK提供的開發類庫,并且還沒有安裝J2MEWTK,可以在安裝MobileSet 2時選擇完全安裝。MobileSet 2提供了下列輔助開發的工具:
     
      用于CLDC/MIDP類的CodeInsight工具

      類/包瀏覽器

      JDK轉換工具

      動態適配到任何J2ME簡表,包括MIDP

    和開發其它Java應用程序一樣,JBuilder通過MobileSet提供了快速開發模板,包括MIDP項目模板,MIDP Displayable模板,MIDlet模板。它提供了RAD(快速應用開發)的可視設計器,支持MIDP UI元素。通過MobileSet還支持MIDP應用程序打包和OTA配置(Over the Air,上載和下載文件和MIDlet套件,用來配置應用程序到設備上)。

      MobileSet能夠用在JBuilder的個人版、專家版和企業版,但是一些功能不能用在個人版如JDK設置切換,打包器等。

      3.2 配置JDK

    前面已提到編譯MIDP應用程序時需要設置特定的CLDC/MIDP類庫,以避免使用默認的J2SE類庫,在JBuilder中同樣要進行類似設置。這 是通過JDK配置選項實現的,JBuilder的設計獨立于JDK,盡管每個JBuilder版本發布時會默認安裝一個當時較新的JDK(類庫),但還可 以通過它的配置機制設置其它JDK,包括舊版本、更新版本或者OEM版的JDK,從而實現了JBulder的擴展性。

      專家版和企 業版的JBuilder可同時配置多個JDK,根據需要設置其中一個為默認即可,而個人版的卻要在需要時重新配置每個JDK。安裝MobileSet后可 選擇安裝J2MEWTK、諾基亞和西門子的JDK,然后為設置的每個JDK自定義一個名稱,并把其主目錄指向這個JDK中\bin的父目錄,需要注意的是 JDK目錄中不能有空格如c:\Program Files\ J2mewtk。

      3.3 MIDP項目

    JBuilder開發都以項目概念為中心,項目文件包含一個(屬于這個項目的)文件列表以及項目屬性,其中項目屬性包括項目模板、缺省路徑、類庫和連接配 置等,JBuilder使用這些信息加載、保存、編譯和運行項目。使用Jbuilder開發環境添加、移除文件,或者設置、更改項目屬性都會更改項目文 件。可以在項目面板中看到項目文件作為主節點顯示。

      生成項目的便捷方式是使用項目模板工具,可用來設置項目名稱、類型和模板,以及JDK、工作目錄、備份路徑和編譯輸出路徑等。其中項目類型可選擇.jpx或者.jpr,二者內容一樣,區別是前者使用XML格式文件,因此適合于共享的項目。

    而JDK則是前面所設置中的一個,并且只有選擇CLDC/MIDP的JDK才能使用Object Gallery中的Micro選項。每個項目至少一個MIDlet主類,所以首先應使用MIDlet模板生成一個MIDlet主類。通過模板可以設置這個 主類的類名、標題、屏幕類型和命令處理方式,其中屏幕類型有4個選擇:

      (javax.microedition.lcdui.)Canvas、Form、List、TextBox,只有Form的擴展類才能添加其它的組件(Item的子類)。命令處理方式也有4個選擇:

      Ⅰ. -- 通過其它的類設置commandListener,比如MIDlet類。

      Ⅱ. Interface implementation -- 生成一個類并在類中實現commandListener接口,這種方式生成的類的大小會比適配器方式生成的小。

      Ⅲ. Standard adapter -- 這種方式生成的代碼采用標準適配器的形式:


    class Foo {
    private void jbInit() {
    addListener(new Adapter(this));
    }
    }
    class Adapter {
    ...
    }

      Ⅳ. Anonymous adapter -- 這種方式生成的代碼采用匿名適配器的形式:


    class Foo {
    private void jbInit() {
    addListener(new Listener() {
    ...
    });
    }
    }

      后兩種適配器形式可以通過項目屬性"Code Style"設置。如果要在這個MIDP應用程序中添加更多的屏幕,可以使用Displayable模板添加,或者通過MIDlet模板添加更多的MIDP應用程序到項目中。

      生成應用程序框架后,就可根據本文第2部分要求添加所需代碼,并使用JBuilder提供的便捷方式進行編譯(預驗證)、打包、模擬運行和發布,JBuilder提供有內置web服務器和ftp服務器,以方便開發者測試應用程序的發布。

    如果使用MIDlet或Displayable模板生成一個Form類型的Displayable對象,則可以使用JBuilder的"MIDP設計器 "定制用戶界面,即從組件板上以拖拉方式生成UI元素,可用鼠標調整這些元素的位置或者進行復制、刪除等操作,這就是JBuilder強大功能之所在。

      如果是使用模板生成Displayable類,會自動生成jbInit()方法,當在Form中添加UI元素時,設計器會把代碼添加 進jbInit()方法。如果希望打開一個現有Displayable類到設計器,它已經有UI元素,但是沒有jbInit()方法,首先需要生成一個 jbInit()方法,然后把所有的UI元素轉移進去。
    posted on 2006-05-09 18:17 wqwqwqwqwq 閱讀(300) 評論(0)  編輯  收藏 所屬分類: Simple Java
    <2006年5月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910




    常用鏈接

    留言簿(10)

    隨筆分類(95)

    隨筆檔案(97)

    文章檔案(10)

    相冊

    J2ME技術網站

    java技術相關

    mess

    搜索

    •  

    最新評論

    閱讀排行榜

    校園夢網網絡電話,中國最優秀的網絡電話
    主站蜘蛛池模板: 污污免费在线观看| 欧美亚洲精品一区二区| a级毛片视频免费观看| 亚洲国产精品一区二区三区久久 | 日本一道本不卡免费| 国产四虎免费精品视频| 亚洲视频免费在线观看| 免费看黄的成人APP| 国产一卡二卡3卡四卡免费| 亚洲中文字幕日本无线码| 一级毛片免费在线| 国产精品极品美女自在线观看免费 | 久久久久亚洲AV无码观看| 一级毛片免费播放| 亚洲免费在线视频观看| 成人一区二区免费视频| 在线观看免费黄网站| 女人让男人免费桶爽30分钟| 亚洲码国产精品高潮在线| 亚洲精品无码专区在线播放| 成人爱做日本视频免费| 一级做受视频免费是看美女| 亚洲国产三级在线观看| 亚洲精品视频专区| 亚洲AV成人无码天堂| 免费无码又爽又刺激网站 | 色天使亚洲综合在线观看| 免费无码毛片一区二区APP| 亚洲另类古典武侠| 99视频在线免费| 亚洲中文字幕无码av永久| 97在线线免费观看视频在线观看| 成人一a毛片免费视频| 特级一级毛片免费看| 亚洲国语精品自产拍在线观看| a毛片免费在线观看| 亚洲天堂中文字幕在线| 中文字幕亚洲免费无线观看日本 | 亚洲精品第五页中文字幕| a毛片免费在线观看| 相泽亚洲一区中文字幕|