JAVA卡技術(shù)概述
文章出處:http://coolbang.cn
作者:SUN中國有限公司策略發(fā)展部經(jīng)理 邵正強
人氣:
發(fā)表時間:2011年09月07日
[文章內(nèi)容簡介]:JAVA卡技術(shù)概述
關(guān)鍵字: JAVA |
爪哇卡(JavaCard)技術(shù)可使以爪哇語言所寫成的程序,在智能卡和其它資源受限裝置上執(zhí)行。本文將讓您一覽爪哇卡技術(shù),包括該系統(tǒng)的結(jié)構(gòu)和組件。本概述的目的在讓您對爪哇卡技術(shù)有一個整體性了解,并介紹有關(guān)爪哇卡系統(tǒng)的重點和基本概念,以利程序開發(fā)者設(shè)計程序之用。 一、爪哇卡技術(shù)之組件 爪哇卡技術(shù)包括下列部分: ?。喓笾ν鄢绦蛘Z言以及適合智能卡應(yīng)用的虛擬機(JavaCardVirtualMachine,JCVM)定義 ?。诵闹ν劭☉?yīng)用程序接口(ApplicationProgrammingInterface,API)及其延伸部分 *爪哇卡之執(zhí)行時期環(huán)境(JavaCardRuntimeEnvironment,JCRE) 爪哇卡應(yīng)用程序接口和執(zhí)行時期環(huán)境是以智能卡工業(yè)標(biāo)準(zhǔn)ISO7816為模型而設(shè)計,因此,爪哇卡平臺可輕易支持跟ISO7816第一到第六部分兼容的智能卡系統(tǒng)和應(yīng)用。 爪哇卡應(yīng)用程序被稱為applets。爪哇卡平臺可支持多重應(yīng)用(multiapplication)環(huán)境。爪哇卡應(yīng)用程序則是在爪哇之執(zhí)行時期環(huán)境內(nèi)處理和執(zhí)行。 二、精簡之爪哇卡語言 若智能卡的程序可使用爪哇程序語言的所有功能寫成當(dāng)然最好,不過對智能卡和其它資源受限裝置來說,由于運算資源有限,要完全支持爪哇程序語言是不可能也不切實際的事。一般智能卡是以1K的隨機存取內(nèi)存(RAM),以及16K的非揮發(fā)性內(nèi)存(EEPROM或RAM)和24K的只讀存儲器(ROM)規(guī)格出現(xiàn),因此,爪哇卡平臺僅能支持經(jīng)小心選取且已規(guī)格化而有精簡功能的爪哇語言。此精簡爪哇語言包含之功能,適于設(shè)計智能卡以及其它小型裝置的程序,同時還能保留爪哇程序語言以對象為導(dǎo)向(object-oriented)的能力。說明爪哇程序語言所不支持的功能,可能要比說明其可支持的功能容易許多。爪哇卡平臺不支持: *大型基本數(shù)據(jù)類型:長整數(shù)、雙倍浮點、浮點 *字符和字符串 ?。嘣獢?shù)組 ?。獎討B(tài)類別加載 ?。踩芾碚?BR> *垃圾收集及終結(jié) ?。┚€ *對象復(fù)制 這些不受支持功能的關(guān)鍵詞自然會自爪哇語言中省略。部分進(jìn)階爪哇智能卡可提供垃圾收集機能,以激活爪哇卡應(yīng)用程序刪除功能。遭刪除的應(yīng)用程序空間可能可以,也可能無法再被使用,不過此乃視在該智能卡上所使用的垃圾收集者之功能范圍而定。一般而言,如果某項語言功能未清楚指明為不受支持的話,它就屬于受支持的精簡功能。 三、爪哇卡平臺結(jié)構(gòu) 爪哇程序語言原本是為運算資源相當(dāng)豐富的系統(tǒng)而設(shè)計。盡管爪哇卡平臺支持一規(guī)格化之精簡爪哇程序語言,但是將整個爪哇卡平臺安裝在有限內(nèi)存和處理能力的智能卡上,是不適合的事。即使做得到,但是如此一來,類別庫(classlibraries)或應(yīng)用程序?qū)o空間可用。爪哇卡平臺的一項重要特色是其為一分布式系統(tǒng)。事實上,它是在空間和時間上分散于智能卡和桌上計算機間的系統(tǒng)。
許多不受執(zhí)行時期限制的處理工作,例如類別加載(classloading)、驗證(verification)、決議(resolution)和連結(jié)(linking),以及位碼最佳化(bytecodeoptimization)等主要是在卡外(offcard)之個人計算機環(huán)境中執(zhí)行的系統(tǒng)組件上運作。通常在個人計算機中資源不是考量的重點。駐在卡上的系統(tǒng)組件較緊密,也適于智能卡內(nèi)存模型。爪哇卡執(zhí)行時期環(huán)境(JCRE)即由這些組件組成。JCRE負(fù)責(zé)應(yīng)用程序的執(zhí)行,并且驅(qū)使卡內(nèi)(oncard)系統(tǒng)和應(yīng)用程序安全的執(zhí)行。圖一列出爪哇卡平臺卡內(nèi)系統(tǒng)的結(jié)構(gòu)。 JCRE位于智能卡硬件和基礎(chǔ)操作系統(tǒng)常規(guī)之上。JCRE包含爪哇卡虛擬機(位碼解譯器)、爪哇卡應(yīng)用架構(gòu)類別(APIs)、特定工業(yè)延伸、以及JCRE系統(tǒng)服務(wù)。API和JCRE系統(tǒng)服務(wù)是以ISO7816智能卡標(biāo)準(zhǔn)為模型,同時可協(xié)助應(yīng)用程序和ISO7816兼容。 JCRE將爪哇卡應(yīng)用程序自智能卡商的專屬技術(shù)中分隔出來,同時也提供標(biāo)準(zhǔn)系統(tǒng)和API接口給應(yīng)用程序。因此應(yīng)用程序較小、也較容易編寫,同時也可轉(zhuǎn)置于不同的智能卡架構(gòu)上。 JCRE的底層含有爪哇卡虛擬機(JCVM)。JCVM會執(zhí)行位碼,并且確定爪哇語言安全。上圖中的JCVM只有虛擬機的位碼解譯器(bytecodeinterpreter)的部分。JCVM的另一部分嵌于一個稱為轉(zhuǎn)換器 (converter)的組件內(nèi)。轉(zhuǎn)換器是在卡外執(zhí)行,下文將進(jìn)一步說明此轉(zhuǎn)換器。 系統(tǒng)類別(systemclasses)為JCRE之執(zhí)行者,他們負(fù)責(zé)管理對象的持續(xù)和暫時行為,支持細(xì)部作業(yè)和交易,并管理主機和爪哇卡應(yīng)用程序之間的通訊,控制應(yīng)用程序的建立、選取和取消選取。為了完成任務(wù),系統(tǒng)類別通常會激活本地的方法(nativemethod)服務(wù)。 爪哇卡應(yīng)用程序架構(gòu)(framework)界定出應(yīng)用程序設(shè)計接口。此架構(gòu)包含四種API包裹的中心和延伸部分。API類別相當(dāng)緊密,同時其規(guī)格是為開發(fā)智能卡應(yīng)用程序而定出。此架構(gòu)之最大優(yōu)點為,它極易建立一個爪哇卡應(yīng)用程序。程序開發(fā)者可將大部份的精力放在應(yīng)用程序上,而不是在智能卡系統(tǒng)的基礎(chǔ)建構(gòu)上。爪哇卡應(yīng)用程序乃透過API類別取得JCRE服務(wù)。 特定的產(chǎn)業(yè)或企業(yè)可用附加的應(yīng)用數(shù)據(jù)庫,提供額外的服務(wù)或改善安全和系統(tǒng)模型。例如,威士忌開放平臺(VisaOpenPlatform)延伸JCRE服務(wù),以符合威士忌的特定安全需要。這些附加功能強化了發(fā)卡者對所發(fā)出信用卡的控制,同時也可明訂信用卡個人化的一套標(biāo)準(zhǔn)指令。 爪哇卡應(yīng)用程序可以下載(downloadable)。他們可在爪哇智能卡已生產(chǎn)之后再附加到卡上。安裝器(installer)要負(fù)責(zé)爪哇卡應(yīng)用程序的加載和安裝。通常安裝器會利用卡外安裝程序的協(xié)助,兩者一起完成安裝應(yīng)用程序的任務(wù)。由于JCRE不是必需支持動態(tài)應(yīng)用程序安裝,所以安裝器只是JCRE的一項選擇性組件。如果沒有安裝器的話,應(yīng)用程序必須在智能卡生產(chǎn)制造時,就放置到卡片上,完成生產(chǎn)制造之后的卡片上就無法再附加任何的應(yīng)用程序。 爪哇卡應(yīng)用程序當(dāng)然是以爪哇程序語言編寫的。應(yīng)用程序是由JCRE所控制管理。爪哇卡執(zhí)行時期環(huán)境包含駐在卡上的爪哇卡系統(tǒng)組件。爪哇卡轉(zhuǎn)換器和卡外安裝程序則組成爪哇卡平臺的其它部分。這個部分是在個人計算機環(huán)境中執(zhí)行。轉(zhuǎn)換器預(yù)先處理組成爪哇包裹之類別檔(classfile),并建立緊密的二元檔案(binaryfile),稱為CAP檔。CAP文件為可下載的組件??ㄍ獍惭b程序取得CAP文件并將它傳送給卡內(nèi)安裝器。 四、爪哇卡虛擬機 爪哇卡虛擬機(JCVM)和爪哇虛擬機(JVM)之間主要的不同在于JCVM被建構(gòu)為兩個不同的部分,如圖二所示。 JCVM的卡內(nèi)部分包括爪哇卡位元碼解譯器。爪哇卡轉(zhuǎn)換器是在個人計算機或工作站上執(zhí)行。該轉(zhuǎn)換器是JCVM的卡外部分。他們兩者結(jié)合可以支持虛擬機功能,其中包括加載爪哇類別檔,并且以特別的語法執(zhí)行這些檔案。轉(zhuǎn)換器會預(yù)先處理類別檔,同時會執(zhí)行驗證、決議、準(zhǔn)備、和位碼最佳化等工作,這些工作在爪哇虛擬機是在類別加載時期執(zhí)行的。轉(zhuǎn)換器的輸出是一個CAP檔案。此CAP檔接著被放置到爪哇智能卡上,并由解譯器執(zhí)行。
1.爪哇卡轉(zhuǎn)換器 不像爪哇虛擬機一次只能處理一個類別,爪哇卡轉(zhuǎn)換器的加載和轉(zhuǎn)換單位是一個包裹。轉(zhuǎn)換器會預(yù)先處理組成爪哇包裹的類別檔,并且將該包裹轉(zhuǎn)換成一個CAPn。在轉(zhuǎn)換的過程中,轉(zhuǎn)換器會執(zhí)行下列步驟: ?。炞C和精簡爪哇語言檢查:確認(rèn)類別的加載形象(image)妥善形成,同時檢查爪哇卡精簡語言是否有任何違規(guī)情況。 ?。B結(jié)和決議:將類別、方法、和區(qū)域的符號型參考(symbolicreferences),分解成較緊密的形式,使之可在卡上更有效的處理。 ?。淮a最佳化:利用在類別加載和連結(jié)時期取得的信息,優(yōu)化其位碼。 ?。獪?zhǔn)備和初始化:為不同類別安排儲存空間,并建立VM數(shù)據(jù)結(jié)構(gòu);同時初始化靜態(tài)變量。 轉(zhuǎn)換器的輸入不僅包括將被轉(zhuǎn)換的類別檔,同時還包括了一個或一個以上的輸出檔(exportfiles)。輸出檔內(nèi)含經(jīng)由被轉(zhuǎn)換的類別所輸入的包裹內(nèi)容的名稱和連結(jié)信息。除了產(chǎn)生一個CAP檔之外,轉(zhuǎn)換器還會為被轉(zhuǎn)換的包裹產(chǎn)生一個輸出檔。 2.CAP檔和輸出檔 CAP是被轉(zhuǎn)換的應(yīng)用程序(convertedapplet)的縮寫。一個CAP檔通常是指定義一個或多個爪哇卡應(yīng)用程序的包裹。不過,包裹未必定義一個應(yīng)用程序。在該情況下,CAP文件可代表一個數(shù)據(jù)庫包裹,提供由應(yīng)用程序所共享的一般類別和服務(wù)。例如,爪哇卡架構(gòu)API包裹全都是數(shù)據(jù)庫包裹。 爪哇程序的一但編寫隨處執(zhí)行(writeoncerunanywhere)或許是爪哇平臺最重要的特色。在爪哇技術(shù)中,類別文件是爪哇結(jié)構(gòu)的中心部分。其定義出爪哇平臺二元碼兼容性(binarycompatibility)的標(biāo)準(zhǔn)。由于爪哇卡虛擬機結(jié)構(gòu)的分散特性,CAP檔可為爪哇平臺執(zhí)行碼兼容性設(shè)定標(biāo)準(zhǔn)檔案格式。CAP文件格式是一種特別形式,軟件可以此種形式載在執(zhí)行爪哇卡執(zhí)行時期環(huán)境的智能卡上。 輸出檔并非載在智能卡上,因此爪哇卡解譯器并不直接使用之。相反的,輸出檔是轉(zhuǎn)換器因連結(jié)目的而產(chǎn)生和使用的。輸出文件可被認(rèn)為C語言中的起頭文件(headerfile)。輸出文件包含整個類別包裹的公共API信息(類別的名稱和連結(jié)信息、接口、方法、和包裹中的區(qū)域),程序開發(fā)者可以自由的將輸出文件送到該應(yīng)用程序的潛在使用者處。 3.爪哇卡解譯器 爪哇卡解譯器本身不加載或操控CAP檔。它只執(zhí)行在CAP檔中所發(fā)現(xiàn)的爪哇卡應(yīng)用程序,CAP文件是由安裝器所加載。爪哇卡解譯器和安裝器之間的功能劃分,使得解譯器既小巧,同時還使安裝器的實作極有彈性。 爪哇卡解譯器在實施執(zhí)行時期安全上扮演重要的角色。例如解譯器經(jīng)由應(yīng)用程序之防火墻機能,控制了對JCRE服務(wù)和應(yīng)用程序內(nèi)部通訊的存取。 到目前為止,本文一直說明爪哇卡虛擬機是包含轉(zhuǎn)換器和解譯器在內(nèi)。不過,傳統(tǒng)上爪哇卡虛擬機是被定義為虛擬機的卡上部分。虛擬機在我們目前的定義中是解譯器。在早期許多刊物中,這種傳統(tǒng)說法已經(jīng)不可動搖。因此,在本文剩余部分,爪哇卡解譯器和爪哇卡虛擬機也以此定義為主,除非文章中有特別聲明。 五、爪哇卡執(zhí)行時期環(huán)境 在個人計算機或工作站中,爪哇虛擬機是如操作系統(tǒng)過程一樣執(zhí)行。當(dāng)COS過程終結(jié)時,爪哇應(yīng)用程序和其對象就會被自動摧毀。 相反的,爪哇卡虛擬機是在爪哇卡執(zhí)行時期環(huán)境中執(zhí)行。JCRE是在卡片初始化時期被初始化。在卡片的整個生命期中,JCRE初始化只會被執(zhí)行一次。在此過程中,JCRE會初始化虛擬機,并且建立對象,以提供JCRE服務(wù)并管理應(yīng)用程序。一旦應(yīng)用程序被安裝后,JCRE會建立應(yīng)用程序?qū)嶓w(appletinstances),同時應(yīng)用程序也會建立對象來儲存資料。 大部分儲存在卡片上的信息,即使在卡片沒電時,也必須獲得保存。非揮發(fā)性內(nèi)存技術(shù)(像是EEPROM)就可使智能卡在沒有獲得供電時也能儲存信息。由于JCRE和卡片上所建立的對象常被用來代表持續(xù)的應(yīng)用程序信息,所以JCRE的壽命和卡片的壽命是一樣的。當(dāng)電力供應(yīng)中斷時,JCRE可被視為在一個無限長的時頻周期(clockcycle)中運作。 在卡片下一次得到能量時,JCRE就會醒過來,并且開始虛擬機的執(zhí)行。不過這里有一點值得注意的是,JCRE到時不會回到虛擬機在失去電力時的運作。虛擬機到時會重新設(shè)定(reset),并且自main循環(huán)一開始的地方開始執(zhí)行。JCRE重新設(shè)定和初始化是不同的,因為它可保存卡片上所建立的應(yīng)用程序和對象。在重新設(shè)定的過程中,如果有交易動作先前未完成,JCRE會執(zhí)行任何必須的清理動作,以將JCRE帶入前后一致的狀態(tài)。 六、爪哇卡API 爪哇卡API是由一組特別規(guī)劃的類別所組成,用以設(shè)計依據(jù)ISO7816模型為基礎(chǔ)的智能卡應(yīng)用程序。類別的中心和其延伸部分比爪哇平臺上的類別要緊密簡潔,同時能提供基本服務(wù)給爪哇卡應(yīng)用程序。 爪哇卡API包含三個核心包裹和一個延伸包裹。這三個核心包裹分別是java.lang,javacard.framework和javacard.security。延伸包裹為javacardx.crypto。除了在java.lang包裹中的類別之外,熟悉爪哇平臺的程序開發(fā)者不一定認(rèn)識大部分爪哇卡的類別。這是因為許多爪哇類別是支持GUI接口和網(wǎng)絡(luò),以及桌上型檔案系統(tǒng)IO。智能卡并沒有顯示器,同時他們是使用不同的網(wǎng)絡(luò)協(xié)議和檔案系統(tǒng)結(jié)構(gòu)。 1.java.lang包裹 一般來說,在爪哇卡API中不支持任何爪哇API類別。不過有些來自java.lang包裹的類別,可提供基本的爪哇語言支持。這種類別是Object、Throwable以及一些與VM相關(guān)的exception類別。Object類別定義出爪哇卡類別階層的根基,而Throwable類別則提供所有exception一個共同之前導(dǎo)者(ancestor)。在因爪哇語言有違規(guī)情況而發(fā)生錯誤時,被支持的exception類別可確保爪哇語言的語意正確。例如,爪哇虛擬機和爪哇卡虛擬機在存取到一個空置參考(null-reference)時,都會出一個NullPointerException。在爪哇卡平臺上所支持的類別列于表1。 表1 爪哇卡java.lang包裹 Object Throwable Exception Runtime Exception Arithmetic Excep-tion Array Index out Of Bounds Exception Array Stor Exception Class Cast Excep-tion Index Out Of Bounds Exception NullPointerException SecurityException NegativeArraySizeException 爪哇卡java.lang包裹是在爪哇平臺上與其對等的java.lang的精簡版。由于java.lang包裹中所支持的類別,爪哇卡applet是向上兼容的。在類別通路中所需的爪哇卡類別在可用時,爪哇卡applet即可在桌上型爪哇環(huán)境中執(zhí)行。 2.javacard.framework包裹 javacard.framework是一種基本包裹。它為爪哇卡應(yīng)用程序的核心功能提供架構(gòu)類別和接口。最重 要的是,它定義出一個和爪哇應(yīng)用程序類別具有相同角色的基礎(chǔ)應(yīng)用程序類別?;A(chǔ)類別“applet”在 應(yīng)用程序的生命周期中,為應(yīng)用程序之執(zhí)行提供架構(gòu),同時也提供和JCRE的交互作用。一個使用者應(yīng) 用程序類別必須延伸自基礎(chǔ)“applet類別,并且會改寫“applet類別中的方法,以實施應(yīng)用程序的功能。 在javacard.framework包裹中另一個重要的類別是APDU類別。APDU為applicationprotocoldataunits之縮寫,是在智能卡應(yīng)用程序和主機應(yīng)用程序之間交換的資料包裹。每個APDU包含一個主機下給智能卡應(yīng)用程序的指令,或應(yīng)用程序回給主機的響應(yīng)。應(yīng)用程序開發(fā)者可以使用在APDU類別中所提供的方法,而更輕易的處理APDU指令。 java.lang.System類別是不被支持的。爪哇卡平臺會提供接口給系統(tǒng)行為的javacard.framework.JCSystem類別。JCSystem類別包括一組方法,來控制應(yīng)用程序的執(zhí)行、資源管理、交易管理、以及在爪哇卡平臺上應(yīng)用程序和應(yīng)用程序之間的對象分享。 其它在javacard.framework包裹中所支持的類別是個人識別碼(PIN)、工具(utility)、和exceptions類別。 3.javacard.security包裹 javacard.security包裹提供架構(gòu)給爪哇卡平臺上所支持的密碼學(xué)(cryptographic)功能。其設(shè)計是以java.security包裹為基礎(chǔ)。 javacard.security包裹定義出一個關(guān)鍵的類別keyBuilder和各種接口。這些接口代表在對稱(DES)或非對稱(DSA和RSA)演算中所使用的密碼金鑰。此外它還支持抽象基礎(chǔ)類別RandomData,Signature,和MessageDigest。這些類別是用來產(chǎn)生隨機資料,并計算訊息摘要(digests)和簽章(signatures)。 4.javacardx.crypto包裹 javacardx.crypto包裹是一延伸(extension)包裹。其包含密碼學(xué)類別和輸出所控制的功能接口。javacardx.crypto包裹定義出支持編碼和譯碼功能的抽象基礎(chǔ)類別Cipher。 javacard.security和javacardx.crypto包裹定義出應(yīng)用程序呼叫密碼學(xué)服務(wù)的API接口。不過,它們并不提供任何實作。JCRE提供者需要供應(yīng)可執(zhí)行關(guān)鍵接口的類別,和自抽象類別RandomData,Signature,MessageDigest,和Cipher所延伸出的類別。通常在智能卡上會存有一個獨立的密碼輔助處理器,來執(zhí)行密碼學(xué)計算。 七、爪哇卡應(yīng)用程序 爪哇卡應(yīng)用程序被稱為applet。它就像其它計算機操作系統(tǒng)環(huán)境中的應(yīng)用程序處理或使用者空間一樣。 您不該只因為它們名稱中都有應(yīng)用程序,而將爪哇卡應(yīng)用程序和爪哇應(yīng)用程序給搞混了。爪哇卡應(yīng)用程序是一種依附一組規(guī)范的爪哇程序,因此能在爪哇卡執(zhí)行時期環(huán)境內(nèi)執(zhí)行。爪哇卡應(yīng)用程序并不預(yù)期在瀏覽器環(huán)境中執(zhí)行。 選擇應(yīng)用程序來命名爪哇卡應(yīng)用程序的理由,是爪哇卡應(yīng)用程序在卡片被生產(chǎn)之后可加載爪哇卡執(zhí)行時期環(huán)境內(nèi)。也就是說,不像許多嵌入系統(tǒng),應(yīng)用程序得要嵌入ROM。相反的,它們可在稍后被動態(tài)的下載到卡片上。 爪哇卡執(zhí)行時期環(huán)境支持一個多重應(yīng)用環(huán)境。每個應(yīng)用程序都由一個AID獨一認(rèn)定。一個應(yīng)用程序也可以多重實例。例如,您可為了支持美金,建立一個電子錢包(wallet)應(yīng)用程序?qū)嵗?,另外為英鎊建立一個電子錢包應(yīng)用程序?qū)嵗?BR> 應(yīng)用程序類別必須延伸自javacard.framework.Applet類別?;A(chǔ)applet類別是所有駐在爪哇卡上的應(yīng)用程序的超級類別。其定義出應(yīng)用程序必須支持的一般方法,以便在應(yīng)用程序的生命周期內(nèi)和JCRE交互作用。 八、應(yīng)用程序開發(fā)過程 爪哇卡應(yīng)用程序開發(fā)的開始和其它任何爪哇程序一樣,也就是程序開發(fā)者編寫一個或一個以上的爪哇類別,并以爪哇編碼器來編輯來源碼,并如圖三所示,產(chǎn)生一個或一個以上的類別檔。一個應(yīng)用程序會被組織成一個包裹或一組包裹。最小的應(yīng)用程序是具有一個自 javacard.framework.Applet類別所得來的單一類別的包裹。 首先,應(yīng)用程序在個人計算機或工作站的爪哇環(huán)境中被執(zhí)行、測試、并進(jìn)行除蟲動作。此過程乃利用現(xiàn)存的爪哇開發(fā)工具來測試應(yīng)用程序的功能。不過,在此步驟中,爪哇卡平臺的部分特點無法被測試,例如應(yīng)用程序防火墻、和對象的暫時性以及持續(xù)性行為就無法被測試。 接下來,應(yīng)用程序是在一個仿真環(huán)境中進(jìn)行測試。仿真器會在個人計算機或工作站上仿真爪哇卡執(zhí)行時期環(huán)境。應(yīng)用程序在仿真器執(zhí)行的行為應(yīng)該和它在一個真正卡片中執(zhí)行的行為一樣。在此開發(fā)階段,不但應(yīng)用程序會被進(jìn)一步測試,應(yīng)用程序的執(zhí)行時期行為也會被測試。
通常,仿真器和除蟲器是一起的。除蟲器可讓您設(shè)定一個分隔點(breakpoint),或?qū)⒊绦蜃兂蓡我徊襟E,并且看到仿真爪哇執(zhí)行時期環(huán)境中應(yīng)用程序變化的執(zhí)行狀態(tài)。 最后當(dāng)應(yīng)用程序準(zhǔn)備被下載進(jìn)一個真正的卡片內(nèi)時,組成應(yīng)用程序的類別文件會利用爪哇卡轉(zhuǎn)換器而轉(zhuǎn)換成CAP檔案。應(yīng)用程序的轉(zhuǎn)換過程列于圖四。轉(zhuǎn)換器的輸入不僅包括將被轉(zhuǎn)換的類別檔,同時還包括了一個或一個以上的輸出檔。當(dāng)應(yīng)用程序包裹在轉(zhuǎn)換時,轉(zhuǎn)換器也同時產(chǎn)生該包裹的一個輸出檔。一個CAP檔或一個輸出檔代表一個爪哇包裹。在進(jìn)行轉(zhuǎn)換之后,由一個或數(shù)個CAP文件所代表的應(yīng)用程序,會被加載并安裝在爪哇智能卡上。
|