java卡概述
文章出處:http://56733.cn 作者:概述 人氣: 發(fā)表時間:2011年09月09日
[文章內容簡介]:java卡概述
早期的智能卡主要是以一種介質形式出現的,它可以在卡體內存儲金額,從而能在公共電話機或自動售貨機上被使用。它完成的是一種存儲信息的應用。這時卡的需求量并不大。同時卡的應用也不多。而近來,隨著智能卡地越來越“智能”,由于智能卡的優(yōu)點越來越被人認可,它的應用范圍也越來越廣泛:從銀行的借貸卡,存放個人醫(yī)療信息的醫(yī)療卡,到有線和無線網絡的安全模塊卡等等。智能卡的應用可以說是涉及到了各個領域,幾乎每個人都要與智能卡打交道。市場的需求量急劇上升,同時越來越多的智能卡新應用也隨之誕生。
但與智能卡需求量急劇上升所矛盾的是:智能卡應用的研發(fā)是一個復雜漫長的過程。盡管對智能卡的結構大小和通信協(xié)議,國際規(guī)范 ISO7816 早已規(guī)定,但各個卡生產商對智能卡的研制都各不相同。各個卡生產商對自己的智能卡操作都有自己獨特的一套指令集。
此外,智能卡編程接口(APIs)非常復雜,用之編程,需要開發(fā)人員非常熟悉低層通信接口協(xié)議,內存管理和一些智能卡硬件的細節(jié)。因此,在開發(fā)智能卡應用之前,開發(fā)人員就需要花費大量時間來了解智能卡的復雜開發(fā)環(huán)境,而且在他們研究后會發(fā)現并不存在現代化的開發(fā)工具(象 Visual Studio 那樣工具)。更糟糕的是:對不同的智能卡并沒有一個通用的開發(fā)環(huán)境。每次你要開發(fā)一種新的應用,可能你都必須從新了解一種新的開發(fā)環(huán)境。
情況有可能還沒有這么簡單。由于所有的智能卡都是在專門的開發(fā)環(huán)境中開發(fā)出來的,不同的卡的生產商生產出來的相同應用的卡可能并不兼容,這使同一系統(tǒng)中使用不同生產商的卡變得很復雜。
據估計,2001 年,智能卡的需求量為 10-30 億片。而了解智能卡編程的人員少之又少。智能卡編程的復雜性,不統(tǒng)一性將嚴重阻礙智能卡的發(fā)展。市場的需求為智能卡的發(fā)展提出了新的要求。然而這一切將隨著 JAVA 卡的出現而改變。
JAVA卡的出現
JAVA 卡是一種可以運行 JAVA 程序的接觸式微處理器智能卡,在卡中運行的程序叫 Applet。Applet 可以動態(tài)裝載到 JAVA 卡上。JAVA 卡的 API(JAVA Card 2.1.1 Application Programming Interfaces Specification )為智能卡制定了一個 JAVA 語言的特殊子集。如今95%智能卡制造商已經支持了 JAVA 卡的 API。JAVA 卡和 JAVA 卡 API 的出現使智能卡的編程變得既快又簡單,同時這些卡的應用程序(Applet)可以在任何支持 JAVA 卡 API 的智能卡上運行??梢哉f JAVA 卡的出現立刻解決了 JAVA 卡出現之前智能卡所遇到的問題。
JAVA 卡是如何完成這一巨大的功能的呢?原來在 JAVA 卡內有一個能執(zhí)行 JAVA 字節(jié)碼(Applet)的 JAVA 虛擬機-它提供一整套標準的 JAVA 卡編程的 API,使得開發(fā)人員無需了解復雜的智能卡硬件和智能卡專用的技術,就可以進行智能卡應用的開發(fā),從而大大減少開發(fā)時間和降低開發(fā)難度。據粗略的統(tǒng)計,用 JAVA 來編程可以比用 C 語言來編程節(jié)約 60% 的開發(fā)時間,如與智能卡特殊的匯編語言來比,這種優(yōu)勢將更為明顯。同時由于 JAVA 虛擬機的使用,JAVA 卡的 Applet 能夠在不同卡片的 JCAE(JAVA Card Application Environment)上執(zhí)行,即透過 JAVA 虛擬機的機制來達到跨平臺的能力。
JAVA 是一種面對對象的編程語言,智能卡的基于對象的 API 大大簡化了卡內 Applet 與終端或后臺服務器的通信。
JAVA 卡的另一巨大優(yōu)勢是:開發(fā)人員可以任意選擇他們所熟悉和喜歡的開發(fā)工具。由于對 JAVA 卡的編程是用 JAVA 語言,所有幾乎當今所有流行的 JAVA 開發(fā)環(huán)境,如 VJ++,Vcafe 等,都可以被用來進行 JAVA 卡的開發(fā)。正因如此,快速完成和調試 JAVA 卡的應用程序也變?yōu)榱丝赡堋6谶@之前,調試卡的應用程序是一個極復雜漫長的過程,因為應用程序首先要被裝載到卡的 ROM 中,而裝載到卡的 ROM 中的程序是無法更新的,所以對一個應用程序的調試將占用大量的時間。
同時由于任何 JAVA 開發(fā)人員都可以變?yōu)?JAVA 卡開發(fā)人員,這就為智能卡的發(fā)展提供了強有力的保證。
JAVA 卡還有兩大優(yōu)點:支持一卡多用途和重用。支持一卡多用途是指 JAVA 卡上可以同時存在多個不同的應用。這些應用可以來自同一個卡供應商,也可以來自不同的卡供應商。這樣一張 JAVA 卡就可以完成不同的功能,例如,它可以有電子錢包功能,同時也可以有身份鑒別功能。重用是指 JAVA 卡上的應用可以根據需要進行刪除或重新添加新的應用,而無需更換新的智能卡,這樣大大增強智能卡的靈活性。
綜上所述,JAVA 卡的出現統(tǒng)一了智能卡的編程接口(API),統(tǒng)一了智能卡的編程語言(JAVA 語言),為智能卡的更大范圍的使用提供了基礎,真正使智能卡行業(yè)成為一個統(tǒng)一標準的產業(yè)。
JAVA卡的基本概念
JAVA卡的結構
可以說 JAVA 卡是 JAVA 平臺中最小的子集。JAVA 卡 2.1 的規(guī)范可以在 http://www.javasoft.com/javacard 這個網址得到。JAVA 卡 2.1 規(guī)范主要包括有:JAVA 卡虛擬機規(guī)范,JAVA 卡編程接口(API)和 JAVA 卡運行環(huán)境規(guī)范。
JAVA 卡有點象一部功能齊全,但規(guī)模較小的電腦,其硬件主要是為了保證 JAVA 卡的運行環(huán)境的需要,其最小的硬件配置要求為:
512 bytes RAM:主要用于存放程序執(zhí)行時的堆棧、暫存資料以及做為I/O的緩沖區(qū)。
24 KB ROM:主要用于存放操作系統(tǒng)以及運行環(huán)境(Runtime Environment),如 JAVA 虛擬機、Applet 等。
8 KB EEPROM:用于儲存我們開發(fā)并裝載至 JAVA 卡上的Applet。
8-bit processor: JAVA 卡需要至少8位的處理器支持。
那么 JAVA 卡的內部結構究竟是怎么樣的呢?根據上述的硬件介紹,基本上我們可以將 JAVA 卡想像為一部 PC 的縮影:JAVA 卡的內部結構由 OS、native functions、JAVA VM(JAVA 虛擬機)、JAVA Framework 以及架構在此上的應用程序(Applet)所構成。下圖即為 JAVA 卡內部結構:
在此結構中,最底層的 OS(操作系統(tǒng)) and Native Functions(基本函數)是負責低層的處理工作,如同 PC 的操作系統(tǒng)。
JAVA 虛擬機處于OS and Native Functions 之上,它的存在實現了卡接口的統(tǒng)一和編程語言的統(tǒng)一。并且也隱藏了卡底層各個卡供應商不同的技術。
JAVA 卡 Framework 為開發(fā)人員定義了一整套編程接口類,主要負責執(zhí)行 JAVA 卡 Applet 以及提供 Applet 執(zhí)行所需要的環(huán)境。
Industry Add-on Classes 則是服務方所提供的類,使得企業(yè)與公司能夠提供屬于自己的服務程序,例如,如果這張卡是 GSM 網絡的 SIM 卡,那么這一層就是 SIM 卡所需的接口類。
JAVA 卡的最上層就是所謂的 JAVA 卡 Applet,也就是我們要進行開發(fā)的應用。如圖所示,一個 JAVA 卡可以執(zhí)行多個 JAVA 卡 Applet。每個 Applet 是靠 AID (應用ID號)來識別的。但是要特別注意,JAVA 卡的執(zhí)行環(huán)境并不支援多線程,所以一次只能執(zhí)行一個 Applet,并且 Applet 與 Applet 之間也有防火墻的阻隔。
JAVA 卡的生命期
當 JAVA 卡的 OS,虛擬機,編程接口(API)類庫裝載到卡的 ROM 之后,JAVA 卡即開始了它的工作使命。這個把 JAVA 卡的固定不變的組件放入芯片的不可重寫區(qū)域(ROM)的過程叫掩膜(MASK)。不過,要使 JAVA 卡真正能使用還要兩個必須的過程:初始化和個人化。初始化是指:在卡體內(一般在 EEPROM 中)創(chuàng)建文件結構。這個文件結構是大家都有的,它的具體內容是與你這張 JAVA 卡的功能有關。比如:你的卡是銀行卡,那么卡內結構就是由銀行業(yè)規(guī)定的結構;如卡是 SIM 卡,那么卡的結構就要根據 GSM 規(guī)范來定。初始化并沒有涉及到個人信息。如果卡要發(fā)行給指定的某個人,就要通過個人化過程來完成。個人化就是把個人信息附于卡。它可以是物理過程,如打印某人的照片;也可以是電子過程:把個人信息寫入卡中。如你的 ID 號,PIN 碼等等。初始化和個人化可以由制卡商或發(fā)行商來完成。當初始化和個人化完成后,這張 JAVA 卡就可以被使用了。你可以把卡插入讀卡器,對它發(fā)出 APDU 指令,或下載更多的 Applet。JAVA卡的生命期將一直持續(xù)到它被物理損害,被不正確的操作鎖死或卡的應用過期。
JAVA 卡虛擬機的生命期
與 PC 中的 JAVA 虛擬機不同,JAVA 卡中的虛擬機將永遠運行。那怕掉電后,卡上的信息也將被保存下來。所以 JAVA 卡虛擬機的生命期是與 JAVA 卡生命期一致的。當沒有電源時,虛擬機就象在一個無限大的時鐘頻率下運行。
JAVA 卡 Applet 的生命期
Applet 開始于 Applet 被安裝并在卡的注冊表中注冊,終止于 Applet 被從注冊表中注銷。一般 Applet 在卡中是沒有被激活的,只有當這個 Applet 被終端“選擇”(Select)到時,Applet 才被激活。
本文關鍵詞:java卡概述
上一篇:智能卡安全攻略[ 09-09 ]
下一篇:北京市中小學生ic卡簡介[ 09-09 ]