彭衛(wèi)華
摘要:在當(dāng)前的移動(dòng)應(yīng)用開發(fā)領(lǐng)域中,J2ME以其跨越平臺(tái)運(yùn)行、開發(fā)周期短及強(qiáng)大的本地執(zhí)行能力逐漸成為最主要的開發(fā)平臺(tái)。本文主要介紹移動(dòng)應(yīng)用開發(fā)基礎(chǔ)平臺(tái)J2ME技術(shù)的主要架構(gòu)、相關(guān)安全機(jī)制及這兩種技術(shù)結(jié)合的現(xiàn)狀。
關(guān)鍵詞:移動(dòng)應(yīng)用;跨平臺(tái);J2ME
在當(dāng)前的移動(dòng)應(yīng)用開發(fā)領(lǐng)域中,J2ME以其跨平臺(tái)運(yùn)行、開發(fā)周期短及強(qiáng)大的本地執(zhí)行能力逐漸成為了最主要的開發(fā)平臺(tái)。J2ME與XML將很快成為移動(dòng)應(yīng)用的基礎(chǔ)技術(shù)平臺(tái),在各個(gè)方面尤其在廣受矚目的移動(dòng)應(yīng)用安全方面促進(jìn)移動(dòng)應(yīng)用的發(fā)展。
一、J2ME綜述
J2ME為移動(dòng)應(yīng)用提供了一個(gè)高效靈活的開發(fā)環(huán)境,是一個(gè)具有強(qiáng)大網(wǎng)絡(luò)功能的統(tǒng)一開放的編程平臺(tái),其JAVA語言的跨平臺(tái)特點(diǎn)使得各種應(yīng)用能夠更快地開發(fā)并推廣,對(duì)HTTP等高級(jí)Internet協(xié)議的支持又使其能方便快捷地實(shí)現(xiàn)各種網(wǎng)絡(luò)應(yīng)用。下面我們將對(duì)J2ME的體系結(jié)構(gòu)及技術(shù)特點(diǎn)進(jìn)行詳細(xì)的介紹與分析。
二、J2ME與JAVA家族
自從Sun Microsystems推出Java 2 Platform的概念以后,為了適應(yīng)不同級(jí)別計(jì)算機(jī)硬件的開發(fā)需要,JAVA平臺(tái)形成了三個(gè)主要分支:①Java 2 Standard Edition;②Java 2 Micro Edition;③Java 2 Enterprise Edition。它們的體系結(jié)構(gòu)及相互關(guān)系如圖1所示。
Java 2 Standard Edition又簡稱為J2SE, 它是Java的標(biāo)準(zhǔn)版,它使用Java Hotspot虛擬機(jī)來提高其性能,其Java類庫包含了Java語言的所有特性,針對(duì)的設(shè)備主要是臺(tái)式機(jī)等設(shè)備;Java 2 Enterprise Edition又簡稱為J2EE,其類庫存除了Java語言的所有特性外還包含針對(duì)企業(yè)計(jì)算的各種編程接口和規(guī)范。J2EE針對(duì)的設(shè)備主要是后端的Server,它也使用Java Hotspot虛擬機(jī)。
三、J2ME體系結(jié)構(gòu)
J2ME是SUN 公司于1996年6月推出的針對(duì)嵌入式、消費(fèi)類電子產(chǎn)品的開發(fā)平臺(tái),與J2SE、J2EE共同組成Java技術(shù)的三個(gè)重要的分支。J2ME是為了支持像PDA、手機(jī)等小型的嵌入式或移動(dòng)設(shè)備而推出的一系列的技術(shù)和規(guī)范的總稱,由JCP組織制定相關(guān)的JSR(Java Specification Request)并發(fā)布。
首先,針對(duì)消費(fèi)電子和嵌入式設(shè)備的計(jì)算能力及各種硬件條件,J2ME根據(jù)最基本的一些特征把它們劃分為兩類:一類是運(yùn)算功能與電力供應(yīng)有限,只具備間斷網(wǎng)絡(luò)通訊能力的設(shè)備,如PDA(Personal Digital Assistant,個(gè)人數(shù)字助理)、手機(jī)等,這類設(shè)備一般用電池供電;另一類是運(yùn)算能力及電力供應(yīng)相對(duì)較佳,并且具有不間斷網(wǎng)絡(luò)連接的設(shè)備。在硬件劃分的基礎(chǔ)上,J2ME提出了Configuration和Profile兩個(gè)核心概念。
1.Configuration
Configuration是針對(duì)性能相近的一類設(shè)備提出的定義其能力共性的規(guī)范。Configuration中定義了這些設(shè)備至少需要符合的運(yùn)算能力、供電能力、內(nèi)存大小等內(nèi)容,同時(shí)也定義了一組在這些設(shè)備上執(zhí)行的Java程序所能使用的類庫。這些類庫包含虛擬機(jī)和核心的類庫,因此Configuration也可以看成支持一組通用設(shè)備的最小Java平臺(tái)。J2ME定義了兩個(gè)Configuration,分別對(duì)應(yīng)上述的兩類設(shè)備:對(duì)應(yīng)第一類設(shè)備的Configuration稱為CLDC(Connected Limited Device Configuration),主要針對(duì)16bit,32bit及16MHz以上的處理器,使用的虛擬機(jī)是KVM;對(duì)應(yīng)第二類設(shè)備的稱為CDC(Connected Device Configuration),主要針對(duì)32bit及75MHz以上的處理器,使用的虛擬機(jī)是CVM。這兩個(gè)規(guī)范所定義的類庫,除了Java標(biāo)準(zhǔn)核心類庫的子集合之外,也加入了與該類型設(shè)備相符合的擴(kuò)充類庫。CLDC和CDC類庫的范圍與J2SE核心類庫的關(guān)系如圖2所示。
2.Profile
CDC和CLDC僅僅是對(duì)各類設(shè)備中最具共性的配置提供了基本的功能集合。但是,在實(shí)際應(yīng)用中,不同的設(shè)備間存在著很大的差異,所以需要根據(jù)設(shè)備具體功能再進(jìn)行一次劃分,比如CLDC設(shè)備又分為智能手機(jī)、PDA等。因此,我們在Configuration的基礎(chǔ)上,提出了Profile的概念。Profile作為Configuration的擴(kuò)展和補(bǔ)充,針對(duì)每一類功能設(shè)備的特殊性定義了與設(shè)備特性相關(guān)的API??梢哉f有了Profile以后,才真正有了建立一個(gè)可運(yùn)行J2ME應(yīng)用程序的完整環(huán)境。
目前主要的Profile 有三種,其中兩種是基于CLDC的MIDP(Mobile Information Device Profile,移動(dòng)信息設(shè)備Profile)和PDA Profile,另一種是基于CDC的Foundation Profile?,F(xiàn)在應(yīng)用最廣的是MIDP,已經(jīng)有了MIDP1.0和MIDP2.0兩個(gè)版本,它定義了關(guān)于移動(dòng)信息設(shè)備(主要指智能手機(jī)和一部分具有無線通信功能的PDA)的圖形界面、輸入和時(shí)間處理、持久性存儲(chǔ),短消息等的API,并且考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。而正在制定中的PDA Profile則定義了針對(duì)PDA的API,其屏幕、內(nèi)存條件都要大于MIDP,但是網(wǎng)絡(luò)方面的要求則顯然和手機(jī)有所不同?;贑DC的Foundation Profile則提供除了用戶界面以外CDC所缺少的幾乎所有J2SE核心類庫。
綜上所述,我們可以這樣描述J2ME的體系結(jié)構(gòu):整個(gè)結(jié)構(gòu)分為四層,最底層是Host Operation System(設(shè)備宿主操作系統(tǒng));之上運(yùn)行的是由Configuration定義的Java Virtual Machine(JAVA虛擬機(jī)),構(gòu)成整個(gè)平臺(tái)的基礎(chǔ);虛擬機(jī)之上是由Configuration提供的適應(yīng)于該類設(shè)備的具有最基本語言特性的擴(kuò)展類庫;在Configuration的基礎(chǔ)上,再由Profile提供針對(duì)設(shè)備的特殊功能API和擴(kuò)展類庫。J2ME的四層結(jié)果構(gòu)成一個(gè)完整的應(yīng)用程序運(yùn)行環(huán)境(如圖3所示)。J2ME體系中需要
一個(gè)Configuration和至少一個(gè)Profile,多個(gè)Profile可以共存,也可以疊加。
三、J2ME應(yīng)用程序
所有根據(jù)J2ME規(guī)范開發(fā)出來的應(yīng)用程序都稱為J2ME應(yīng)用程序,當(dāng)前應(yīng)用最廣的J2ME應(yīng)用程序是MIDLet(MIDP應(yīng)用程序)。MIDLet是基于CLDC和MIDP規(guī)范開發(fā)的應(yīng)用程序,主要運(yùn)行于各種移動(dòng)終端(如智能手機(jī))中。
一個(gè)MIDlet應(yīng)用程序首先通過擴(kuò)展javax.microedition.midlet.MIDlet類來實(shí)現(xiàn)程序的啟動(dòng)、暫停和終止。為了使程序的功能更加豐富,MIDlet應(yīng)用程序通常還包括其他一些類,所有這些類能隨它們的資源一起被打包進(jìn)稱為MIDlet套件的jar文件中。一個(gè)jar文件通常包括多個(gè)MIDlet應(yīng)用程序,這些MIDlet程序之間能共享數(shù)據(jù)和資源。同一臺(tái)手機(jī)上可以有多個(gè)套件同時(shí)運(yùn)行。在MIDlet套件中的所有MIDlet程序都共享同一段存儲(chǔ)空間、運(yùn)行時(shí)對(duì)象棧和類的靜態(tài)域。在MIDlet套件中的MIDlet程序、類和文件不能被單獨(dú)地安裝、更新或刪除,它們必須作為一個(gè)整體來操作。封裝MIDlet套件的jar文件中包含以下組件:①實(shí)現(xiàn)所有MIDlet程序的類文件;②MIDlet程序使用的所有資源文件,比如圖標(biāo)、映像文件等等;③一個(gè)描述該Jar文件的清單。
MIDP規(guī)范定義了在一個(gè)MIDlet套件中的MIDlet程序執(zhí)行的環(huán)境,在該MIDlet套件中的所有MIDlet應(yīng)用程序都共享這個(gè)環(huán)境,而且同一套件中的所有MIDiet程序之間可以進(jìn)行交互。該環(huán)境主要包括CLDC中所定義的類庫、MIDP中所定義的類庫、工具類和應(yīng)用程序所使用的資源等內(nèi)容。
四、J2ME的安全機(jī)制
J2ME的安全機(jī)制可以從本地應(yīng)用程序安全保障機(jī)制與網(wǎng)絡(luò)安全保障機(jī)制兩個(gè)方面來討論。
1.本地應(yīng)用程序安全保障機(jī)制
J2ME的本地應(yīng)用程序安全保障機(jī)制主要包括兩重校驗(yàn)機(jī)制和沙箱(Sandbox)模型兩種基本技術(shù)。兩重校驗(yàn)機(jī)制是指采用兩階段驗(yàn)證方法來驗(yàn)證類裝入器中所有的類,這一字節(jié)碼驗(yàn)證過程保證了應(yīng)用程序不能訪問內(nèi)存空間或使用其域外的資源。兩重校驗(yàn)機(jī)制的兩階段為:第一階段是預(yù)校驗(yàn)(preverify),在編譯類文件的桌面計(jì)算機(jī)或下載應(yīng)用程序的服務(wù)器計(jì)算機(jī)中進(jìn)行,這階段完成大部分復(fù)雜的校驗(yàn)工作。完成了預(yù)校驗(yàn)后,最終的類文件通常包含下一階段所需附加信息;第二階段則是虛擬機(jī)內(nèi)部的校驗(yàn)(verify),這一階段將下載到用戶設(shè)備上的Java類文件載入虛擬機(jī)的內(nèi)存,然后運(yùn)行真正意義上的校驗(yàn)程序。
2.網(wǎng)絡(luò)安全保障機(jī)制
J2ME的網(wǎng)絡(luò)安全保障主要通過相關(guān)安全協(xié)議來實(shí)現(xiàn)。應(yīng)用傳輸層安全協(xié)議SSL可以在傳輸層建立安全的數(shù)據(jù)保護(hù)。通過建立點(diǎn)對(duì)點(diǎn)安全連接來保證網(wǎng)絡(luò)與數(shù)據(jù)的安全性。像SSL/TLS(安全套接字層/傳輸層安全性,以后簡稱為SSL)這樣的安全性協(xié)議允許應(yīng)用在因特網(wǎng)主機(jī)之間打開安全套接字。在連接握手時(shí),SSL利用公鑰算法和數(shù)字證書在素不相識(shí)的各方之間建立信任并交換當(dāng)前會(huì)話的私鑰。于是,SSL通信各方使用快速的私鑰算法來加密和解密通信數(shù)據(jù)。SSL協(xié)議支持認(rèn)證、數(shù)據(jù)完整性和機(jī)密性。在電子商業(yè)應(yīng)用程序中,基于SSL的安全HTTP (HTTPS )已經(jīng)成為傳輸敏感數(shù)據(jù)的標(biāo)準(zhǔn)協(xié)議。
五、結(jié)論
J2ME以其特有的技術(shù)優(yōu)勢已成為了移動(dòng)應(yīng)用的主流開發(fā)平臺(tái),在移動(dòng)應(yīng)用開發(fā)中用J2ME提供更靈活的安全保證手段已成為了必然的趨勢。