專利名稱:在高端平臺(tái)上支持小程序的制作方法
背景技術(shù):
智能卡是具有提供有各種功能的嵌入式電路的卡。當(dāng)前,智能卡可用于信用卡或者借記卡、移動(dòng)電話的SIM卡、付費(fèi)電視的確認(rèn)卡、訪問(wèn)控制卡、電子錢包、公交付費(fèi)卡、以及其它各種目的。智能卡快速增長(zhǎng)的一個(gè)領(lǐng)域?yàn)閿?shù)字識(shí)別領(lǐng)域。作為用于校驗(yàn)和維護(hù)數(shù)字識(shí)別信息的工具,智能卡越來(lái)越普通。在所述數(shù)字識(shí)別領(lǐng)域使用智能卡的一個(gè)原因就是該卡被設(shè)計(jì)的安全和防竄改。
總而言之,當(dāng)前的智能卡大約為信用卡大小(雖然該卡可依其功能更大或更小)。智能卡上的嵌入式電路的類型和數(shù)量也不同。當(dāng)今使用的典型智能卡將包括約512字節(jié)的易失性存儲(chǔ)量(如,RAM)、略微大一點(diǎn)的非易失性存儲(chǔ)量(如,大約16k字節(jié)的EPROM)、以及小型微處理器。
因此,為現(xiàn)有智能卡所寫的軟件必須緊湊以在現(xiàn)有智能卡有限的計(jì)算資源環(huán)境之中執(zhí)行。用于開(kāi)發(fā)和執(zhí)行現(xiàn)有智能卡的應(yīng)用程序的軟件架構(gòu)實(shí)例為Sun Microsystem的Java卡2.2技術(shù)(“Java卡”)。為了使用現(xiàn)有智能卡上的有限資源,Java卡提供了包括標(biāo)準(zhǔn)Java卡虛擬機(jī)(如,Java卡虛擬機(jī)(“JCVM”))簡(jiǎn)略版本的操作架構(gòu)。JCVM執(zhí)行標(biāo)準(zhǔn)Java卡虛擬機(jī)指令的一個(gè)子集。
因?yàn)镴CVM不包括所有的標(biāo)準(zhǔn)Java卡虛擬機(jī)指令,所以用于現(xiàn)有智能卡的應(yīng)用程序被壓縮為專用CAP文件格式。被壓縮的小程序(applet)或“CAP”文件為傳統(tǒng)的Java類(class)文件,其通過(guò)把標(biāo)準(zhǔn)Java虛擬機(jī)指令翻譯成更緊湊的格式而被壓縮。這通過(guò)生成CAP文件的類文件中剝離不必要的信息以及減少調(diào)用可用的命令和函數(shù)的數(shù)量來(lái)進(jìn)行。
在基于Java的環(huán)境中,剝離不必要的信息可包括用權(quán)標(biāo)(如,表示長(zhǎng)字符串的少量字符或少量數(shù)字)來(lái)替代長(zhǎng)字符串。例如,初始類文件可對(duì)“JavaCard.Framework.Shareable”庫(kù)進(jìn)行外部調(diào)用。轉(zhuǎn)換工具翻譯該調(diào)用以便外部“JavaCard.Framework.Shareable”調(diào)用的所有實(shí)例被引用該特定庫(kù)的權(quán)標(biāo)(通常為一個(gè)單字節(jié)大小)所代替。因此,包含28個(gè)字符(或28字節(jié))的初始命令就顯著減小。因此,CAP文件的大小就遠(yuǎn)小于常規(guī)的類文件。注意,在把類文件轉(zhuǎn)換為CAP格式之后,為了在多個(gè)應(yīng)用程序中將外部調(diào)用(和名稱)保持一致,可將調(diào)用到所述權(quán)標(biāo)的映射存儲(chǔ)在單獨(dú)的文件(如,JCA或EXP文件)。然后,當(dāng)翻譯其它應(yīng)用程序時(shí),那些應(yīng)用程序可使用特定調(diào)用的相同權(quán)標(biāo)。以這種方式,僅需要把帶有權(quán)標(biāo)化名稱的外部資源的一個(gè)副本存儲(chǔ)在智能卡環(huán)境中。
此外,由于智能卡資源有限,所以智能卡的虛擬機(jī)一般支持規(guī)范虛擬機(jī)會(huì)支持的指令的子集。因此,在翻譯進(jìn)程期間,類格式的指令(如,Java字節(jié)代碼)就被翻譯成類似的CAP指令。通常,多個(gè)類文件指令必須減小到單個(gè)指令以執(zhí)行類似功能。一般來(lái)說(shuō),壓縮命令減少了功能。在許多情況中,類文件指令并不是簡(jiǎn)單地被智能卡支持。在那些情況下,轉(zhuǎn)換工具因其不能完成翻譯而終止,或者其可簡(jiǎn)單地忽略命令、進(jìn)入例外、提示用戶改變類文件指令、鍵入相應(yīng)的CAP文件指令、或啟動(dòng)調(diào)試接口。因?yàn)橛涩F(xiàn)有智能卡支持的有限數(shù)量的命令,所以大大減小了應(yīng)用程序的大小。
為了進(jìn)一步減少智能卡上虛擬機(jī)的大小,轉(zhuǎn)換工具可采取附加步驟以在把文件轉(zhuǎn)換成CAP格式之前對(duì)其進(jìn)行預(yù)處理?;旧?,這意味著在將文件轉(zhuǎn)換成CAP格式之前就執(zhí)行了現(xiàn)有Java虛擬機(jī)執(zhí)行的一些任務(wù)。例如,在標(biāo)準(zhǔn)Java環(huán)境中,一般在啟動(dòng)程序時(shí)或使用在變量時(shí)初始化該靜止變量。在類到CAP的轉(zhuǎn)換過(guò)程中,靜態(tài)變量被預(yù)初始化,并且類文件中的符號(hào)引用在轉(zhuǎn)換該文件之前被分解。此外,為了進(jìn)一步減少執(zhí)行CAP文件所需要的資源,Java類被檢查以確認(rèn)其被正確形成,并且在把類文件轉(zhuǎn)換成CAP格式之前僅使用由智能卡平臺(tái)正確支持的Java編程語(yǔ)言的子集。該通過(guò)減少智能卡需要執(zhí)行的查錯(cuò)和糾錯(cuò)數(shù)量,該預(yù)處理過(guò)程使現(xiàn)有智能卡上的Java虛擬機(jī)盡可能小。
在Java類文件被轉(zhuǎn)換到CAP格式之后,在一些情況下,還可創(chuàng)建諸如Java類匯編(“JCA”)文件或?qū)С?“EXP”)文件的附加文件。如上所述,這些附加文件包括關(guān)于CAP文件中類的公共接口信息,并且提供關(guān)于每個(gè)CAP文件及其任一相關(guān)文件中的域和方法的信息。
一旦類文件被轉(zhuǎn)換成CAP格式,則可使用卡上安裝程序(installer)和硬件將CPA格式的文件(“CAP文件”)下載到現(xiàn)有智能卡。
然而,正在開(kāi)發(fā)下一代智能卡,其將提供比現(xiàn)有智能卡大得多的計(jì)算資源。(注意雖然下一代智能卡具有比現(xiàn)有智能卡(如,“傳統(tǒng)(legacy)智能卡”)大得多的計(jì)算資源,但是計(jì)算資源與其它計(jì)算設(shè)備(例如,筆記本電腦、蜂窩手機(jī)、個(gè)人計(jì)算機(jī)等)相比依然相對(duì)有限)。因?yàn)楦蟮挠?jì)算資源,下一代智能卡可提供比傳統(tǒng)智能卡更復(fù)雜的計(jì)算環(huán)境。結(jié)果,軟件開(kāi)發(fā)人員開(kāi)始開(kāi)發(fā)用于下一代智能卡的更復(fù)雜的軟件。
例如,SunMicrosystem的下一代Java卡技術(shù)通過(guò)創(chuàng)建可執(zhí)行Java類文件的虛擬機(jī)等來(lái)利用所述下一代智能卡的更多資源。通過(guò)給Java類文件提供支持,下一代Java卡虛擬機(jī)就擴(kuò)展智能卡之所能。例如,新虛擬機(jī)可執(zhí)行大得多的Java類庫(kù)(如,串,可在多線程環(huán)境中執(zhí)行應(yīng)用程序,并且可利用許多Java訪問(wèn)控制機(jī)構(gòu)?;旧?,下一代Java卡環(huán)境支持許多或所有Java的傳統(tǒng)特征。
此外,通過(guò)提供對(duì)Java類文件的支持,因?yàn)榭刹捎脗鹘y(tǒng)開(kāi)發(fā)工具開(kāi)發(fā)應(yīng)用程序,且無(wú)須對(duì)該應(yīng)用程序設(shè)計(jì)或代碼進(jìn)行大的改變來(lái)進(jìn)出新的平臺(tái),所以減少了用于新智能卡平臺(tái)的應(yīng)用程序開(kāi)發(fā)成本。由此,下一代Java卡平臺(tái)極大地減少了對(duì)CAP文件的需要。
事實(shí)上,合乎情理地,當(dāng)在下一代智能卡上試圖執(zhí)行CAP格式的應(yīng)用程序時(shí)就可能發(fā)生問(wèn)題。例如,CAP文件被設(shè)計(jì)成按單線程應(yīng)用程序來(lái)運(yùn)行。結(jié)果,傳統(tǒng)智能卡上的應(yīng)用程序被設(shè)計(jì)成共享公共資源(如,應(yīng)用程序數(shù)據(jù)單元或特定系統(tǒng)文件)。在下一代智能卡環(huán)境中,在多個(gè)應(yīng)用程序中共享單個(gè)公共資源使JCVM降低速度,這是因?yàn)镴CVM必須執(zhí)行附加檢查來(lái)標(biāo)記引用的不安全存儲(chǔ)。例如,應(yīng)用程序可包括正由不同應(yīng)用程序使用的APDU對(duì)象的引用。JCVM執(zhí)行檢查來(lái)標(biāo)記這些壞引用。另外,應(yīng)用程序可使用其存儲(chǔ)的引用來(lái)訪問(wèn)APDU對(duì)象中的信息,即使假定另一應(yīng)用程序?qū)λM(jìn)行了控制。
僅在運(yùn)行時(shí)間性能問(wèn)題之外,支持下一代智能卡上的CAP文件或其它傳統(tǒng)應(yīng)用程序的另一問(wèn)題是實(shí)施兩個(gè)虛擬機(jī)的等同物的開(kāi)發(fā)和資源成本,其中,一個(gè)虛擬機(jī)支持CAP文件而另一個(gè)支持類文件。盡管下一代智能卡具有比傳統(tǒng)智能卡更多的計(jì)算資源,但它們通常不具有足夠的資源來(lái)實(shí)施兩個(gè)不同的虛擬機(jī)(或其等同物)。
一種提議的解決方案是簡(jiǎn)單地更新傳統(tǒng)應(yīng)用程序,使之與下一代智能卡兼容。然而,涉及更新并升級(jí)CAP文件和其它傳統(tǒng)應(yīng)用程序的成本和時(shí)間都是相當(dāng)可觀的。軟件用戶可能沒(méi)有時(shí)間來(lái)等待新的軟件發(fā)布,并且即便有時(shí)間,在發(fā)布軟件時(shí)他們可能也沒(méi)能力支付得起更新的應(yīng)用程序。類似地,軟件開(kāi)發(fā)人員也不可能把更新較舊的應(yīng)用程序置于高優(yōu)先權(quán)。因此,可能歷時(shí)數(shù)月或數(shù)年才(甚或不可能)更新應(yīng)用程序。
總的來(lái)說(shuō),用于使傳統(tǒng)和非傳統(tǒng)應(yīng)用程序能夠在下一代智能卡上執(zhí)行的現(xiàn)有解決方案并不令人滿意。
本節(jié)中描述的方法可以被推行,但不一定是先前已經(jīng)構(gòu)思或推行的方法。因此,除非本文另外指出,否則本節(jié)中描述的方法相對(duì)于本申請(qǐng)的權(quán)利要求來(lái)說(shuō)不是現(xiàn)有技術(shù),而且也并不被本節(jié)中所含內(nèi)容認(rèn)為是現(xiàn)有技術(shù)。
發(fā)明內(nèi)容
本文描述了用于在下一代智能卡架構(gòu)中執(zhí)行傳統(tǒng)智能卡應(yīng)用程序的方法。傳統(tǒng)智能卡應(yīng)用程序通常指的是單線程應(yīng)用程序,其期望是在任一給定時(shí)刻的唯一有效的應(yīng)用程序。下一代智能卡架構(gòu)通常是指多個(gè)應(yīng)用程序可在其中同時(shí)執(zhí)行的多線程智能卡環(huán)境。在傳統(tǒng)智能卡環(huán)境中,為了確保傳統(tǒng)智能卡應(yīng)用程序的安全執(zhí)行,僅通過(guò)可共享接口對(duì)象許可由其它應(yīng)用程序?qū)鹘y(tǒng)智能卡應(yīng)用程序的訪問(wèn)。
因此,在下一代智能卡架構(gòu)的一個(gè)實(shí)施例中,創(chuàng)建專有單線程環(huán)境,使得傳統(tǒng)智能卡應(yīng)用程序能夠安全執(zhí)行。專有環(huán)境的一個(gè)方面包括代理對(duì)象。代理對(duì)象包括傳統(tǒng)智能卡應(yīng)用程序的可共享接口對(duì)象,以控制其它應(yīng)用程序如何訪問(wèn)傳統(tǒng)智能卡應(yīng)用程序中的方法、對(duì)象、引用、功能、以及例程。在一個(gè)實(shí)施例中,代理對(duì)象僅允許一個(gè)應(yīng)用程序在某一時(shí)刻訪問(wèn)可共享接口。
此外,在一個(gè)實(shí)施例中,下一代智能卡架構(gòu)中的專有環(huán)境創(chuàng)建在傳統(tǒng)智能卡環(huán)境中被共享的對(duì)象的新副本。在一個(gè)實(shí)施例中,無(wú)論何時(shí)另一應(yīng)用程序請(qǐng)求訪問(wèn)共享的對(duì)象,都生成對(duì)象的新副本。在一個(gè)實(shí)施例中,用于創(chuàng)建副本的數(shù)據(jù)量?jī)H限于對(duì)象類型本身。
本文還描述了一種方法,用于把傳統(tǒng)智能卡應(yīng)用程序從諸如CAP文件格式的壓縮格式轉(zhuǎn)換成未壓縮的格式。
附圖是用于實(shí)例示出而不是用于限制本文描述的系統(tǒng)和方法。貫穿附圖類似參考標(biāo)號(hào)用于表示類似元素和特征。
圖1是示出根據(jù)本發(fā)明實(shí)施例的下一代智能卡架構(gòu)的框圖;圖2是示出根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于將傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成下一代智能卡應(yīng)用程序的機(jī)構(gòu)的框圖;。
圖3是示出根據(jù)本發(fā)明實(shí)施例的用于把傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成下一代智能卡應(yīng)用程序文件的程序的流程圖;圖4是示出根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于生成在下一代智能卡環(huán)境中執(zhí)行傳統(tǒng)應(yīng)用程序的專有環(huán)境的程序的流程圖;以及圖5是示出其上可實(shí)施根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。
具體實(shí)施例方式
本文描述了執(zhí)行為傳統(tǒng)智能卡以及下一代智能卡平臺(tái)上的其它低資源環(huán)境開(kāi)發(fā)的應(yīng)用程序的技術(shù)。為了解釋的目的,闡述了許多具體細(xì)節(jié)以提供各種系統(tǒng)和方法的透徹理解。然而,非常清楚,沒(méi)有這些具體細(xì)節(jié)也可以實(shí)施本文描述的系統(tǒng)和方法。在其它實(shí)例中,公知的結(jié)構(gòu)和設(shè)備用框圖的形式示出,以避免對(duì)本發(fā)明有不必要地混淆。
綜述本文描述了用于在下一代智能卡上執(zhí)行傳統(tǒng)智能卡應(yīng)用程序(“傳統(tǒng)應(yīng)用程序”)的技術(shù)。在一個(gè)實(shí)施例中,該技術(shù)包括了用于將傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成在下一代智能卡平臺(tái)上可執(zhí)行的格式的機(jī)構(gòu)。例如,在基于Java的下一代智能卡環(huán)境中,轉(zhuǎn)換器機(jī)構(gòu)把CAP文件翻譯成Java類文件。
本文所述的技術(shù)還提供在下一代智能卡上模擬(或重新創(chuàng)建)傳統(tǒng)應(yīng)用程序被設(shè)計(jì)成在其中中執(zhí)行的專有環(huán)境。例如,因?yàn)橘Y源有限,所以傳統(tǒng)智能卡常常要求傳統(tǒng)應(yīng)用程序與其它交替運(yùn)行的應(yīng)用程序共享公共對(duì)象。結(jié)果,那些傳統(tǒng)應(yīng)用程序被期待設(shè)計(jì)成獨(dú)享給定的資源直到完成命令處理周期。本文所述的技術(shù)提供了創(chuàng)建共享對(duì)象的新實(shí)例使得傳統(tǒng)應(yīng)用程序排他性訪問(wèn)以前所共享對(duì)象的機(jī)構(gòu)。
此外,該技術(shù)提供了管理傳統(tǒng)應(yīng)用程序和下一代應(yīng)用程序之間交互作用(例如,通過(guò)把對(duì)傳統(tǒng)應(yīng)用程序的調(diào)用串行化)的機(jī)構(gòu)。例如,在一個(gè)實(shí)施例中,創(chuàng)建代理機(jī)構(gòu)以管理傳統(tǒng)應(yīng)用程序和非傳統(tǒng)應(yīng)用程序之間的通信。
提供這些和其它技術(shù)使得傳統(tǒng)應(yīng)用程序可與更復(fù)雜的應(yīng)用程序共存,而無(wú)須嚴(yán)重影響傳統(tǒng)應(yīng)用程序和非傳統(tǒng)應(yīng)用程序兩者的性能。此外,這些技術(shù)和機(jī)構(gòu)幫助在下一代智能卡上創(chuàng)建運(yùn)行時(shí)間環(huán)境,其又兼容于由傳統(tǒng)應(yīng)用程序期望的那種環(huán)境。注意到,這些技術(shù)和機(jī)構(gòu)可通過(guò)智能卡、計(jì)算機(jī)或其它設(shè)備上的應(yīng)用程序來(lái)實(shí)施,或者通過(guò)基于服務(wù)器的和基于客戶的組合的應(yīng)用程序?qū)嵤?,或者通過(guò)其它方法來(lái)實(shí)施。
JAVA卡環(huán)境本發(fā)明所述的程序和工具經(jīng)常根據(jù)Java卡2.x技術(shù)(“Java卡”)以及下一代Java卡開(kāi)發(fā)和運(yùn)行時(shí)間環(huán)境來(lái)描述。這些環(huán)境僅是用于在其中使用本發(fā)明的技術(shù)的示例性環(huán)境。在可選實(shí)施中,該技術(shù)可在其它環(huán)境中使用。
I.下一代智能卡的通用架構(gòu)圖1示出了用于下一代智能卡的架構(gòu)100的實(shí)施。在一個(gè)實(shí)施例中,架構(gòu)100為基于Java的軟件架構(gòu),其被設(shè)計(jì)為提供下一代智能卡上的開(kāi)發(fā)和運(yùn)行時(shí)間環(huán)境。架構(gòu)100允許用戶平衡(leverage)現(xiàn)有的開(kāi)發(fā)環(huán)境和工具以開(kāi)發(fā)在下一代智能卡上執(zhí)行的應(yīng)用程序。架構(gòu)100還允許軟件開(kāi)發(fā)人員平衡在下一代智能卡上可用的增加計(jì)算資源,以給用戶提供更多的功能。此外,在一個(gè)實(shí)施例中,架構(gòu)100提供必要的機(jī)構(gòu)來(lái)創(chuàng)建向后兼容的環(huán)境,其中,傳統(tǒng)應(yīng)用程序可無(wú)須顯著影響性能和執(zhí)行安全性而執(zhí)行。
一般地,架構(gòu)100提供了運(yùn)行時(shí)間環(huán)境,其中,可執(zhí)行諸如基于小服務(wù)程序(servlet)的應(yīng)用程序101和擴(kuò)展小程序107的非傳統(tǒng)應(yīng)用程序(non-legacy application)以及諸如傳統(tǒng)小程序120的傳統(tǒng)應(yīng)用程序(legacy application)。注意到,非傳統(tǒng)和傳統(tǒng)應(yīng)用程序在本文中可統(tǒng)稱為“應(yīng)用程序”。在架構(gòu)100中執(zhí)行的應(yīng)用程序可執(zhí)行廣范圍的功能。例如,它們可做為用單個(gè)用戶名字和口令來(lái)提供對(duì)多個(gè)不同計(jì)算資源進(jìn)行訪問(wèn)的單點(diǎn)登入(single-sign-on)服務(wù)器,通過(guò)驗(yàn)證用戶對(duì)數(shù)字媒體的訪問(wèn)權(quán)限來(lái)提供數(shù)字權(quán)限管理服務(wù),通過(guò)將用戶的email經(jīng)過(guò)智能卡進(jìn)行傳遞來(lái)過(guò)濾垃圾郵件(spam)以及其它功能。
圖1示出了在該架構(gòu)中的示例性組件,其提供了功能并支持在虛擬機(jī)102上執(zhí)行所有類型的應(yīng)用程序。例如,架構(gòu)100可包括一組下一代智能卡API(“新API”)103、一組公共訪問(wèn)的API(“公共API”)104、一組傳統(tǒng)API(“傳統(tǒng)API”)108、小服務(wù)程序API106、小服務(wù)程序容器105、小程序容器109、以及小程序API110。在其它實(shí)施例中,架構(gòu)100可包括不同組的組件。
A.基于小服務(wù)程序的應(yīng)用程序在圖1中,基于小服務(wù)程序的應(yīng)用程序101為可在架構(gòu)100中執(zhí)行的實(shí)例應(yīng)用程序。基于小服務(wù)程序的應(yīng)用程序101包括特別為下一代智能卡架構(gòu)設(shè)計(jì)和編寫的應(yīng)用程序。正是如此,基于小服務(wù)程序的應(yīng)用程序101一般不需要從一種文件格式轉(zhuǎn)換成獎(jiǎng)杯虛擬機(jī)102執(zhí)行的另一種文件格式。在下一代Java卡環(huán)境中,基于小服務(wù)程序的應(yīng)用程序101為Java類文件。
B.擴(kuò)展的小程序除基于小服務(wù)程序的應(yīng)用程序101之外,架構(gòu)100還可執(zhí)行擴(kuò)展的小程序107。擴(kuò)展小程序指的是已被軟件開(kāi)發(fā)人員編寫以利用下一代智能卡架構(gòu)100的新庫(kù)和底層功能的傳統(tǒng)應(yīng)用程序。擴(kuò)展小程序107不是壓縮類文件或壓縮類文件的翻譯版本。在下一代Java卡環(huán)境中,擴(kuò)展小程序107可以是被編寫以包括Java類特征的Java類文件。
C.傳統(tǒng)小程序在圖1中,傳統(tǒng)小程序120通常指的是被設(shè)計(jì)成在傳統(tǒng)智能卡上運(yùn)行以及從更完整特征的版本轉(zhuǎn)換為壓縮格式來(lái)在傳統(tǒng)智能卡的有限資源環(huán)境上運(yùn)行然后翻譯回原始文件的功能等同物的應(yīng)用程序。在下一代Java卡環(huán)境中,傳統(tǒng)小程序120包括被翻譯成CAP文件格式然后又被翻譯回Java類格式的文件。
D.虛擬機(jī)在架構(gòu)100中,通過(guò)虛擬機(jī)102解譯非傳統(tǒng)應(yīng)用程序和傳統(tǒng)應(yīng)用程序。虛擬機(jī)102通常指的是用于解譯下一代智能卡上的應(yīng)用程序的任何軟件解譯程序。依賴于該實(shí)施,虛擬機(jī)102可基于Java,使得虛擬機(jī)102運(yùn)行Java類文件。在其它實(shí)施例中,虛擬機(jī)102可執(zhí)行其它類型的文件。
虛擬機(jī)102被設(shè)計(jì)成在下一代智能卡的資源環(huán)境中運(yùn)行。此外,在一個(gè)實(shí)施例中,虛擬機(jī)102還創(chuàng)建傳統(tǒng)應(yīng)用程序可在其中執(zhí)行的運(yùn)行時(shí)間環(huán)境。為了幫助創(chuàng)建傳統(tǒng)應(yīng)用程序可在其中執(zhí)行的環(huán)境,虛擬機(jī)102包括代碼,其使用對(duì)象的單個(gè)共享副本從運(yùn)行時(shí)間環(huán)境轉(zhuǎn)移到創(chuàng)建用于每個(gè)應(yīng)用程序的單獨(dú)對(duì)象的環(huán)境,從而避免死鎖和其它安全問(wèn)題。此外,在一個(gè)實(shí)施例中,虛擬機(jī)102包括代碼以生成控制對(duì)傳統(tǒng)應(yīng)用程序訪問(wèn)的代理對(duì)象。通過(guò)這樣做,傳統(tǒng)應(yīng)用程序可作為單線程應(yīng)用程序在多線程環(huán)境中運(yùn)行。在各種實(shí)施中,這些特征可由不同于虛擬機(jī)102的其它組件執(zhí)行。
注意到,除執(zhí)行用于傳統(tǒng)應(yīng)用程序的單線程環(huán)境以外,虛擬機(jī)102還可進(jìn)一步增強(qiáng)以改善整體的應(yīng)用程序性能。一般地,虛擬機(jī)102被設(shè)計(jì)成改善在下一代智能卡上運(yùn)行的所有應(yīng)用程序的性能。
E.其它構(gòu)件塊圖1示出了架構(gòu)100中的一組其它構(gòu)件塊的實(shí)例,其可用于連接虛擬機(jī)102來(lái)執(zhí)行應(yīng)用程序。那些其它構(gòu)件塊包括新API103、公共API104、傳統(tǒng)API108、小服務(wù)程序API106、小服務(wù)程序容器105、小程序容器109、以及小程序API110。這些API和容器在本文都統(tǒng)稱為“其它構(gòu)件塊”。架構(gòu)100中的其它構(gòu)件塊的數(shù)量基于特定的下一代智能卡環(huán)境、其實(shí)施、其資源限制等而改變。
每個(gè)其它構(gòu)件塊都可為軟件模塊。例如,其它構(gòu)件塊可為應(yīng)用程序編程接口、動(dòng)態(tài)鏈接庫(kù)文件、單獨(dú)應(yīng)用程序、虛擬機(jī)102的集成組件、或定義虛擬機(jī)102和應(yīng)用程序之間接口的一些其它軟件工具。此外,每個(gè)其它構(gòu)件塊可指多于一個(gè)模塊或軟件文件。例如,小程序容器109可指包含用于由擴(kuò)展小程序107所調(diào)用的對(duì)象和方法的對(duì)象定義的多個(gè)文件。
例如,通過(guò)卸載對(duì)一些應(yīng)用程序來(lái)說(shuō)為公共的代碼,由其它構(gòu)件塊提供的功能通常幫助減少單獨(dú)應(yīng)用程序所需的整體資源數(shù)量。舉例來(lái)說(shuō),新API103提供了具體針對(duì)下一代智能卡環(huán)境的一組構(gòu)件塊例程、協(xié)議以及工具,使得開(kāi)發(fā)人員在設(shè)計(jì)和編寫虛擬機(jī)102上運(yùn)行的軟件時(shí)可在該環(huán)境上進(jìn)行調(diào)用。例如,基于小服務(wù)程序的應(yīng)用程序101可被設(shè)計(jì)成使用提供用于在虛擬機(jī)102上運(yùn)行的應(yīng)用程序的公共接口的新API。由于應(yīng)用程序?qū)?huì)具有類似的接口,所以使得用戶易于使用應(yīng)用程序。在下一代Java卡環(huán)境中,新API103包括提供具體針對(duì)下一代Java卡虛擬機(jī)的例程、接口、協(xié)議以及功能(如,對(duì)串的支持)的API。
在一個(gè)實(shí)施例中,類似于新API,公共API104將對(duì)應(yīng)用程序和虛擬機(jī)102的訪問(wèn)提供給所共同請(qǐng)求的功能、例程、協(xié)議和接口。舉例來(lái)說(shuō),如果多個(gè)應(yīng)用程序共同調(diào)用相同的功能(如,數(shù)據(jù)排序功能),該功能就可被編寫為單獨(dú)的輔助文件并被組裝成一個(gè)公共API104。
在一個(gè)實(shí)施例中,小服務(wù)程序容器105和小服務(wù)程序API106包括諸如使基于小服務(wù)程序的應(yīng)用程序101能夠正確執(zhí)行的類、功能、接口、以及例程的附加資源。例如,小服務(wù)程序容器105創(chuàng)建了非傳統(tǒng)應(yīng)用程序可在其中產(chǎn)生多個(gè)線程的環(huán)境。小程序容器109和小程序API110可幫助提供傳統(tǒng)和非傳統(tǒng)應(yīng)用程序可在其中執(zhí)行的環(huán)境。例如,它們可產(chǎn)生多個(gè)線程使得非傳統(tǒng)應(yīng)用程序可以最高性能來(lái)執(zhí)行,并且它們還可提供傳統(tǒng)應(yīng)用程序保持線程安全并可靠執(zhí)行的環(huán)境。
傳統(tǒng)API108還包含其它類和資源,諸如Java卡2.x API,其提供了接口、功能和例程使得虛擬機(jī)102可執(zhí)行擴(kuò)展和傳統(tǒng)小程序。當(dāng)擴(kuò)展和傳統(tǒng)應(yīng)用程序在執(zhí)行時(shí),小程序容器109以及小程序API110可提供附加支持和庫(kù)文件,使得可正確執(zhí)行那些應(yīng)用程序。
在一個(gè)實(shí)施例中,其它構(gòu)件塊(或其子集),特別是小程序容器109以及小程序API110可幫助提供傳統(tǒng)應(yīng)用程序在其中執(zhí)行的專有運(yùn)行時(shí)間環(huán)境。
在一個(gè)實(shí)施例中,架構(gòu)100包括類預(yù)加載機(jī)構(gòu),如在Violleau等人申請(qǐng)的“Class Pre-Loading Mechanism”中所描述的。該類預(yù)加載機(jī)構(gòu)將諸如傳統(tǒng)API106的傳統(tǒng)應(yīng)用程序庫(kù)文件和代碼從架構(gòu)中的多線程應(yīng)用程序中隔離出來(lái)。通過(guò)從多線程應(yīng)用程序隔離庫(kù)文件,許多傳統(tǒng)應(yīng)用程序得代碼就變得不可訪問(wèn)非傳統(tǒng)應(yīng)用程序。結(jié)果,傳統(tǒng)應(yīng)用程序可更可靠地運(yùn)行,這是由于僅在單線程模式中運(yùn)行的傳統(tǒng)應(yīng)用程序才可訪問(wèn)代碼。
II.下一代架構(gòu)中的傳統(tǒng)應(yīng)用程序如上所述,基于小服務(wù)程序的應(yīng)用程序101和擴(kuò)展小程序107是被設(shè)計(jì)并更新為在下一代智能卡架構(gòu)中運(yùn)行的應(yīng)用程序。另一方面,傳統(tǒng)小程序120為被開(kāi)發(fā)以在傳統(tǒng)智能卡環(huán)境中運(yùn)行并且未被更新以在下一代智能卡環(huán)境中運(yùn)行的傳統(tǒng)應(yīng)用程序。結(jié)果,傳統(tǒng)小程序120包括與下一代智能卡架構(gòu)不兼容的壓縮文件格式的應(yīng)用程序。
在一個(gè)實(shí)施例中,為了在下一代智能卡架構(gòu)中執(zhí)行傳統(tǒng)應(yīng)用程序,傳統(tǒng)應(yīng)用程序從其壓縮格式轉(zhuǎn)換成與下一代智能卡兼容的格式。然后,下一代智能卡架構(gòu),特別是運(yùn)行時(shí)間環(huán)境被修改以重新創(chuàng)建傳統(tǒng)應(yīng)用程序被設(shè)計(jì)在其中執(zhí)行的專有環(huán)境。例如,下一代智能卡架構(gòu)創(chuàng)建先前被共享過(guò)的新對(duì)象。此外,下一代智能卡架構(gòu)使用代理對(duì)象來(lái)控制對(duì)傳統(tǒng)應(yīng)用程序的訪問(wèn)。以這種方式,傳統(tǒng)應(yīng)用程序可作為單線程應(yīng)用程序在下一代多線程智能卡架構(gòu)中運(yùn)行。
這些步驟可相互獨(dú)立執(zhí)行或組合起來(lái)執(zhí)行。
A.傳統(tǒng)應(yīng)用程序規(guī)范器工具為了與下一代智能卡運(yùn)行時(shí)間架構(gòu)兼容,傳統(tǒng)應(yīng)用程序通常需要從為傳統(tǒng)智能卡的有限資源環(huán)境創(chuàng)建的格式轉(zhuǎn)換成與下一代智能卡兼容的格式。例如,在下一代Java卡環(huán)境中,最底層的虛擬機(jī)并不直接支持CAP文件。這一般是設(shè)計(jì)方面的決定,基于提供對(duì)非傳統(tǒng)和傳統(tǒng)應(yīng)用程序的直接支持將會(huì)消耗太多的計(jì)算資源這一事實(shí)。因此,在一個(gè)實(shí)施例中,在執(zhí)行傳統(tǒng)應(yīng)用程序之前,傳統(tǒng)應(yīng)用程序文件被轉(zhuǎn)換成與下一代智能卡的虛擬機(jī)兼容的格式。
在實(shí)施例中,規(guī)范器(normalizer)工具將壓縮類文件翻譯成未壓縮類文件格式。規(guī)范器工具主要重新創(chuàng)建在傳統(tǒng)應(yīng)用程序文件中丟失的信息。例如,在最基本的設(shè)置中,用戶把CAP文件導(dǎo)入到規(guī)范器工具中,以將該CAP文件轉(zhuǎn)換成一種或多種類文件。然后,規(guī)范器工具創(chuàng)建新文件并把每個(gè)CAP文件指令映射到相應(yīng)的類文件指令,并將翻譯的指令置于新文件中。一旦翻譯了所有這些指令,新文件就作為類文件被存儲(chǔ)起來(lái)。
作為轉(zhuǎn)換傳統(tǒng)應(yīng)用程序的一部分,注意到,該進(jìn)程可試圖重新創(chuàng)建初始以未壓縮格式編寫的文件或應(yīng)用程序。在這種情況下,難以生成生成傳統(tǒng)應(yīng)用程序的原始文件的完全副本。因此,在一個(gè)實(shí)施例中,規(guī)范器工具將傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成與原始文件功能相同的文件。一般地,規(guī)范器工具生成基本復(fù)制了原始應(yīng)用程序功能的代碼。例如,在下一代Java卡環(huán)境中,規(guī)范器工具將CAP文件轉(zhuǎn)換回可由下一代虛擬機(jī)執(zhí)行的并在功能上等同于原始Java類文件的文件。雖然在一些實(shí)施中,規(guī)范器工具也能夠盡其全部地重新創(chuàng)建原始未壓縮的文件。
注意到,存在應(yīng)用程序直接編寫為CAP文件的一些情況。在這種情況下,規(guī)范器工具未試圖重新創(chuàng)建原始文件,而工具卻試著來(lái)創(chuàng)建基本執(zhí)行與CAP執(zhí)行的相同功能的下一代智能卡應(yīng)用程序文件。
圖2示出了用于將傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成下一代智能卡應(yīng)用程序的系統(tǒng)200。在一個(gè)實(shí)施例中,系統(tǒng)200將CAP文件轉(zhuǎn)換成類文件。在其它實(shí)施例中,傳統(tǒng)和非傳統(tǒng)應(yīng)用程序文件是不同的類型。
在一個(gè)實(shí)施例中,用于轉(zhuǎn)換傳統(tǒng)應(yīng)用程序的系統(tǒng)200為下一代智能卡架構(gòu)的一部分。在該實(shí)施例中,傳統(tǒng)應(yīng)用程序在傳統(tǒng)應(yīng)用程序在下一代智能卡上被啟動(dòng)的時(shí)刻被轉(zhuǎn)換??蛇x地,系統(tǒng)200從下一代智能卡中分離。例如,可從傳統(tǒng)智能卡中下載傳統(tǒng)應(yīng)用程序,以及經(jīng)過(guò)脫卡規(guī)范器工以將傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成可由下一代智能卡解譯的格式。
在一個(gè)實(shí)施例中,系統(tǒng)200包括規(guī)范器工具201,其接收帶有任一相關(guān)的輔助文件203的傳統(tǒng)應(yīng)用程序202作為輸入并且輸出“轉(zhuǎn)換的代碼”204。轉(zhuǎn)換的代碼204通常指任何未壓縮的應(yīng)用程序格式。例如,它可能指的是類文件或一些其它未被編譯的指令集、字節(jié)代碼、非傳統(tǒng)應(yīng)用程序、或執(zhí)行與傳統(tǒng)應(yīng)用程序202等效功能的應(yīng)用程序的其它符號(hào)表達(dá)式。在一個(gè)實(shí)施例中,轉(zhuǎn)換的代碼204為Java類字節(jié)代碼。
為了示出規(guī)范器工具201如何進(jìn)行工作,考慮將CAP文件轉(zhuǎn)換成類文件的實(shí)例。一般地,CAP文件(與任何相關(guān)的輔助文件一起)包括足夠的信息來(lái)創(chuàng)建類文件,類文件可具有生成CAP文件的原始類文件的等效功能。用于把CAP文件轉(zhuǎn)換成類文件的進(jìn)程通常包括將該CAP文件及其組件文件中的指令翻譯成類文件中的對(duì)應(yīng)指令集。
在基于Java的環(huán)境中,規(guī)范器工具201將CAP文件和任何相關(guān)文件(例如,包含關(guān)于與CAP應(yīng)用程序相關(guān)的外部類的信息的EXP文件)當(dāng)作輸入。包含在CAP文件及其相關(guān)文件中的指令被轉(zhuǎn)換成Java類指令并被存儲(chǔ)為Java類文件,例如,轉(zhuǎn)換的代碼。
轉(zhuǎn)換CAP文件中的指令的進(jìn)程由規(guī)范器工具201執(zhí)行。該進(jìn)程包括確定CAP文件中的指令以及在索引或表中執(zhí)行查找以確定對(duì)應(yīng)的類指令集。在以下表3中,示出了具有其對(duì)應(yīng)Java類字節(jié)代碼指令的CAP文件指令的字節(jié)代碼轉(zhuǎn)換表實(shí)例。注意到,在表3中,表的前三列涉及CAP文件指令數(shù)值、對(duì)應(yīng)的HEX(或字節(jié))值、以及指令的對(duì)應(yīng)文本表達(dá)式。后三列涉及Java類字節(jié)代碼指令數(shù)值、對(duì)應(yīng)的HEX(或字節(jié)代碼值)、以及符號(hào)表達(dá)式。在一些情況下,指令還包括其所做的什么或?yàn)楹纹湟蕴囟ǚ绞奖挥成涞暮?jiǎn)單描述。
表3為了將CAP轉(zhuǎn)換成類文件,規(guī)范器工具201在整個(gè)CAP文件上迭代,把每個(gè)CAP指令映射為其相應(yīng)的類指令。例如,使用表3作為向?qū)?,假設(shè)規(guī)范器工具201遇到CAP文件指令(0x70)。規(guī)范器工具執(zhí)行表查詢以找到相應(yīng)的Java類指令(0xA7),并且用轉(zhuǎn)換的代碼204中的Java類指令來(lái)代替CAP指令。
在轉(zhuǎn)換進(jìn)程期間,規(guī)范器工具201還可參考附加的輔助文件。例如,如果CAP文件包括使其映射存儲(chǔ)在EXP文件中的外部功能或者例程的指令,則規(guī)范器工具參考用于適當(dāng)調(diào)用映射的EXP文件。最終,規(guī)范器工具201生成執(zhí)行CAP文件等效功能的轉(zhuǎn)換的代碼204。在這個(gè)實(shí)例中,最終轉(zhuǎn)換的代碼為Java類字節(jié)代碼。
如上所述,規(guī)范器工具201試圖創(chuàng)建執(zhí)行原始應(yīng)用程序登效功能的文件。一般地,通過(guò)規(guī)范器工具201創(chuàng)建的轉(zhuǎn)換的代碼204與原始類文件之間的差應(yīng)該為極少。一些更常見(jiàn)的差距可能包括以下這些1)在小程序包中的非公共(non-public)和非可共享的(non-shareable)類的名稱可不同。當(dāng)把類轉(zhuǎn)換成CAP格式時(shí)這就可發(fā)生,類文件的名稱一般被轉(zhuǎn)換為權(quán)標(biāo)或數(shù)值表達(dá)式。然后,當(dāng)CAP文件被轉(zhuǎn)換回來(lái)時(shí),類名稱就被轉(zhuǎn)換為不同的。舉例來(lái)說(shuō),如果類文件初始命名為Person,然后被轉(zhuǎn)換到CAP格式。在CAP格式中,Person類現(xiàn)在可以是數(shù)值權(quán)標(biāo)(如,12)。在該翻譯期間,Person類的實(shí)際名稱因?yàn)閷?duì)于計(jì)算機(jī)來(lái)說(shuō)名稱并不意味著什么故而被丟失。因此,當(dāng)CAP文件被翻譯回來(lái)的時(shí)候,規(guī)范器工具201可能不得不自動(dòng)生成用于Person類的新名稱,如,“Class 1”。注意到,雖然該名稱已改變,但最主要的功能將會(huì)保持不變。
2)出于類似原因,非公共的方法和字段的名稱可不同于它們初始被命名的名稱。
3)在不是從另一包中類繼承的小程序包中的公共字段和方法的名稱也可發(fā)生變化。
4)最后,用于類文件的源文件屬性(如,定義該源的屬性和用于類的目標(biāo)目錄)可不同于初始屬性。
雖然這些為四個(gè)最常見(jiàn)的差別,但應(yīng)注意到,在一些實(shí)例中,與類文件相關(guān)的某些屬性也可能不容易再生。例如,類中的一些方法具有可能不能被規(guī)范器工具重新創(chuàng)建的可選例外屬性。類似地,線號(hào)和局部變量表屬性也可在CAP文件被相反轉(zhuǎn)換后而不同。最后,由于在將類文件轉(zhuǎn)換成CAP文件之前發(fā)生的字節(jié)代碼的優(yōu)化,所以轉(zhuǎn)換的代碼204可不同于原始類文件中的字節(jié)代碼。
在一個(gè)實(shí)施例中,一旦傳統(tǒng)應(yīng)用程序被轉(zhuǎn)換成轉(zhuǎn)換的代碼204,簽名者(signer)工具206就用私人關(guān)鍵字208給轉(zhuǎn)換的代碼204簽名,使得其它應(yīng)用程序和用戶可校驗(yàn)所提供類207的完整性。
B.用于將CAP轉(zhuǎn)換成類文件的過(guò)程為了進(jìn)一步分析把傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成非傳統(tǒng)應(yīng)用程序的進(jìn)程,考慮圖3所示的過(guò)程。該圖示出了用于把傳統(tǒng)應(yīng)用程序轉(zhuǎn)換成非傳統(tǒng)應(yīng)用程序的實(shí)例過(guò)程300。該過(guò)程涉及三個(gè)主要步驟1)讀取和校驗(yàn)傳統(tǒng)應(yīng)用程序和相關(guān)文件310,2)生成對(duì)應(yīng)于傳統(tǒng)應(yīng)用程序320的傳統(tǒng)文件,以及3)將非傳統(tǒng)文件寫入盤中以便它們能被測(cè)試330。
1.讀取和校驗(yàn)CAP文件在步驟310中,規(guī)范器工具(如圖2中所示的規(guī)范器工具)讀取諸如CAP文件的傳統(tǒng)應(yīng)用程序以確認(rèn)其完整性。在一個(gè)實(shí)施例中,脫卡的工具可被用來(lái)執(zhí)行這個(gè)步驟。確認(rèn)其完整性的步驟包括確認(rèn)該文件是完整的且不包含錯(cuò)誤或其它不一致(例如,壞的指令或?qū)o(wú)效例程的調(diào)用)。如果傳統(tǒng)應(yīng)用程序有效并完整,那么,應(yīng)用程序就被翻譯成其相應(yīng)的非傳統(tǒng)應(yīng)用程序格式。
2.生成非傳統(tǒng)文件在步驟320中,規(guī)范器工具(如圖2所示的規(guī)范器工具)生成相應(yīng)的非傳統(tǒng)應(yīng)用程序文件。例如,假設(shè)規(guī)范器工具用于把CAP文件轉(zhuǎn)換成相應(yīng)的類文件結(jié)構(gòu)。在該實(shí)例中,那些文件結(jié)構(gòu)包括用于單獨(dú)類的單獨(dú)文件,以及在每個(gè)類中,用于常數(shù)的區(qū)、用于定義類中各種接口和例程的表、勾畫類中變量和字段名稱的字段表、以及在CAP文件中確定單獨(dú)方法的方法表。規(guī)范器工具分析CAP文件以識(shí)別每個(gè)與CAP文件相關(guān)的類以及初始與類文件相關(guān)的類文件結(jié)構(gòu)。一旦每個(gè)類及其對(duì)應(yīng)的結(jié)構(gòu)被識(shí)別,則規(guī)范器工具(使用預(yù)定的偏差)將CAP文件命令轉(zhuǎn)換成對(duì)應(yīng)的類文件指令并且將適當(dāng)?shù)男畔⑻畛溥M(jìn)轉(zhuǎn)換的類文件。為了幫助轉(zhuǎn)換進(jìn)程,規(guī)范器工具可使用轉(zhuǎn)換表,如圖3所示的轉(zhuǎn)換表300,以將CAP文件指令映射到相應(yīng)的類文件指令。
規(guī)范器工具被設(shè)計(jì)成知道其應(yīng)該遇到CAP文件中的指令的順序并且知道那些命令應(yīng)該以什么順序置于相應(yīng)的類文件中。在實(shí)施例中,通過(guò)包括在CAP文件本身中的描述符組件(或可選地,它們相關(guān)構(gòu)造文件之一)定義原始類文件結(jié)構(gòu)及其順序。描述符組件可定義整個(gè)類及其相應(yīng)的類文件結(jié)構(gòu)。例如,描述符組件可正確勾畫類應(yīng)該列出諸如其主要和次要版本號(hào)的一些基本類識(shí)別信息的事實(shí)。描述符組件還可勾畫可生成用于類的哪些常數(shù)池條目,以及諸如訪問(wèn)標(biāo)記信息、接口定義及其它字段數(shù)據(jù)的附加特征。最后,描述符組件可定義在類中方法和屬性定義在哪里適合。
在一些實(shí)施例中,具體的描述符組件也許并不可用。在這種情況下,規(guī)范器工具可分析在開(kāi)始時(shí)的CAP文件的完整性,以確定其定義的結(jié)構(gòu),然后使用該信息來(lái)開(kāi)發(fā)相應(yīng)的類文件。
注意到,一般來(lái)說(shuō),描述符組件由于其包含關(guān)于CAP文件中所有類的信息而作為用于使該信息有必要建立一個(gè)或多個(gè)類文件的起始點(diǎn)。然而,在一個(gè)實(shí)施例中,即使具有描述符組件,規(guī)范器工具可執(zhí)行多次跨越CAP文件的傳遞,以提取定義類文件結(jié)構(gòu)的信息,然后將信息輸入那些類文件結(jié)構(gòu)中。
例如,建立類文件的進(jìn)程可要求規(guī)范器工具執(zhí)行多次跨越相應(yīng)CAP文件的分析性傳遞。在實(shí)施例中,第一次跨越CAP文件的傳遞包括規(guī)范器工具分析描述符組件以確定相應(yīng)類文件的基本組件并把關(guān)于被實(shí)施的接口、字段、方法和屬性的基本信息添加到類文件的常數(shù)池部分。在后續(xù)跨越CAP文件的傳遞中,規(guī)范器工具可把附加信息添加到關(guān)于正被引用的其它類的常數(shù)池,包括與那些其他類相關(guān)的接口、字段、和方法。在一個(gè)實(shí)施例中,在分析CAP文件及其相關(guān)文件之后,創(chuàng)建常數(shù)池計(jì)數(shù)以描述在該常數(shù)池中條目的數(shù)量。該信息識(shí)別需要在類中建立的附加結(jié)構(gòu)的數(shù)目。此外,常數(shù)池計(jì)數(shù)可為指示符,以確定用于具體值的偏差和將被插入類文件的指令。
除創(chuàng)建常數(shù)池之外,在跨越CAP和相關(guān)文件的傳遞期間,規(guī)范器工具可創(chuàng)建用于類文件的附加占位符(placeho1der)類型結(jié)構(gòu),例如,接口陣列和方法陣列。這些結(jié)構(gòu)的類型和數(shù)目將基于正被分析的實(shí)際文件以及CAP文件、類文件和規(guī)范器工具的實(shí)施而改變。
在一個(gè)實(shí)施中,為類中每個(gè)一般結(jié)構(gòu)創(chuàng)建占位符結(jié)構(gòu)(如,陣列)(例如,創(chuàng)建用于常數(shù)、標(biāo)記、接口、方法、字段、屬性等地陣列。這些占位符結(jié)構(gòu)包括用于在類中直接實(shí)施的接口、標(biāo)記、字段、方法和屬性的索引。創(chuàng)建這些占位符結(jié)構(gòu)的原因是,在CAP文件中,難以準(zhǔn)確確定哪些組件是由正被處理的類直接實(shí)施(例如,CAP文件可包含關(guān)于當(dāng)前類和其所有超級(jí)類的信息)。因此,這些占位符指的是跟蹤哪些接口屬于哪個(gè)類。
一旦識(shí)別了所有單獨(dú)結(jié)構(gòu)(如,每類有多少方法、標(biāo)記、接口等),規(guī)范器工具就執(zhí)行跨越CAP和相關(guān)文件的附加傳遞以填寫用于每個(gè)識(shí)別結(jié)構(gòu)的信息。例如,規(guī)范器工具執(zhí)行跨越CAP文件的傳遞以識(shí)別并提取用于每個(gè)所識(shí)別方法的信息。然后,規(guī)范器工具將那些指令轉(zhuǎn)換成其相應(yīng)的Java類指令,并將指令置于相關(guān)方法文件結(jié)構(gòu)中。
注意到,在轉(zhuǎn)換進(jìn)程期間,規(guī)范器工具可能找不到用于特定方法的名稱。在這種情況下,由規(guī)范器工具自動(dòng)生成方法名稱(尤其用于私人或組件私人方法)。如果可找到方法的名稱,規(guī)范器工具就執(zhí)行檢查以校驗(yàn)該方法名稱在其它地方(如,在超級(jí)類中)并未正在使用,并且命名該方法。
此進(jìn)程的結(jié)果為規(guī)范器工具把所有代碼都轉(zhuǎn)換成“轉(zhuǎn)換的代碼”。CAP中的每個(gè)指令及其相關(guān)文件都被估計(jì)并映射到相應(yīng)的類文件指令。
一旦轉(zhuǎn)換進(jìn)程完成,如上所示,在原始類文件和由規(guī)范器工具生成的類文件之間可存在差異(例如,一些名稱、訪問(wèn)標(biāo)記和屬性可些許不同),這些文件本身應(yīng)該表現(xiàn)出相同功能。
在其它實(shí)施例中,不同組的組件和結(jié)構(gòu)可用于從傳統(tǒng)應(yīng)用程序解析和提取信息。
3.寫入和測(cè)試類文件一旦創(chuàng)建了類文件,在步驟330,檢查類文件以確保其有效性。在一個(gè)實(shí)施例中,規(guī)范器工具生成JAR文件,其包含所有新近創(chuàng)建的非傳統(tǒng)應(yīng)用程序文件以及傳統(tǒng)應(yīng)用程序文件。存儲(chǔ)這兩者的原因是兩組文件可進(jìn)行關(guān)于后續(xù)安裝的比較,以確保數(shù)據(jù)的完整和正確。在實(shí)施例中,其它文件和類(諸如代理可共享接口對(duì)象類)可被添加到JAR文件以幫助轉(zhuǎn)換的應(yīng)用程序在下一代智能卡架構(gòu)中執(zhí)行。此外,在實(shí)施例中,例如,通過(guò)使用Java類加載器將其加載來(lái)測(cè)試新近創(chuàng)建的文件。
一旦為傳統(tǒng)應(yīng)用程序創(chuàng)建了用于下一代智能卡架構(gòu)的可執(zhí)行文件,工具和技術(shù)就重新創(chuàng)建應(yīng)用程序在其中執(zhí)行的專有環(huán)境。
C.傳統(tǒng)應(yīng)用程序環(huán)境為了確保下一代智能卡架構(gòu)中的傳統(tǒng)應(yīng)用程序的安全執(zhí)行,專有環(huán)境被創(chuàng)建用于傳統(tǒng)應(yīng)用程序。專有環(huán)境確保傳統(tǒng)應(yīng)用程序能夠執(zhí)行為單線程應(yīng)用程序。
為了理解如何創(chuàng)建用于傳統(tǒng)應(yīng)用程序的專有環(huán)境,這里提供了有關(guān)傳統(tǒng)智能卡環(huán)境的附加信息。在傳統(tǒng)智能卡環(huán)境中,當(dāng)啟動(dòng)傳統(tǒng)應(yīng)用程序時(shí),運(yùn)行時(shí)間環(huán)境(包括虛擬機(jī))創(chuàng)建在其中存儲(chǔ)其的對(duì)象和操縱數(shù)據(jù)。由運(yùn)行時(shí)間環(huán)境創(chuàng)建的對(duì)象被創(chuàng)建它的應(yīng)用程序所擁有。防火墻機(jī)構(gòu)保護(hù)每個(gè)傳統(tǒng)應(yīng)用程序免于間斷的外部訪問(wèn)。因此,傳統(tǒng)應(yīng)用程序不能訪問(wèn)另一應(yīng)用程序的對(duì)象或?qū)ο蠓椒ǎ撬鼈儽伙@式共享。
1.防火墻防火墻機(jī)構(gòu)是為傳統(tǒng)智能卡環(huán)境創(chuàng)建的虛擬機(jī)運(yùn)行時(shí)間所執(zhí)行的保護(hù)。例如,在Java卡環(huán)境中,Java卡虛擬機(jī)通過(guò)其防火墻機(jī)構(gòu)確保應(yīng)用程序隔離。結(jié)果,傳統(tǒng)應(yīng)用程序可在其自己的上下文內(nèi)訪問(wèn)資源,但不能超出它的范圍。防火墻對(duì)訪問(wèn)應(yīng)用程序進(jìn)行控制的方式就是通過(guò)當(dāng)應(yīng)用程序初始執(zhí)行時(shí)就把對(duì)象空間(稱為“上下文”)分配給卡上的每個(gè)應(yīng)用程序。傳統(tǒng)智能卡環(huán)境的防火墻機(jī)構(gòu)創(chuàng)建并管理每個(gè)生成的上下文。在傳統(tǒng)環(huán)境中,僅僅一個(gè)上下文在任何一個(gè)時(shí)刻都是有效的(例如,因?yàn)閭鹘y(tǒng)環(huán)境是單線程的)。當(dāng)外部資源試圖訪問(wèn)被防火墻保護(hù)的資源時(shí),防火墻機(jī)構(gòu)檢查該調(diào)用,以確定是否應(yīng)該允許訪問(wèn)。一般地,當(dāng)從相同上下文中進(jìn)行調(diào)用時(shí),就允許訪問(wèn)所調(diào)用的資源。另一方面,來(lái)自不同上下文種的應(yīng)用程序或資源的調(diào)用一般被防火墻禁止。
但是,當(dāng)來(lái)自于不同上下文的應(yīng)用程序需要共享數(shù)據(jù)時(shí)就存在許多情況。因此,當(dāng)必要時(shí),傳統(tǒng)智能卡環(huán)境提供共享數(shù)據(jù)的安全方式。在Java卡環(huán)境中,這些機(jī)構(gòu)包括入口點(diǎn)對(duì)象(EPO)、全局陣列、和可共享接口對(duì)象(SIO)。
簡(jiǎn)要來(lái)說(shuō),EPO為Java卡中的機(jī)構(gòu),其允許特定對(duì)象被標(biāo)記(例如,通過(guò)運(yùn)行時(shí)間的虛擬機(jī)或通過(guò)開(kāi)發(fā)人員)為入口點(diǎn)對(duì)象。一旦被標(biāo)記,這些方法就可訪問(wèn)任何上下文。
全局這列是指特定的數(shù)據(jù)結(jié)構(gòu),通過(guò)其自然屬性可在任何上下文中訪問(wèn)。例如,對(duì)于進(jìn)行通信的應(yīng)用程序,APDU消息在應(yīng)用程序之間傳送。APDU(“應(yīng)用程序數(shù)據(jù)單元”)緩沖器保持這些消息直到它們能夠被處理。為了使應(yīng)用程序發(fā)送和接收那些消息,應(yīng)用程序必須對(duì)它們進(jìn)行訪問(wèn)。因此,APDU緩沖器被實(shí)施作為全局陣列,來(lái)自任何上下文的應(yīng)用程序和資源都能夠?qū)ζ溥M(jìn)行訪問(wèn)。
2.可共享接口對(duì)象雖然EPO和全局陣列為兩個(gè)用于在應(yīng)用程序之間最終在Java卡環(huán)境中共享某些數(shù)據(jù)的機(jī)構(gòu),,可共享接口對(duì)象(“SIO”)為用于訪問(wèn)另一應(yīng)用程序方法的機(jī)構(gòu)。
SIO通常指的是實(shí)施可共享接口的類的實(shí)例。通過(guò)可共享接口,對(duì)象可“導(dǎo)出”其方法到其它應(yīng)用程序。因此,如果開(kāi)發(fā)人員想要應(yīng)用程序中的某些方法被導(dǎo)出,那么這些方法就在擴(kuò)展標(biāo)記接口“javacard.framework.Shareable”的接口中被聲明。對(duì)于Java卡運(yùn)行時(shí)間環(huán)境來(lái)說(shuō)就指明這些方法可從其它上下文中進(jìn)行訪問(wèn)。當(dāng)所定義的接口在類中被實(shí)施并被實(shí)例化成為該類的對(duì)象時(shí),新創(chuàng)建的對(duì)象為SIO。
要求訪問(wèn)通過(guò)接收應(yīng)用程序所持有的對(duì)象的請(qǐng)求器(requestor)應(yīng)用程序?qū)邮諔?yīng)用程序發(fā)送調(diào)用,其確定它是否與請(qǐng)求器應(yīng)用程序共享所請(qǐng)求的對(duì)象。在Java卡環(huán)境中,請(qǐng)求器應(yīng)用程序可調(diào)用“JCSystem.getAppletShareableInterfaceObject()”方法來(lái)訪問(wèn)另一應(yīng)用程序的對(duì)象接口。一旦接收該調(diào)用,如果接收應(yīng)用程序確定其可授權(quán)訪問(wèn)請(qǐng)求器應(yīng)用程序,則接收應(yīng)用程序?qū)⒁?SIO類型)返回給所請(qǐng)求的對(duì)象。
然后,請(qǐng)求器應(yīng)用程序可使用SIO來(lái)調(diào)用方法。例如,請(qǐng)求器應(yīng)用程序調(diào)用SIO中的接口以在接收應(yīng)用程序的上下文中訪問(wèn)適當(dāng)?shù)膶?duì)象或?qū)ο蠓椒ā?br>
因此,在Java卡中,應(yīng)用程序可僅通過(guò)SIO機(jī)構(gòu)從另一應(yīng)用程序調(diào)用方法。這就防止了繞過(guò)接口限制的明顯篡改,諸如對(duì)對(duì)象引用進(jìn)行類型轉(zhuǎn)換來(lái)獲得對(duì)所有公共對(duì)象方法的訪問(wèn)。
D.重新創(chuàng)建傳統(tǒng)應(yīng)用程序環(huán)境在卡上執(zhí)行期間使用技術(shù)以提供傳統(tǒng)應(yīng)用程序的專有運(yùn)行時(shí)間要求,而無(wú)須顯著降低其它應(yīng)用程序的性能。
為了在下一代智能卡架構(gòu)中重新創(chuàng)建專有傳統(tǒng)應(yīng)用程序環(huán)境,機(jī)構(gòu)創(chuàng)建了先前被共享的對(duì)象的新副本。創(chuàng)建先前被共享的對(duì)象的新副本的原因是從防火墻中去除了監(jiān)控被共享對(duì)象的引用并防止應(yīng)用程序保持這些對(duì)象的非局部引用等負(fù)擔(dān)。
1.被共享的對(duì)象如上所示,傳統(tǒng)智能卡具備非常有限的資源。結(jié)果,在傳統(tǒng)智能卡環(huán)境中,應(yīng)用程序經(jīng)常共享對(duì)一個(gè)以上應(yīng)用程序所共用的對(duì)象。例如,在傳統(tǒng)智能卡環(huán)境中使用的最常用的對(duì)象之一為APDU(應(yīng)用程序數(shù)據(jù)單元)。APDU緩沖器用于便于在應(yīng)用程序之間交換消息。當(dāng)APDU在應(yīng)用程序間被交換時(shí),大量敏感信息通過(guò)APDU被傳遞。例如,作為校驗(yàn)用戶對(duì)一個(gè)數(shù)據(jù)媒體具有的權(quán)限的進(jìn)程的一部分,隨著APDU從媒體播放器到智能卡來(lái)回被傳送,一條消息包含用戶訪問(wèn)數(shù)字內(nèi)容的口令。
在傳統(tǒng)智能卡環(huán)境中,因其大小的緣故,APDU常被共享和/或重新利用。共享APDU創(chuàng)建了安全疏漏之隱患。例如,由于APDU可被共享和/或重新利用,對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō)可以從存儲(chǔ)在APDU中的另一應(yīng)用程序訪問(wèn)信息(因?yàn)锳PDU和在APDU中的信息對(duì)兩個(gè)應(yīng)用程序是共有的)。因此,應(yīng)用程序可窺探和捕獲對(duì)另一應(yīng)用程序具有保密意義的信息。
例如,通過(guò)監(jiān)控APDU,請(qǐng)求應(yīng)用程序可找出響應(yīng)應(yīng)用程序的名稱以及用于響應(yīng)應(yīng)用程序的監(jiān)控消息。因此,為了防止這些類型的安全性泄漏,傳統(tǒng)智能卡環(huán)境被授權(quán)對(duì)APDU進(jìn)行排他性訪問(wèn),直到應(yīng)用程序終止。然而,在授權(quán)訪問(wèn)其它應(yīng)用程序之前,APDU緩沖器被清空。因此,傳統(tǒng)應(yīng)用程序期望對(duì)特定共享對(duì)象進(jìn)行排他性訪問(wèn)而開(kāi)發(fā)。
在下一代智能卡架構(gòu)中,執(zhí)行傳統(tǒng)智能卡限制導(dǎo)致對(duì)非傳統(tǒng)應(yīng)用程序不必要的性能損失。例如,假設(shè)用戶正在播放經(jīng)過(guò)加密的視頻。為了對(duì)數(shù)字視頻信號(hào)進(jìn)行加密,智能卡用于校驗(yàn)用戶的訪問(wèn)權(quán)限。對(duì)數(shù)字視頻信號(hào)進(jìn)行解密涉及通過(guò)該卡處理相當(dāng)多的數(shù)據(jù)。在傳統(tǒng)智能卡環(huán)境中,視頻播放性能被由其操作環(huán)境利用的限制所嚴(yán)重影響。通過(guò)去除許多傳統(tǒng)智能卡限制,下一代智能卡架構(gòu)改善了再現(xiàn)性能。
例如,在圖1中,下一代智能卡架構(gòu)100提供了用于創(chuàng)建先前在傳統(tǒng)智能卡環(huán)境中被共享的對(duì)象的單獨(dú)副本的機(jī)構(gòu)。在實(shí)施例中,為每個(gè)應(yīng)用程序創(chuàng)建的新對(duì)象不是現(xiàn)有對(duì)象的副本,而是被創(chuàng)建來(lái)與特定應(yīng)用程序或線程同時(shí)工作的新對(duì)象。
根據(jù)實(shí)施例,虛擬機(jī)102創(chuàng)建先前被共享對(duì)象的新副本。
在實(shí)施例中,虛擬機(jī)102在應(yīng)用程序每次調(diào)用示生成存儲(chǔ)器中被共享對(duì)象的新副本。因此,在架構(gòu)100中,允許繁衍先前被共享的對(duì)象。例如,在一個(gè)實(shí)施例中,在虛擬機(jī)102上執(zhí)行的傳統(tǒng)小程序120從外部進(jìn)程接收APDU。該APDU密封在APDU對(duì)象之中。一旦接收APDU對(duì)象,在傳統(tǒng)智能卡環(huán)境中,傳統(tǒng)小程序120使用相同APDU進(jìn)行響應(yīng)。傳統(tǒng)智能卡環(huán)境中的問(wèn)題是必須等待下一個(gè)命令處理周期(例如,等待執(zhí)行的下一應(yīng)用程序),直到APDU對(duì)象直到其可開(kāi)始被處理被釋放之后。在下一代智能卡架構(gòu)的實(shí)施例中,虛擬機(jī)102分配一個(gè)APDU對(duì)象,以密封發(fā)送自和返回于傳統(tǒng)小程序的APDU,但現(xiàn)在,不同APDU對(duì)象可用于下一個(gè)命令處理周期。
創(chuàng)建先前被共享對(duì)象的新副本幫助虛擬機(jī)102避免了當(dāng)應(yīng)用程序訪問(wèn)相同對(duì)象/資源(例如,虛擬機(jī)102不需要執(zhí)行附加檢查以對(duì)由應(yīng)用程序存儲(chǔ)的壞對(duì)象引用進(jìn)行標(biāo)記)時(shí)可出現(xiàn)的潛在性能隱患。以這種方式,下一代智能卡架構(gòu)100創(chuàng)建了傳統(tǒng)應(yīng)用程序可在其中平穩(wěn)執(zhí)行的環(huán)境。
進(jìn)一步來(lái)說(shuō),通過(guò)創(chuàng)建先前被共享對(duì)象的新副本,傳統(tǒng)應(yīng)用程序的安全性問(wèn)題就減到最小。換句話說(shuō),每個(gè)新對(duì)象都被嶄新創(chuàng)建,使得在任一被共享對(duì)象中的數(shù)據(jù)量最小化。因此,即使敏感數(shù)據(jù)添加到被共享對(duì)象,傳統(tǒng)應(yīng)用程序不會(huì)對(duì)被共享對(duì)象的引用保持太久。這就意味著,即使另一應(yīng)用程序訪問(wèn)先前被共享的對(duì)象,任一特定對(duì)象中的信息很快變得不再準(zhǔn)確。
2.代理對(duì)象在一個(gè)實(shí)施例中,下一代智能卡架構(gòu)100提供了傳統(tǒng)應(yīng)用程序可在其中執(zhí)行的多線程環(huán)境。然而,為了在多線程環(huán)境中確保執(zhí)行安全性以及非線程應(yīng)用程序的完整性,代理對(duì)象被引進(jìn)到下一代智能卡架構(gòu)100中。代理對(duì)象用作傳統(tǒng)應(yīng)用程序SIO的代理。此外,代理對(duì)象幫助防止傳統(tǒng)應(yīng)用程序不必要地阻塞資源以及降低其它應(yīng)用程序的性能。
即使在下一代智能卡架構(gòu)中,傳統(tǒng)應(yīng)用程序假設(shè)其在任何給定時(shí)刻都是唯一有效的應(yīng)用程序。但是,如上所述,在下一代智能卡環(huán)境中,該項(xiàng)假設(shè)也許并不準(zhǔn)確。其它應(yīng)用程序(非傳統(tǒng)或者傳統(tǒng))可同時(shí)運(yùn)行。為了避免潛在沖突,在實(shí)施例中,架構(gòu)100創(chuàng)建了控制訪問(wèn)傳統(tǒng)應(yīng)用程序的代理對(duì)象。因此,對(duì)于傳統(tǒng)應(yīng)用程序,其看起來(lái)好似為唯一運(yùn)行的應(yīng)用程序。
例如,在下一代智能卡架構(gòu)100之中,發(fā)送到傳統(tǒng)應(yīng)用程序的消息可以是APDU形式。傳統(tǒng)應(yīng)用程序以單線程方式接收并響應(yīng)那些消息。因此,當(dāng)傳統(tǒng)應(yīng)用程序120接收APDU時(shí),它就期望能夠在接收任何附加信息之前處理整個(gè)請(qǐng)求并且回應(yīng)調(diào)用服務(wù)。
同時(shí),在架構(gòu)100中,非傳統(tǒng)應(yīng)用程序(例如,基于小服務(wù)程序的應(yīng)用程序101和擴(kuò)展小程序107)可同時(shí)運(yùn)行,產(chǎn)生了新的線程。例如,當(dāng)基于小服務(wù)程序的應(yīng)用程序101接收HTTP消息時(shí),其就可用指明消息被接收并正被處理的消息來(lái)進(jìn)行響應(yīng)。同時(shí),基于小服務(wù)程序的應(yīng)用程序可啟動(dòng)單獨(dú)線程來(lái)開(kāi)始處理該調(diào)用。因此,在架構(gòu)100中,多個(gè)線程可在任何給定時(shí)刻運(yùn)行。結(jié)果,多個(gè)同步調(diào)用可由傳統(tǒng)應(yīng)用程序產(chǎn)生。
在一個(gè)實(shí)施例中,為了處理那些調(diào)用,傳統(tǒng)應(yīng)用程序的SIO由代理對(duì)象密封。代理對(duì)象通常指類“代理”形式的對(duì)象。在一個(gè)實(shí)施例中,每個(gè)SIO都存在代理對(duì)象。
根據(jù)一個(gè)實(shí)施例,代理類型用作SIO周圍的包封,使得當(dāng)調(diào)用被接收時(shí),代理對(duì)象簡(jiǎn)單地檢查來(lái)看另一線程是否正在執(zhí)行SIO的傳統(tǒng)應(yīng)用程序代碼。如果是這樣,正在調(diào)用的線程就被掛起,直到訪問(wèn)傳統(tǒng)應(yīng)用程序代碼的線程終止。在一個(gè)實(shí)施例中,其使用Java線程同步基元來(lái)執(zhí)行這些功能。
在其它實(shí)施例中,代理類實(shí)施確保SIO和傳統(tǒng)應(yīng)用程序代碼在某一時(shí)刻被一個(gè)線程訪問(wèn)的方法和接口。例如,在實(shí)施例中,代理類包括方法和屬性以截取和存儲(chǔ)打算用于SIO的消息。因此,代理類通過(guò)相關(guān)方法實(shí)施列表、隊(duì)列、堆棧、或陣列來(lái)存儲(chǔ)打算用于SIO的消息。在另一實(shí)施例中,代理對(duì)象以某些其它方式來(lái)對(duì)SIO對(duì)象執(zhí)行調(diào)用串行化。此外,代理類還實(shí)施方法來(lái)控制對(duì)SIO對(duì)象的訪問(wèn)。例如,代理類可包括初始化SIO的方法,在完成來(lái)自特定請(qǐng)求應(yīng)用程序的所有調(diào)用之后破壞SIO的方法,訪問(wèn)SIO的方法的調(diào)用方法,控制如何及何時(shí)請(qǐng)求器應(yīng)用程序被允許訪問(wèn)SIO的同步方法,確定接收應(yīng)用程序應(yīng)該在其中響應(yīng)調(diào)用的優(yōu)先權(quán)的優(yōu)先權(quán)方法,確定傳統(tǒng)應(yīng)用程序是否繁忙的輪詢方法,校驗(yàn)調(diào)用有效的查錯(cuò)方法,校驗(yàn)請(qǐng)求器應(yīng)用程序識(shí)別的識(shí)別方法,把APDU消息發(fā)送到傳統(tǒng)應(yīng)用程序的正向傳送方法,存儲(chǔ)并正向響應(yīng)來(lái)自后退到請(qǐng)求應(yīng)用程序的傳統(tǒng)應(yīng)用程序的回答方法,以及在控制訪問(wèn)SIO中可能有用的各種其它方法。注意到,以上列舉的方法為示例性方法,并且根據(jù)實(shí)施,可隨著架構(gòu)的不同而變化。
訪問(wèn)傳統(tǒng)應(yīng)用程序代碼的其它企圖可由APDU分派程序(dispatcher)管理。APDU分派程序?yàn)橄到y(tǒng)組件(或虛擬機(jī)組件),其接收APDU消息,以及根據(jù)接收將被傳統(tǒng)應(yīng)用程序代碼處理的APDU消息來(lái)檢查來(lái)看另一線程是否正在執(zhí)行傳統(tǒng)應(yīng)用程序代碼。在一個(gè)實(shí)施例中,APDU分派程序經(jīng)由用于串行化對(duì)傳統(tǒng)小程序SIO的調(diào)用的相同鎖定機(jī)構(gòu)來(lái)執(zhí)行該檢查。如果傳統(tǒng)應(yīng)用程序代碼是自由的,那么APDU分派程序就可授權(quán)訪問(wèn)傳統(tǒng)應(yīng)用程序代碼。
在實(shí)施例中,通過(guò)使用執(zhí)行上下文鎖或全局容器鎖來(lái)控制對(duì)傳統(tǒng)應(yīng)用程序的訪問(wèn)。換句話說(shuō),代理對(duì)象可使用同步機(jī)構(gòu)(諸如在Java中找到的那些)以確保在給定時(shí)刻僅一個(gè)應(yīng)用程序訪問(wèn)傳統(tǒng)應(yīng)用程序。
根據(jù)一個(gè)實(shí)施例,下一代智能卡架構(gòu)100自動(dòng)檢測(cè)何時(shí)傳統(tǒng)應(yīng)用程序被調(diào)用。在一個(gè)實(shí)施例中,規(guī)范器工具把標(biāo)記插入代碼以指明應(yīng)用程序?yàn)閭鹘y(tǒng)應(yīng)用程序。因此,當(dāng)傳統(tǒng)應(yīng)用程序的SIO被調(diào)用時(shí),架構(gòu)100檢查指明傳統(tǒng)應(yīng)用程序的標(biāo)記并且把用于傳統(tǒng)應(yīng)用程序SIO的代理對(duì)象實(shí)例化。然后,所有對(duì)傳統(tǒng)應(yīng)用程序的SIO的調(diào)用被代理對(duì)象截取并在調(diào)用原始SIO的方法之前被串行化。在可選實(shí)施例中,傳統(tǒng)應(yīng)用程序可一些其它方式被確定(例如,通過(guò)檢查類的主要或次要版本,維護(hù)識(shí)別哪些應(yīng)用程序?yàn)閭鹘y(tǒng)應(yīng)用程序的登錄表或列表等)。
在一個(gè)實(shí)施例中,小程序API110創(chuàng)建用于傳統(tǒng)應(yīng)用程序的代理對(duì)象。可選地,虛擬機(jī)102在傳統(tǒng)應(yīng)用程序被調(diào)用時(shí)自動(dòng)對(duì)代理對(duì)象進(jìn)行實(shí)例化。
3.創(chuàng)建代理對(duì)象的實(shí)例重新參考架構(gòu)100,假設(shè)非傳統(tǒng)應(yīng)用程序從傳統(tǒng)應(yīng)用程序調(diào)用信息。在一個(gè)實(shí)施例中,架構(gòu)100截取調(diào)用并且檢測(cè)到該調(diào)用正被傳送到傳統(tǒng)應(yīng)用程序。因此,在一個(gè)實(shí)施例中,架構(gòu)100啟動(dòng)傳統(tǒng)應(yīng)用程序以及對(duì)用于傳統(tǒng)應(yīng)用程序SIO的代理對(duì)象進(jìn)行實(shí)例化。在一個(gè)實(shí)施例中,SIO在此時(shí)也可被實(shí)例化。此外,架構(gòu)100創(chuàng)建其應(yīng)用程序列表中的條目,以把發(fā)送到傳統(tǒng)應(yīng)用程序的任何消息重新引導(dǎo)到代理對(duì)象。
一旦實(shí)例化了代理對(duì)象,打算用于傳統(tǒng)應(yīng)用程序的原始消息被正向傳送到代理對(duì)象。在一個(gè)實(shí)施例中,該消息被串行化并被處理。當(dāng)消息最終被代理對(duì)象處理時(shí),在一個(gè)實(shí)施例中,代理對(duì)象調(diào)用適當(dāng)方法和/或通過(guò)傳統(tǒng)應(yīng)用程序SIO調(diào)用的調(diào)用數(shù)據(jù)。
在一個(gè)實(shí)施例中,一旦應(yīng)答了調(diào)用,傳統(tǒng)應(yīng)用程序把響應(yīng)發(fā)送到其后將響應(yīng)正向傳送到請(qǐng)求應(yīng)用程序的代理對(duì)象。通過(guò)經(jīng)過(guò)代理對(duì)象發(fā)送響應(yīng),代理對(duì)象可追蹤何時(shí)傳統(tǒng)應(yīng)用程序可用。此外,代理對(duì)象可確保特定級(jí)別的性能。另外,傳統(tǒng)應(yīng)用程序直接響應(yīng)請(qǐng)求應(yīng)用程序。
假設(shè)在傳統(tǒng)應(yīng)用程序正在創(chuàng)建對(duì)第一接收消息的響應(yīng)的間隔期間,來(lái)自其它應(yīng)用程序的多個(gè)其它調(diào)用被同時(shí)發(fā)送到傳統(tǒng)應(yīng)用程序。在一個(gè)實(shí)施例中,那些消息被重新引導(dǎo)到代理對(duì)象,使其串行化。然后,每次傳統(tǒng)應(yīng)用程序完成對(duì)消息的響應(yīng),代理對(duì)象都處理下一個(gè)消息。以這種方式,代理對(duì)象就防止SIO丟棄正在到來(lái)的消息。
基本上,當(dāng)調(diào)用從傳統(tǒng)應(yīng)用程序的外部源到來(lái)時(shí),代理對(duì)象就代為請(qǐng)求。當(dāng)正在使用SIO時(shí),代理對(duì)象保持其它調(diào)用,直到SIO被釋放。然后,代理對(duì)象通過(guò)SIO來(lái)調(diào)用所請(qǐng)求的信息。因此,請(qǐng)求應(yīng)用程序可與傳統(tǒng)應(yīng)用程序進(jìn)行通信。
參考圖1,假設(shè)了傳統(tǒng)小程序120正在架構(gòu)100中執(zhí)行。因此,架構(gòu)100已經(jīng)生成了用于傳統(tǒng)小程序SIO的代理對(duì)象。因此,當(dāng)基于小服務(wù)程序的應(yīng)用程序101從傳統(tǒng)小程序調(diào)用數(shù)據(jù)時(shí),在實(shí)施例中,虛擬機(jī)102檢測(cè)從基于小服務(wù)程序的應(yīng)用程序101發(fā)送到傳統(tǒng)小程序120的調(diào)用。調(diào)用被重新引導(dǎo)到代理對(duì)象,然后通過(guò)SIO把調(diào)用正向傳送到傳統(tǒng)小程序120。之后,傳統(tǒng)小程序120處理該調(diào)用。
現(xiàn)在,假設(shè)在傳統(tǒng)小程序完成了處理來(lái)自基于小服務(wù)程序的應(yīng)用程序101的調(diào)用之前,擴(kuò)展小程序107也發(fā)送調(diào)用到傳統(tǒng)小程序120。在實(shí)施例中,來(lái)自擴(kuò)展小程序107的調(diào)用被代理對(duì)象所截取并保持,直到傳統(tǒng)小程序120完成處理來(lái)自基于小服務(wù)程序的應(yīng)用程序101的調(diào)用并釋放其資源。類似地,如果其它調(diào)用由傳統(tǒng)小程序120產(chǎn)生,那么那些調(diào)用就被代理對(duì)象截取并保持,直到可服務(wù)調(diào)用。
以這種方式,傳統(tǒng)小程序120可繼續(xù)發(fā)揮作用而無(wú)須被其它應(yīng)用程序折中。應(yīng)注意到,代理對(duì)象不應(yīng)該創(chuàng)建大量性能缺陷。僅試圖訪問(wèn)傳統(tǒng)應(yīng)用程序的應(yīng)用程序才直接受到影響。其它進(jìn)程和應(yīng)用程序圍繞著傳統(tǒng)應(yīng)用程序繼續(xù)執(zhí)行。
E.用于創(chuàng)建專有環(huán)境的過(guò)程圖4示出了用于在下一代智能卡架構(gòu)中創(chuàng)建傳統(tǒng)應(yīng)用程序在其中執(zhí)行的專有環(huán)境的示例性過(guò)程。為了示出該進(jìn)程,假設(shè)多個(gè)應(yīng)用程序已在下一代智能卡虛擬機(jī)(例如,結(jié)合圖1所述的虛擬機(jī)102)上執(zhí)行。在步驟410中,用戶在下一代智能卡環(huán)境中打開(kāi)傳統(tǒng)應(yīng)用程序。在一個(gè)實(shí)施例中,當(dāng)用戶打開(kāi)傳統(tǒng)應(yīng)用程序時(shí),下一代智能卡架構(gòu)檢測(cè)應(yīng)用程序?yàn)閭鹘y(tǒng)應(yīng)用程序并要求用于其的專有環(huán)境以安全執(zhí)行。
因此,在步驟420中,為傳統(tǒng)應(yīng)用程序創(chuàng)建專有環(huán)境。在一個(gè)實(shí)施例中,下一代智能卡虛擬機(jī)創(chuàng)建并管理專有環(huán)境。如上所述,傳統(tǒng)應(yīng)用程序通常僅可通過(guò)SIO來(lái)訪問(wèn)其它應(yīng)用程序。由于下一代智能卡環(huán)境允許多個(gè)應(yīng)用程序同時(shí)執(zhí)行,所以傳統(tǒng)應(yīng)用程序可在某一時(shí)刻接收許多調(diào)用(即使其SIO被設(shè)計(jì)成在某一時(shí)刻僅處理一個(gè)調(diào)用)。結(jié)果,在一個(gè)實(shí)施例中,創(chuàng)建代理對(duì)象以密封SIO。通過(guò)如此操作,可控制對(duì)SIO的訪問(wèn)。基本上,代理對(duì)象截取調(diào)用并隨著完成每個(gè)以前的調(diào)用而把它們都正向傳送到傳統(tǒng)應(yīng)用程序(通過(guò)SIO)。因此,在某一時(shí)刻僅允許一個(gè)調(diào)用(或無(wú)論SIO能夠處理多么多的調(diào)用)訪問(wèn)可共享接口。
在一個(gè)實(shí)施例中,通過(guò)創(chuàng)建打算被單線程應(yīng)用程序共享的的對(duì)象的副本,下一代智能卡的虛擬機(jī)也可進(jìn)一步增強(qiáng)專有環(huán)境。這樣做是通過(guò)檢測(cè)在傳統(tǒng)智能卡環(huán)境中傳統(tǒng)應(yīng)用程序何時(shí)訪問(wèn)打算被共享的儲(chǔ)器中的對(duì)象來(lái)進(jìn)行的。當(dāng)下一代智能卡架構(gòu)檢測(cè)對(duì)象時(shí),其簡(jiǎn)單創(chuàng)建了存儲(chǔ)器中對(duì)象的新副本。因此,所述對(duì)象不再是被共享的對(duì)象。
在步驟430中,一旦創(chuàng)建了專有環(huán)境,傳統(tǒng)應(yīng)用程序就能夠安全執(zhí)行。
硬件綜述圖5是示出計(jì)算機(jī)系統(tǒng)500以及本發(fā)明的實(shí)施例可在其上實(shí)施的智能卡的框圖。計(jì)算機(jī)系統(tǒng)500包括總線502或其它通信機(jī)構(gòu),用于信息交換;以及與總線502連接的處理器504,用于處理信息。計(jì)算機(jī)系統(tǒng)500還包括主存儲(chǔ)器506(例如,隨機(jī)存取存儲(chǔ)器(RAM)或其它動(dòng)態(tài)存儲(chǔ)裝置),連接到總線502,用于存儲(chǔ)信息和將由處理器504執(zhí)行的指令。主存儲(chǔ)器506還可用于在處理器504執(zhí)行指令期間存儲(chǔ)臨時(shí)變量或其它中間信息。計(jì)算機(jī)系統(tǒng)500還可包括連接到總線502的只讀存儲(chǔ)器(ROM)508或其它靜態(tài)存儲(chǔ)裝置,用于存儲(chǔ)用于處理器504的靜態(tài)信息和指令。提供諸如磁盤或光盤的存儲(chǔ)裝置510,連接到總線502,用于存儲(chǔ)信息和指令。
計(jì)算機(jī)系統(tǒng)500可經(jīng)由總線502連接到用于將信息顯示給計(jì)算機(jī)用戶的顯示器512(例如,陰極射線管(CRT))。包括字母數(shù)字和其它鍵的輸入裝置514連接到總線502,用于將信息和命令選擇傳輸?shù)教幚砥?04。另一種類型的用戶輸入裝置是諸如鼠標(biāo)、跟蹤球、或光標(biāo)方向鍵的光標(biāo)控制器516,用于將方向信息和命令選擇傳輸?shù)教幚砥?04,并用于控制顯示器512上的光標(biāo)移動(dòng)。該輸入裝置通常具有在第一軸(例如,x)和第二軸(例如,y)的兩個(gè)軸上的兩個(gè)自由度,這使裝置指定平面內(nèi)的位置。。
本發(fā)明涉及本文所述工具技術(shù)的計(jì)算機(jī)系統(tǒng)500的使用。根據(jù)本發(fā)明的一個(gè)實(shí)施例,響應(yīng)于執(zhí)行包含在主存儲(chǔ)器506中的一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列的處理器504,通過(guò)計(jì)算機(jī)系統(tǒng)500提供工具和技術(shù)。這些指令可從諸如存儲(chǔ)裝置510的另一機(jī)器可讀的介質(zhì)讀入主存儲(chǔ)器506。執(zhí)行包含在主存儲(chǔ)器506中的指令序列使得處理器504執(zhí)行本文描述的處理步驟。還可使用多處理配置中的一個(gè)或多個(gè)處理器,以執(zhí)行包括在主存儲(chǔ)器506中的指令序列,在可選實(shí)施例中,可以用硬連線電路代替軟件指令或與軟件指令相結(jié)合以實(shí)施本發(fā)明。因此,發(fā)明的實(shí)施例不限于硬件電路和軟件的任何具體組合。
本文使用的術(shù)語(yǔ)“機(jī)器可讀介質(zhì)”指的是參與將指令提供給處理器504用于執(zhí)行的任何介質(zhì)。這種介質(zhì)可采用多種形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)、和傳輸介質(zhì)。舉例來(lái)說(shuō),非易失性介質(zhì)包括諸如存儲(chǔ)裝置510的光盤或磁盤。易失性介質(zhì)包括諸如主存儲(chǔ)器506的動(dòng)態(tài)存儲(chǔ)器。傳輸介質(zhì)包括同軸線纜、銅線和光纖,包括構(gòu)成總線502的導(dǎo)線。傳輸介質(zhì)還可采用聲波或光波的形式,諸如在無(wú)線電波和紅外數(shù)據(jù)通信中生成的那些波。
例如,機(jī)器可讀介質(zhì)的通常形式包括軟盤、柔性盤、硬盤、磁帶、或其它磁性介質(zhì)、CD-ROM、DVD、或任何其它光存儲(chǔ)介質(zhì)、穿孔卡、紙帶、任何其它具有孔式樣的物理介質(zhì)、RAM、PROM、EPROM、FLASH-EPROM、任何其它存儲(chǔ)芯片或盒式磁帶、下文中描述的載波,或計(jì)算機(jī)可讀取的任何其它介質(zhì)。
各種形式的機(jī)器可讀介質(zhì)可參與將一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列傳送到理器504用于執(zhí)行。例如,指令可最初承載在遠(yuǎn)程計(jì)算機(jī)的磁盤上。該遠(yuǎn)程計(jì)算機(jī)可將指令加載進(jìn)其動(dòng)態(tài)存儲(chǔ)器并使用調(diào)制解調(diào)器通過(guò)電話線發(fā)送這些指令。計(jì)算機(jī)系統(tǒng)500的本地調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù)并使用紅外發(fā)射器將數(shù)據(jù)轉(zhuǎn)換為紅外信號(hào)。紅外探測(cè)器可接收紅外信號(hào)中攜帶的數(shù)據(jù),并且適當(dāng)?shù)碾娐房蓪?shù)據(jù)放到總線502上??偩€502將數(shù)據(jù)傳送到主存儲(chǔ)器506,處理器504從主存儲(chǔ)器506中取得數(shù)據(jù)并執(zhí)行指令。由主存儲(chǔ)器506所接收的指令可在處理器504執(zhí)行之前或之后可選地存儲(chǔ)在存儲(chǔ)裝置510上。
計(jì)算機(jī)系統(tǒng)500還包括連接到總線502的通信接口518。連接到與局域網(wǎng)522相連的網(wǎng)絡(luò)鏈路520的通信接口518提供雙路數(shù)據(jù)通信。例如,通信接口518可以是綜合服務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)卡或調(diào)制解調(diào)器,用于提供到相應(yīng)類型的電話線的數(shù)據(jù)通信連接。作為另一個(gè)實(shí)例,通信接口518可以是局域網(wǎng)(LAN)卡,用于提供到兼容LAN的數(shù)據(jù)通信連接。還可實(shí)施無(wú)線鏈接。在任何這樣的實(shí)施中,通信接口518發(fā)送和接收承載表示各種類型信息的數(shù)字?jǐn)?shù)據(jù)流的電信號(hào)、電磁信號(hào)或光信號(hào)。
網(wǎng)絡(luò)鏈路520一般通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)向其它數(shù)據(jù)裝置提供數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路520可通過(guò)局域網(wǎng)522提供到主機(jī)524或者到由互聯(lián)網(wǎng)服務(wù)商(ISP)526所操作的數(shù)據(jù)設(shè)備的連接。ISP526又通過(guò)現(xiàn)在通常稱作“互聯(lián)網(wǎng)”528的全球分組數(shù)據(jù)通信網(wǎng)絡(luò)提供數(shù)據(jù)通信服務(wù)。局域網(wǎng)絡(luò)522和互聯(lián)網(wǎng)528都使用攜帶數(shù)字?jǐn)?shù)據(jù)流的電信號(hào)、電磁信號(hào)或光信號(hào)。通過(guò)各種網(wǎng)絡(luò)的信號(hào)和在網(wǎng)路鏈路520上并通過(guò)通信接口518的信號(hào),其將數(shù)字?jǐn)?shù)據(jù)傳送到計(jì)算機(jī)系統(tǒng)500和從計(jì)算機(jī)系統(tǒng)500傳送數(shù)字?jǐn)?shù)據(jù)的信號(hào),是傳輸信息的載波的示例性形式。
計(jì)算機(jī)系統(tǒng)500可通過(guò)網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路520、和通信接口518發(fā)送消息和接收數(shù)據(jù)(包括程序代碼)。在互聯(lián)網(wǎng)實(shí)例中,服務(wù)器550可通過(guò)互聯(lián)網(wǎng)528、ISP 526、局域網(wǎng)522、和通信接口518傳輸用于應(yīng)用程序的請(qǐng)求代碼。根據(jù)本發(fā)明,一個(gè)這樣的下載應(yīng)用程序提供本文所描述的技術(shù)。
當(dāng)代碼被接收到時(shí),所接收的代碼就可被處理器504執(zhí)行、和/或存儲(chǔ)在存儲(chǔ)裝置510或其它非易失性存儲(chǔ)裝置中用于以后執(zhí)行。這樣,計(jì)算機(jī)系統(tǒng)500可獲得載波形式的應(yīng)用程序代碼。
權(quán)利要求
1.一種方法,包括在智能卡上的多線程運(yùn)行時(shí)間環(huán)境中執(zhí)行一組應(yīng)用程序,其中,在所述一組應(yīng)用程序中的至少一個(gè)應(yīng)用程序是被設(shè)計(jì)為在單線程環(huán)境中運(yùn)行的單線程應(yīng)用程序,以及其中,所述單線程應(yīng)用程序通過(guò)可共享接口對(duì)象對(duì)于所述一組應(yīng)用程序中的其它應(yīng)用程序是可訪問(wèn)的;以及在所述多線程運(yùn)行時(shí)間環(huán)境中生成可安全執(zhí)行所述單線程應(yīng)用程序的專有環(huán)境,其中,所述專有環(huán)境包括密封所述可共享接口對(duì)象的代理對(duì)象,以及其中,所述代理對(duì)象控制由所述一組應(yīng)用程序中的所述其它應(yīng)用程序?qū)λ隹晒蚕斫涌趯?duì)象的訪問(wèn),使得僅允許一個(gè)應(yīng)用程序在某一時(shí)刻訪問(wèn)所述單線程應(yīng)用程序中的代碼。
2.根據(jù)權(quán)利要求1所述的方法,還包括檢測(cè)所述單線程應(yīng)用程序正在訪問(wèn)存儲(chǔ)器中被所述單線程應(yīng)用程序試圖共享的對(duì)象;以及創(chuàng)建存儲(chǔ)器中所述對(duì)象的新副本,以使所述對(duì)象不再被共享。
3.根據(jù)權(quán)利要求2所述的方法,其中,生成所述對(duì)象的所述新副本包括僅把最少量的數(shù)據(jù)添加到所述對(duì)象的所述新副本中。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述一組應(yīng)用程序中的其它應(yīng)用程序與所述單線程應(yīng)用程序同時(shí)運(yùn)行。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述可共享接口對(duì)象被設(shè)計(jì)成在某一時(shí)刻僅處理一個(gè)調(diào)用。
6.根據(jù)權(quán)利要求1所述的方法,其中,所述代理對(duì)象截取調(diào)用以訪問(wèn)所述可共享接口對(duì)象。
7.根據(jù)權(quán)利要求1所述的方法,其中,所述代理對(duì)象保持其它調(diào)用直到所述可共享接口對(duì)象完成當(dāng)前調(diào)用的執(zhí)行。
8.根據(jù)權(quán)利要求1所述的方法,還包括在多線程運(yùn)行時(shí)間環(huán)境中執(zhí)行所述應(yīng)用程序之前,將所述單線程應(yīng)用程序從壓縮格式轉(zhuǎn)換成未壓縮格式。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述壓縮格式為CAP文件格式,以及所述未壓縮格式為類文件格式。
10.根據(jù)權(quán)利要求1所述的方法,其中,僅允許一個(gè)應(yīng)用程序在某一刻訪問(wèn)所述可共享接口包括把對(duì)所述單線程應(yīng)用程序的調(diào)用串行化。
11.一種機(jī)器可讀介質(zhì),包括用于執(zhí)行以下步驟的指令集在智能卡上的多線程運(yùn)行時(shí)間環(huán)境中執(zhí)行一組應(yīng)用程序,其中,在所述一組應(yīng)用程序中的至少一個(gè)應(yīng)用程序是被設(shè)計(jì)為在單線程環(huán)境中運(yùn)行的單線程應(yīng)用程序,以及其中,所述單線程應(yīng)用程序通過(guò)可共享接口對(duì)象對(duì)于所述一組應(yīng)用程序中的其它應(yīng)用程序是可訪問(wèn)的;以及在所述多線程運(yùn)行時(shí)間環(huán)境中生成可安全執(zhí)行所述單線程應(yīng)用程序的專有環(huán)境,其中,所述專有環(huán)境包括密封所述可共享接口對(duì)象的代理對(duì)象,以及其中,所述代理對(duì)象控制由所述一組應(yīng)用程序中的所述其它應(yīng)用程序?qū)λ隹晒蚕斫涌趯?duì)象的訪問(wèn),使得僅允許一個(gè)應(yīng)用程序在某一時(shí)刻訪問(wèn)所述單線程應(yīng)用程序中的代碼。
12.根據(jù)權(quán)利要求11所述的機(jī)器可讀介質(zhì),還包括檢測(cè)所述單線程應(yīng)用程序正在訪問(wèn)存儲(chǔ)器中被所述單線程應(yīng)用程序試圖共享的對(duì)象;以及創(chuàng)建存儲(chǔ)器中所述對(duì)象的新副本,以使所述對(duì)象不再被共享。
13.根據(jù)權(quán)利要求12所述的機(jī)器可讀介質(zhì),其中,生成所述對(duì)象的新副本包括僅把最少量的數(shù)據(jù)添加到所述對(duì)象的所述新副本中。
14.根據(jù)權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,所述一組應(yīng)用程序中的其它應(yīng)用程序與所述單線程應(yīng)用程序同時(shí)運(yùn)行。
15.根據(jù)權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,所述可共享接口對(duì)象被設(shè)計(jì)成在某一時(shí)刻僅處理一個(gè)調(diào)用。
16.根據(jù)權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,所述代理對(duì)象截取調(diào)用以訪問(wèn)所述可共享接口對(duì)象。
17.根據(jù)權(quán)利要求16所述的機(jī)器可讀介質(zhì),其中,所述代理對(duì)象保持其它調(diào)用直到所述可共享接口對(duì)象完成當(dāng)前調(diào)用的執(zhí)行。
18.根據(jù)權(quán)利要求12所述的機(jī)器可讀介質(zhì),還包括在多線程運(yùn)行時(shí)間環(huán)境中執(zhí)行所述應(yīng)用程序之前,將所述單線程應(yīng)用程序從壓縮格式轉(zhuǎn)換成未壓縮格式。
19.根據(jù)權(quán)利要求18所述的機(jī)器可讀介質(zhì),其中,所述壓縮格式為CAP文件格式,以及所述未壓縮格式為類文件格式。
20.根據(jù)權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,僅允許一個(gè)應(yīng)用程序在某一刻訪問(wèn)所述可共享接口包括把對(duì)所述單線程應(yīng)用程序的調(diào)用串行化。
全文摘要
為了在下一代智能卡環(huán)境中執(zhí)行傳統(tǒng)智能卡應(yīng)用程序,提供將應(yīng)用程序轉(zhuǎn)換成可由下一代智能卡平臺(tái)執(zhí)行的格式的機(jī)構(gòu)。例如,在基于Java環(huán)境中,規(guī)范器工具把CAP文件翻譯成Java的類文件。附加機(jī)構(gòu)在下一代智能卡上重新創(chuàng)建專有環(huán)境,該專有環(huán)境使所述傳統(tǒng)應(yīng)用程序無(wú)須影響傳統(tǒng)和非傳統(tǒng)應(yīng)用程序的性能而執(zhí)行。例如,機(jī)構(gòu)創(chuàng)建以前共享對(duì)象的新實(shí)例,使得傳統(tǒng)應(yīng)用程序可繼續(xù)期望對(duì)那些對(duì)象進(jìn)行排他性訪問(wèn)。此外,機(jī)構(gòu)通過(guò)控制調(diào)用如何以及何時(shí)被發(fā)送到傳統(tǒng)應(yīng)用程序來(lái)管理傳統(tǒng)應(yīng)用程序和非傳統(tǒng)應(yīng)用程序之間的通信。
文檔編號(hào)G06K19/077GK101013379SQ20071000061
公開(kāi)日2007年8月8日 申請(qǐng)日期2007年1月9日 優(yōu)先權(quán)日2006年1月9日
發(fā)明者坦若爾·S·拉維尚卡爾, 蒂埃里·P·維奧洛, 馬修·R·希爾, 薩基卜·艾哈邁德 申請(qǐng)人:太陽(yáng)微系統(tǒng)有限公司