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