歡迎您訪問(wèn)鄭州興邦電子股份有限公司官方網(wǎng)站!
阿里巴巴誠(chéng)信通企業(yè)
全國(guó)咨詢熱線:40000-63966
興邦電子,中國(guó)水控機(jī)第一品牌

聯(lián)系興邦電子

全國(guó)咨詢熱線:40000-63966

售后:0371-55132951/55132952

工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

java卡概述

文章出處:http://overnightmodel.com 作者:概述   人氣: 發(fā)表時(shí)間:2011年09月09日

[文章內(nèi)容簡(jiǎn)介]:java卡概述

 早期的智能卡主要是以一種介質(zhì)形式出現(xiàn)的,它可以在卡體內(nèi)存儲(chǔ)金額,從而能在公共電話機(jī)或自動(dòng)售貨機(jī)上被使用。它完成的是一種存儲(chǔ)信息的應(yīng)用。這時(shí)卡的需求量并不大。同時(shí)卡的應(yīng)用也不多。而近來(lái),隨著智能卡地越來(lái)越“智能”,由于智能卡的優(yōu)點(diǎn)越來(lái)越被人認(rèn)可,它的應(yīng)用范圍也越來(lái)越廣泛:從銀行的借貸卡,存放個(gè)人醫(yī)療信息的醫(yī)療卡,到有線和無(wú)線網(wǎng)絡(luò)的安全模塊卡等等。智能卡的應(yīng)用可以說(shuō)是涉及到了各個(gè)領(lǐng)域,幾乎每個(gè)人都要與智能卡打交道。市場(chǎng)的需求量急劇上升,同時(shí)越來(lái)越多的智能卡新應(yīng)用也隨之誕生。

  但與智能卡需求量急劇上升所矛盾的是:智能卡應(yīng)用的研發(fā)是一個(gè)復(fù)雜漫長(zhǎng)的過(guò)程。盡管對(duì)智能卡的結(jié)構(gòu)大小和通信協(xié)議,國(guó)際規(guī)范 ISO7816 早已規(guī)定,但各個(gè)卡生產(chǎn)商對(duì)智能卡的研制都各不相同。各個(gè)卡生產(chǎn)商對(duì)自己的智能卡操作都有自己獨(dú)特的一套指令集。

  此外,智能卡編程接口(APIs)非常復(fù)雜,用之編程,需要開(kāi)發(fā)人員非常熟悉低層通信接口協(xié)議,內(nèi)存管理和一些智能卡硬件的細(xì)節(jié)。因此,在開(kāi)發(fā)智能卡應(yīng)用之前,開(kāi)發(fā)人員就需要花費(fèi)大量時(shí)間來(lái)了解智能卡的復(fù)雜開(kāi)發(fā)環(huán)境,而且在他們研究后會(huì)發(fā)現(xiàn)并不存在現(xiàn)代化的開(kāi)發(fā)工具(象 Visual Studio 那樣工具)。更糟糕的是:對(duì)不同的智能卡并沒(méi)有一個(gè)通用的開(kāi)發(fā)環(huán)境。每次你要開(kāi)發(fā)一種新的應(yīng)用,可能你都必須從新了解一種新的開(kāi)發(fā)環(huán)境。

  情況有可能還沒(méi)有這么簡(jiǎn)單。由于所有的智能卡都是在專門的開(kāi)發(fā)環(huán)境中開(kāi)發(fā)出來(lái)的,不同的卡的生產(chǎn)商生產(chǎn)出來(lái)的相同應(yīng)用的卡可能并不兼容,這使同一系統(tǒng)中使用不同生產(chǎn)商的卡變得很復(fù)雜。

  據(jù)估計(jì),2001 年,智能卡的需求量為 10-30 億片。而了解智能卡編程的人員少之又少。智能卡編程的復(fù)雜性,不統(tǒng)一性將嚴(yán)重阻礙智能卡的發(fā)展。市場(chǎng)的需求為智能卡的發(fā)展提出了新的要求。然而這一切將隨著 JAVA 卡的出現(xiàn)而改變。

  JAVA卡的出現(xiàn)
  JAVA 卡是一種可以運(yùn)行 JAVA 程序的接觸式微處理器智能卡,在卡中運(yùn)行的程序叫 Applet。Applet 可以動(dòng)態(tài)裝載到 JAVA 卡上。JAVA 卡的 API(JAVA Card 2.1.1 Application Programming Interfaces Specification )為智能卡制定了一個(gè) JAVA 語(yǔ)言的特殊子集。如今95%智能卡制造商已經(jīng)支持了 JAVA 卡的 API。JAVA 卡和 JAVA 卡 API 的出現(xiàn)使智能卡的編程變得既快又簡(jiǎn)單,同時(shí)這些卡的應(yīng)用程序(Applet)可以在任何支持 JAVA 卡 API 的智能卡上運(yùn)行??梢哉f(shuō) JAVA 卡的出現(xiàn)立刻解決了 JAVA 卡出現(xiàn)之前智能卡所遇到的問(wèn)題。

  JAVA 卡是如何完成這一巨大的功能的呢?原來(lái)在 JAVA 卡內(nèi)有一個(gè)能執(zhí)行 JAVA 字節(jié)碼(Applet)的 JAVA 虛擬機(jī)-它提供一整套標(biāo)準(zhǔn)的 JAVA 卡編程的 API,使得開(kāi)發(fā)人員無(wú)需了解復(fù)雜的智能卡硬件和智能卡專用的技術(shù),就可以進(jìn)行智能卡應(yīng)用的開(kāi)發(fā),從而大大減少開(kāi)發(fā)時(shí)間和降低開(kāi)發(fā)難度。據(jù)粗略的統(tǒng)計(jì),用 JAVA 來(lái)編程可以比用 C 語(yǔ)言來(lái)編程節(jié)約 60% 的開(kāi)發(fā)時(shí)間,如與智能卡特殊的匯編語(yǔ)言來(lái)比,這種優(yōu)勢(shì)將更為明顯。同時(shí)由于 JAVA 虛擬機(jī)的使用,JAVA 卡的 Applet 能夠在不同卡片的 JCAE(JAVA Card Application Environment)上執(zhí)行,即透過(guò) JAVA 虛擬機(jī)的機(jī)制來(lái)達(dá)到跨平臺(tái)的能力。

  JAVA 是一種面對(duì)對(duì)象的編程語(yǔ)言,智能卡的基于對(duì)象的 API 大大簡(jiǎn)化了卡內(nèi) Applet 與終端或后臺(tái)服務(wù)器的通信。

  JAVA 卡的另一巨大優(yōu)勢(shì)是:開(kāi)發(fā)人員可以任意選擇他們所熟悉和喜歡的開(kāi)發(fā)工具。由于對(duì) JAVA 卡的編程是用 JAVA 語(yǔ)言,所有幾乎當(dāng)今所有流行的 JAVA 開(kāi)發(fā)環(huán)境,如 VJ++,Vcafe 等,都可以被用來(lái)進(jìn)行 JAVA 卡的開(kāi)發(fā)。正因如此,快速完成和調(diào)試 JAVA 卡的應(yīng)用程序也變?yōu)榱丝赡?。而在這之前,調(diào)試卡的應(yīng)用程序是一個(gè)極復(fù)雜漫長(zhǎng)的過(guò)程,因?yàn)閼?yīng)用程序首先要被裝載到卡的 ROM 中,而裝載到卡的 ROM 中的程序是無(wú)法更新的,所以對(duì)一個(gè)應(yīng)用程序的調(diào)試將占用大量的時(shí)間。

  同時(shí)由于任何 JAVA 開(kāi)發(fā)人員都可以變?yōu)?JAVA 卡開(kāi)發(fā)人員,這就為智能卡的發(fā)展提供了強(qiáng)有力的保證。

  JAVA 卡還有兩大優(yōu)點(diǎn):支持一卡多用途和重用。支持一卡多用途是指 JAVA 卡上可以同時(shí)存在多個(gè)不同的應(yīng)用。這些應(yīng)用可以來(lái)自同一個(gè)卡供應(yīng)商,也可以來(lái)自不同的卡供應(yīng)商。這樣一張 JAVA 卡就可以完成不同的功能,例如,它可以有電子錢包功能,同時(shí)也可以有身份鑒別功能。重用是指 JAVA 卡上的應(yīng)用可以根據(jù)需要進(jìn)行刪除或重新添加新的應(yīng)用,而無(wú)需更換新的智能卡,這樣大大增強(qiáng)智能卡的靈活性。

  綜上所述,JAVA 卡的出現(xiàn)統(tǒng)一了智能卡的編程接口(API),統(tǒng)一了智能卡的編程語(yǔ)言(JAVA 語(yǔ)言),為智能卡的更大范圍的使用提供了基礎(chǔ),真正使智能卡行業(yè)成為一個(gè)統(tǒng)一標(biāo)準(zhǔn)的產(chǎn)業(yè)。

  JAVA卡的基本概念

  JAVA卡的結(jié)構(gòu)
  可以說(shuō) JAVA 卡是 JAVA 平臺(tái)中最小的子集。JAVA 卡 2.1 的規(guī)范可以在 http://www.javasoft.com/javacard 這個(gè)網(wǎng)址得到。JAVA 卡 2.1 規(guī)范主要包括有:JAVA 卡虛擬機(jī)規(guī)范,JAVA 卡編程接口(API)和 JAVA 卡運(yùn)行環(huán)境規(guī)范。
  JAVA 卡有點(diǎn)象一部功能齊全,但規(guī)模較小的電腦,其硬件主要是為了保證 JAVA 卡的運(yùn)行環(huán)境的需要,其最小的硬件配置要求為:

  512 bytes RAM:主要用于存放程序執(zhí)行時(shí)的堆棧、暫存資料以及做為I/O的緩沖區(qū)。
  24 KB ROM:主要用于存放操作系統(tǒng)以及運(yùn)行環(huán)境(Runtime Environment),如 JAVA 虛擬機(jī)、Applet 等。
  8 KB EEPROM:用于儲(chǔ)存我們開(kāi)發(fā)并裝載至 JAVA 卡上的Applet。
  8-bit processor: JAVA 卡需要至少8位的處理器支持。
  那么 JAVA 卡的內(nèi)部結(jié)構(gòu)究竟是怎么樣的呢?根據(jù)上述的硬件介紹,基本上我們可以將 JAVA 卡想像為一部 PC 的縮影:JAVA 卡的內(nèi)部結(jié)構(gòu)由 OS、native functions、JAVA VM(JAVA 虛擬機(jī))、JAVA Framework 以及架構(gòu)在此上的應(yīng)用程序(Applet)所構(gòu)成。下圖即為 JAVA 卡內(nèi)部結(jié)構(gòu):
  在此結(jié)構(gòu)中,最底層的 OS(操作系統(tǒng)) and Native Functions(基本函數(shù))是負(fù)責(zé)低層的處理工作,如同 PC 的操作系統(tǒng)。

  JAVA 虛擬機(jī)處于OS and Native Functions 之上,它的存在實(shí)現(xiàn)了卡接口的統(tǒng)一和編程語(yǔ)言的統(tǒng)一。并且也隱藏了卡底層各個(gè)卡供應(yīng)商不同的技術(shù)。
  JAVA 卡 Framework 為開(kāi)發(fā)人員定義了一整套編程接口類,主要負(fù)責(zé)執(zhí)行 JAVA 卡 Applet 以及提供 Applet 執(zhí)行所需要的環(huán)境。
  Industry Add-on Classes 則是服務(wù)方所提供的類,使得企業(yè)與公司能夠提供屬于自己的服務(wù)程序,例如,如果這張卡是 GSM 網(wǎng)絡(luò)的 SIM 卡,那么這一層就是 SIM 卡所需的接口類。

  JAVA 卡的最上層就是所謂的 JAVA 卡 Applet,也就是我們要進(jìn)行開(kāi)發(fā)的應(yīng)用。如圖所示,一個(gè) JAVA 卡可以執(zhí)行多個(gè) JAVA 卡 Applet。每個(gè) Applet 是靠 AID (應(yīng)用ID號(hào))來(lái)識(shí)別的。但是要特別注意,JAVA 卡的執(zhí)行環(huán)境并不支援多線程,所以一次只能執(zhí)行一個(gè) Applet,并且 Applet 與 Applet 之間也有防火墻的阻隔。


  JAVA 卡的生命期
  當(dāng) JAVA 卡的 OS,虛擬機(jī),編程接口(API)類庫(kù)裝載到卡的 ROM 之后,JAVA 卡即開(kāi)始了它的工作使命。這個(gè)把 JAVA 卡的固定不變的組件放入芯片的不可重寫區(qū)域(ROM)的過(guò)程叫掩膜(MASK)。不過(guò),要使 JAVA 卡真正能使用還要兩個(gè)必須的過(guò)程:初始化和個(gè)人化。初始化是指:在卡體內(nèi)(一般在 EEPROM 中)創(chuàng)建文件結(jié)構(gòu)。這個(gè)文件結(jié)構(gòu)是大家都有的,它的具體內(nèi)容是與你這張 JAVA 卡的功能有關(guān)。比如:你的卡是銀行卡,那么卡內(nèi)結(jié)構(gòu)就是由銀行業(yè)規(guī)定的結(jié)構(gòu);如卡是 SIM 卡,那么卡的結(jié)構(gòu)就要根據(jù) GSM 規(guī)范來(lái)定。初始化并沒(méi)有涉及到個(gè)人信息。如果卡要發(fā)行給指定的某個(gè)人,就要通過(guò)個(gè)人化過(guò)程來(lái)完成。個(gè)人化就是把個(gè)人信息附于卡。它可以是物理過(guò)程,如打印某人的照片;也可以是電子過(guò)程:把個(gè)人信息寫入卡中。如你的 ID 號(hào),PIN 碼等等。初始化和個(gè)人化可以由制卡商或發(fā)行商來(lái)完成。當(dāng)初始化和個(gè)人化完成后,這張 JAVA 卡就可以被使用了。你可以把卡插入讀卡器,對(duì)它發(fā)出 APDU 指令,或下載更多的 Applet。JAVA卡的生命期將一直持續(xù)到它被物理?yè)p害,被不正確的操作鎖死或卡的應(yīng)用過(guò)期。

  JAVA 卡虛擬機(jī)的生命期
  與 PC 中的 JAVA 虛擬機(jī)不同,JAVA 卡中的虛擬機(jī)將永遠(yuǎn)運(yùn)行。那怕掉電后,卡上的信息也將被保存下來(lái)。所以 JAVA 卡虛擬機(jī)的生命期是與 JAVA 卡生命期一致的。當(dāng)沒(méi)有電源時(shí),虛擬機(jī)就象在一個(gè)無(wú)限大的時(shí)鐘頻率下運(yùn)行。

  JAVA 卡 Applet 的生命期
  Applet 開(kāi)始于 Applet 被安裝并在卡的注冊(cè)表中注冊(cè),終止于 Applet 被從注冊(cè)表中注銷。一般 Applet 在卡中是沒(méi)有被激活的,只有當(dāng)這個(gè) Applet 被終端“選擇”(Select)到時(shí),Applet 才被激活。

本文關(guān)鍵詞:java卡概述
上一篇:智能卡安全攻略[ 09-09 ] 下一篇:北京市中小學(xué)生ic卡簡(jiǎn)介[ 09-09 ]
回到頂部