摘 要:Java智能卡技術(shù)制訂了一種安全、便捷且多功能的智能卡平臺(tái)規(guī)范,已成為智能卡的主流發(fā)展趨勢(shì)。隨著我國(guó)信息化建設(shè)的不斷推進(jìn)和信息技術(shù)的持續(xù)發(fā)展,Java卡已在身份認(rèn)證、電子支付和信息安全領(lǐng)域得到了廣泛的應(yīng)用。
關(guān)鍵詞:Java 智能卡 技術(shù) 研究
中圖分類號(hào):TP2文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1674-098X(2011)04(c)-0016-01
Java智能卡,顧名思義就是一種能運(yùn)行Java語(yǔ)言程序的智能卡。其實(shí)質(zhì)是,在資源非常有限的智能卡環(huán)境中,實(shí)現(xiàn)對(duì)Java語(yǔ)言部分子集的支持,從而實(shí)現(xiàn)能夠在智能卡中運(yùn)行利用這部分Java語(yǔ)言子集開(kāi)發(fā)的應(yīng)用程序的目的。因此,可以說(shuō)Java智能卡是Java嵌入到智能卡中的一種新的應(yīng)用。Java卡的出現(xiàn),使原有嵌入式設(shè)備只能實(shí)現(xiàn)單一或有限應(yīng)用的局面得以突破,使得真正意義上的一卡多應(yīng)用成為現(xiàn)實(shí)。
1 Java智能卡的基本概念
Java語(yǔ)言的最大特點(diǎn)是平臺(tái)無(wú)關(guān)性,即在不同的系統(tǒng)平臺(tái)上,都可以使用相同的代碼。Java語(yǔ)言的這一特性使得應(yīng)用程序的移植變得更加容易。Java智能卡又稱為Java Card,Java智能卡技術(shù)的原理是在智能卡硬件系統(tǒng)上構(gòu)建一套軟件平臺(tái)。該軟件平臺(tái)需要實(shí)現(xiàn)Java程序的下載、安裝以及執(zhí)行功能。其中Java程序的下載和安裝功能由Java智能卡的運(yùn)行環(huán)境實(shí)現(xiàn),而Java智能卡程序的執(zhí)行則需要Java智能卡的運(yùn)行環(huán)境、卡內(nèi)虛擬機(jī)以及Java智能卡基礎(chǔ)類庫(kù)共同協(xié)調(diào)完成。因此,可以說(shuō)Java智能卡實(shí)際上是智能卡硬件系統(tǒng)和提供解釋執(zhí)行Java應(yīng)用程序的軟件系統(tǒng)的有機(jī)結(jié)合體。
2 Java智能卡的基本結(jié)構(gòu)及原理
2.1 從系統(tǒng)結(jié)構(gòu)上看,Java智能卡主要由Java Applet應(yīng)用層、Java智能卡軟件平臺(tái)層,以及智能卡本地系統(tǒng)層
1)Java Applet應(yīng)用層。Java智能卡規(guī)范,將運(yùn)行于Java智能卡中的應(yīng)用服務(wù)程序稱為Java Applet。該層相當(dāng)于Java智能卡應(yīng)用系統(tǒng)中的應(yīng)用服務(wù)層。一個(gè)Java智能卡中,可以根據(jù)需要下載多個(gè)應(yīng)用各不相同的Java Applet應(yīng)用程序,從而實(shí)現(xiàn)一卡多用的功能,例如,可以在一個(gè)Java智能卡中,下載用于實(shí)現(xiàn)地鐵、汽車、網(wǎng)銀、水費(fèi)、氣費(fèi)等代收功能的Java Applet應(yīng)用程序。
2)Java智能卡軟件平臺(tái)。Java智能卡軟件平臺(tái)位于Java Applet應(yīng)用層與智能卡本地系統(tǒng)層之間。主要功能是對(duì)應(yīng)用層屏蔽各類不同智能卡硬件系統(tǒng)之間的差異,從而實(shí)現(xiàn)Java智能卡應(yīng)用程序的硬件平臺(tái)無(wú)關(guān)。
3)智能卡本地系統(tǒng)層。該層是Java智能卡軟件平臺(tái)的宿主系統(tǒng),主要由智能卡的硬件系統(tǒng)和與之相關(guān)本地方法集組成,例如,與某一指定硬件芯片相關(guān)的驅(qū)動(dòng)程序等。Java智能卡軟件平臺(tái)需要使用本地方法集來(lái)實(shí)現(xiàn)對(duì)智能卡硬件資源地實(shí)際訪問(wèn)和操作。
4)Java智能卡運(yùn)行環(huán)境(Java Card Runtime Environment,簡(jiǎn)稱JCRE)。JCRE定義了Java虛擬機(jī)和Java Applet的生命周期。它實(shí)際上涵蓋了Java智能卡虛擬機(jī)、Java智能卡應(yīng)用程序編程接口(包括某些與特定行業(yè)相關(guān)的擴(kuò)展類庫(kù))、Java Applet安裝程序?qū)ο蟆?/p>
5)Java智能卡API(Application Programming Interface,簡(jiǎn)稱JCAPI)。JCAPI為開(kāi)發(fā)人員定義了一整套編程應(yīng)用接口類,提供了編寫智能卡應(yīng)用程序所需要的接口。
6)Java智能卡虛擬機(jī)(Java Card Virtual Machine,簡(jiǎn)稱JCVM)。Java智能卡虛擬機(jī)分為卡外虛擬機(jī)和卡內(nèi)虛擬機(jī)。卡外虛擬機(jī)也稱為轉(zhuǎn)換器,用于將JavaApplet轉(zhuǎn)換為卡內(nèi)虛擬機(jī)所識(shí)別的字節(jié)碼指令。
2.2 JCRE的基本概念和主要功能
2.2.1 Java智能卡運(yùn)行環(huán)境的主要負(fù)責(zé)完成的功能
①實(shí)現(xiàn)Java智能卡與外部環(huán)境的通信和數(shù)據(jù)連接。
②Java智能卡的Applet應(yīng)用程序安裝功能。
③調(diào)度Java智能卡中的Java Applet應(yīng)用程序。
④構(gòu)建Applet之間的共享資源訪問(wèn)機(jī)制。
2.2.2 Java智能卡與外部環(huán)境的通信和數(shù)據(jù)連接
實(shí)現(xiàn)Java智能卡內(nèi)的Applet應(yīng)用程序與外部計(jì)算環(huán)境(例如PC操作系統(tǒng)中的客戶端或服務(wù)器端等)之間的通信。
2.2.3 Java智能卡的Applet應(yīng)用程序安裝功能
Java智能卡的Applet應(yīng)用程序安裝功能。即將新的Applet應(yīng)用程序下載并安裝到Java智能卡中,這一功能也被具體稱為Java智能卡的Java Applet安裝器。使用Java語(yǔ)言編寫的Java智能卡應(yīng)用程序并不能直接在智能卡上運(yùn)行,而需經(jīng)過(guò)以下幾個(gè)步驟:
①編譯,將Java Applet語(yǔ)言編譯為二進(jìn)制文件;
②轉(zhuǎn)換,然后使用Java智能卡卡外虛擬機(jī)將其轉(zhuǎn)換為JCVM可以識(shí)別的字節(jié)碼文件。由于Sun公司已經(jīng)為開(kāi)發(fā)人員提供了完成此項(xiàng)功能的專用工具(Converter)故在開(kāi)發(fā)Java智能卡軟件平臺(tái)時(shí)無(wú)需實(shí)現(xiàn)轉(zhuǎn)換器模塊。
③下載,轉(zhuǎn)換為字節(jié)碼文件后的應(yīng)用程序需要經(jīng)過(guò)JCRE的下載功能將其從外部環(huán)境,例如PC操作系統(tǒng)中下載到Java智能卡中。
④安裝,下載到Java智能卡中的Applet應(yīng)用程序還不能馬上被執(zhí)行,還需安裝注冊(cè)到JCRE中后才可能被啟動(dòng)和執(zhí)行。
2.2.4 Java Applet的調(diào)度功能
Java智能卡中的Applet應(yīng)用程序是由JCRE啟動(dòng)的,且在這些應(yīng)用程序執(zhí)行完畢后,還需將控制權(quán)換給JCRE。在某種意義上,這有點(diǎn)類似于PC機(jī)中的操作系統(tǒng)。JCRE的這一調(diào)度功能同樣需要與JCVM協(xié)同完成。一個(gè)Java智能卡Applet被下載到智能卡中后,可能會(huì)處于以下四種狀態(tài):
①已安裝狀態(tài)(installed)。狀態(tài)為應(yīng)用程序安裝并在卡上注冊(cè)后的狀態(tài)。
②被選擇狀態(tài)(select)。只有在應(yīng)用程序被選擇后,應(yīng)用程序才能被激活,進(jìn)入命令處理狀態(tài),等待Java智能卡卡內(nèi)虛擬機(jī)解釋執(zhí)行。
③命令處理狀態(tài)(process)。在此狀態(tài)下,Java智能卡Applet中的process方法被解釋器解釋執(zhí)行。通過(guò)在應(yīng)用程序中重載此方法,即可完成不同的智能卡應(yīng)用功能。
④取消選擇狀態(tài)(deselect)。此狀態(tài)為應(yīng)用程序的非激活狀態(tài),直到該應(yīng)用程序被重新選擇為止。JCRE的調(diào)度功能實(shí)際上就是調(diào)度應(yīng)用程序Applet在以上四種狀態(tài)間切換的過(guò)程。
2.3 JCVM的基本概念和主要功能
Java智能卡虛擬機(jī)JCVM(Java Cand Virtual Machine)的主要功能是解釋執(zhí)行字節(jié)碼指令,由于Java Applet被轉(zhuǎn)換為可供JCVM識(shí)別的字節(jié)碼指令,才使得Java智能卡平臺(tái)具備了硬件無(wú)關(guān)的特性。所以,JCVM是整個(gè)Java智能卡軟件平臺(tái)體系架構(gòu)的核心。
參考文獻(xiàn)
[1]林勝利,路宗強(qiáng),王坤茹,等.Java智能卡開(kāi)發(fā)關(guān)鍵技術(shù)與實(shí)例[M].北京.中國(guó)鐵道出版社,2006.
[2]明艷,李強(qiáng).Java Card技術(shù)在智能卡中的應(yīng)用[J].廣東通信技術(shù),2002.