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