一.基本概念
J2ME Java 2 Micro Edition
CLDC Connected Limited Device Configuration 有限連接設備配置
MIDP Mobile Information Device Profile 移動信息設備簡表
CLDC和MIDP提供了一種便攜式的、可擴展的平台,用於為小型移動設備開發應用程序
。
J2ME在設備本機操作系統上定義了三層軟件:
1. Java虛擬機層:KVM
2. 配置層(Configuration Layer):CLDC
3. 架構層(Profile Layer):MIDP
配置與架構最主要的目的就是為每一組目標設備提供最優的虛擬機與類庫。
配置定義了Java虛擬機性能以及適用於某一類特定設備的Java類庫的最小集合
CLDC包括兩個部分
i) 從J2SE中繼承的類,如java.lang、java.io、Java.util等等
ii) 非繼承的、專門配置的類:Javax.microediton.io包裡
架構為一些特定的縱向市場、設備類組或工業界額外定義了一些API和特性。
MIDP:是一個CLDC構架,提供了用戶界面、持久存儲、網絡功能以及應用模型API。
二.無線應用的J2ME總體體系結構
1. MID硬件層:主要包括手機
2. 本地系統軟件層:包括由設備生產商提供的本地操作系統和系統庫
3. KVM層:為Java應用提供了運行環境
4. CLDC層:為無線應用提供了核心Java API
5. MIDP層:提供了GUI庫、持久存儲庫、網絡庫和時鐘庫
三.設置開發環境
J2MEWTK(Java2平台的小型版無線工具包):包括一個字節碼預校驗器(byte-code
preverifIEr)、一個MIDP設備仿真器、一個基礎IDE和一個Sun的Foret for Java集
成組件組成。
1.Windows下安裝J2ME無線工具包
i) 下載和安裝Java2標准版 JDK1.4.2版本
ii) 如果還沒有決定用什麼JavaIDE,建議安裝Forte for Java,否則,一般的文本
編輯器,以及Jcreator等IDE都是不錯的選擇
iii) 下載和安裝J2ME無線工具包 J2ME_wireless_toolkit-2_0-Windows.exe
如果想將Forte for Java與工具包集成,則選擇集成(Integrated)選項;
四.無線Java程序設計基礎
MIDP設備上的運行程序通常包括KVM(K虛擬機)、CLDC(有限連接設備配置庫)、MIDP
庫,以及應用管理軟件。
1. CLDC庫:提供了不依賴設備的高級系統和網絡庫
i) J2SE子集:在java.lang、java.util和Java.io包裡定義的
ii) CLDC專用類:在javax.microedition.io包裡定義,是從高層次對java.io和Java
.Net包中與網絡化相關的類的通用化
CLDC支持的基本數據類型包括:byte、short、int、long、char和boolean
2. MIDP庫:提供了設備的特定功能,包括設備應用管理、低級和高級圖形用戶界面
、持久存儲以及擴展的網絡功能。
i) 應用程序管理類:在Javax.microedition.midlet包中定義
所有的MIDP應用程序必須在其包中擴展MIDlet類並實現其三個抽象方法:
startApp()、pauseApp()和destroyApp()。
ii) GUI類:GUI包裡定義了兩套API,高級API和低級API,前者強調設備可移植性,
而後者則強調獨立於設備的圖形元素及低級輸入事件。
與GUI和事件管理相關的類在Javax.microedition.lcdui包中定義
高級API:Screen類是超級類,包括Alert、Form、List及TextBox等等
低級API:主要是畫布(Canvas)類和圖形類
iii) 持久存儲類:在設備上長期存儲數據
在Javax.microediton.rms包裡定義
iv) 網絡類:CLDC中定義的通用連接框架包括一套連接接口,但並不實現連接接口後
面的具體協議,而是將其留給MIDP完成。
在Javax.microediton.io包裡定義
注:當MIDlet處在重要的處理過程中時,它可以發出一個MIDletStateChangeException
申請不進入銷毀狀態,但是此請求不一定會得到AMS的批准。DestroyApp()方法中
的信號布爾變量unconditional將確定此請求是否為有效響應。如果unconditional信
號置為true,則將忽略該響應。
3. MIDlet
MIDP上的應用程序稱為MIDlet,MIDlet沒有main()方法,必須擴展Javax.microedition
.midlet.MIDlet類,並實現上文曾提到的三個抽象方法,此外MIDlet還必須有一個公
共的無參數構造函數。
注:AMS(應用管理軟件)可以調用MIDlet類定義的方法,並啟動或結束某個MIDlet
應用程序
4. AMS(應用管理軟件):本質上是一個軟件應用程序,由MIDP實現組成,具體包括
安裝、執行和清除MIDlet。
AMS的具體實現會因設備的不同而有所區別,但提供的基本服務都是相同的:
● AMS為用戶提供從無線設備上安裝和卸載MIDlet的方法
● AMS為MIDlet提供一個運行環境。
● AMS應能很好的控制所有發生在安裝與執行應用程序過程中的錯誤,保證不會破壞
系統。
5. 編譯
使用J2ME編譯器編譯J2ME程序時,要用MIDP類文件覆蓋J2SE的主引導類文件,在命令
行模式下,運行Javac進行編譯需加參數
-bootclasspath %SUNJ2MEHOME%\lib\midpapi.zip
midpapi.zip中包括了所有的CLDC和MIDP庫
6. 預校驗
7. 創建JAR文件
五.打包與部署Java無線應用
首先,所有的MIDlet類文件都必須打包到單個JAR文件中。每個JAR文件可以包含多個
MIDlet應用,而這組MIDlet應用就組成了一個MIDlet套件
與MIDlet打包和部署相關的兩個文件:清單(manifest)和應用描述符(application
descriptor)。清單用於MIDlet打包,它描述了MIDlet套件的JAR文件內容。應用描
述符則用於MIDlet部署,它描述了MIDlet套件的菜單項及JAR文件位置等內容
1. 清單:清單文件必須包含在MIDlet套件的JAR文件中。它描述了JAR文件的內容,
包括名字、版本和MIDlet套件生產商的信息,此外它還為MIDlet套件中的每個MIDlet
提供一個條目。
2. 應用描述符:應用描述符與清單文件格式一致,但功能卻大不相同。應用描述符
用於部署MIDlet套件,特別在OTA(空中下載)部署過程中使用(以後介紹)。
應用描述符不放在JAR文件中。應用描述符文件的擴展名必須是.jad。
應用描述符有七個強制性預定義屬性:MIDlet-Name MIDlet-Version MIDlet-Vendor
MIDlet-Jar-URL MIDlet-Jar-Size MicroEdition-Profile
MicroEditon-Configuration
四個可選的預定義屬性:MIDlet-Description MIDlet-Icon MIDlet-Info-URL MIDlet
-Data-Size
將MIDlet套件的JAR文件下載到設備欠,應用管理軟件將檢查應用描述符裡的七個強
制性屬性,並確保此應用適用於這個設備。否則不能下載該JAR文件
ps:用戶可以在應用描述符裡定義自己的屬性,但這些屬性不能以MIDlet-開頭
3. 使用J2ME無線工具包的Ktoolbar
i) 啟動Ktoolbar開發環境
ii) 點擊新建工程,輸入工程名和MIDlet類名,二者可以相同。
iii) 接著彈出工程設置窗口。這個界面允許你為清單和應用描述符修改MIDlet屬性
。其中"必須的"、"可選的"和"用戶定義的"三個選項標簽下可以修改各種必須的、可
選的和用戶定義的屬性。在MIDlet選項標簽下可以添加和刪除MIDlet套件中的MIDlet