專利名稱::把不同源語(yǔ)言轉(zhuǎn)移到一個(gè)執(zhí)行介質(zhì)的制作方法本公開基于1999年6月4日提交的法國(guó)專利申請(qǐng)No.9907239,并由此請(qǐng)求優(yōu)先權(quán),其內(nèi)容附此作參考。因而本發(fā)明還針對(duì)數(shù)據(jù)處理裝置的開放性。本發(fā)明涉及為諸如java卡和其他智能卡操作系統(tǒng)等可編程數(shù)據(jù)處理裝置編寫的應(yīng)用程序的互操作性?;ゲ僮餍赃€附帶有安全方面的要求。在可編程智能卡領(lǐng)域里,每一種用以編寫準(zhǔn)備裝入一種卡中的應(yīng)用程序的編程源語(yǔ)言都是與特定的執(zhí)行介質(zhì)緊密聯(lián)系的,后者一般具軟件性質(zhì),諸如虛擬機(jī)等,但還具有硬件性質(zhì),例如微處理器等。為了能夠把一個(gè)程序裝入智能卡,對(duì)用給定的源語(yǔ)言編寫的程序加以編譯,然后裝入準(zhǔn)備接收用所述給定源語(yǔ)言編寫的程序的智能卡。所述卡接收編譯后的程序并由專門用來執(zhí)行最初用所述給定源語(yǔ)言編寫的程序的執(zhí)行介質(zhì)執(zhí)行。如圖1所示,每一種智能卡Cn都含有各自的執(zhí)行介質(zhì)SEn,它不同于其他智能卡C1至CN中的那些執(zhí)行介質(zhì)SE1至SEN。1和N之間的整數(shù)n標(biāo)志若干種源語(yǔ)言LS1至LSN中預(yù)定的語(yǔ)言。每一個(gè)卡Cn,只有在它們是用各自的源語(yǔ)言LSn編程時(shí),才可以執(zhí)行應(yīng)用程序Pn。在對(duì)準(zhǔn)備裝入的程序進(jìn)行編譯之前,程序經(jīng)過代碼校驗(yàn),以便檢查準(zhǔn)備裝入的程序是否并未破壞與所述源語(yǔ)言LSn相關(guān)的執(zhí)行介質(zhì)SEn所提供的保密特點(diǎn)。事實(shí)上,在這樣的一組卡中,在以下背景下用給定源語(yǔ)言開發(fā)的程序Pn與目標(biāo)執(zhí)行介質(zhì)SEn緊密聯(lián)系1)由源語(yǔ)言LSn提供的數(shù)據(jù)結(jié)構(gòu)和操作是專門的,以便編譯出對(duì)源語(yǔ)言LSn專用的執(zhí)行介質(zhì)SEn而言在大小和速度上優(yōu)化的表達(dá);2)由源語(yǔ)言LSn提供的程序庫(kù)BPn一般與源語(yǔ)言相關(guān),并針對(duì)專用于所述源語(yǔ)言的執(zhí)行介質(zhì)進(jìn)行了優(yōu)化;而且3)程序Pn在其裝入卡Cn之前的校驗(yàn)與由所述目標(biāo)執(zhí)行介質(zhì)Sen提供的保密特點(diǎn)緊密聯(lián)系。源語(yǔ)言LSn與其執(zhí)行介質(zhì)Sen之間的這種緊密聯(lián)系表現(xiàn)在校驗(yàn)、編譯和裝入鏈CVCCn上。這個(gè)鏈管理著用高級(jí)源語(yǔ)言編寫的程序Pn向準(zhǔn)備好由專用于源語(yǔ)言LSn的執(zhí)行介質(zhì)SEn有效執(zhí)行的緊湊形式的變換。本發(fā)明的一般的核心問題是用不同源語(yǔ)言LS1至LSN中任何一種編寫的程序與不同執(zhí)行介質(zhì)SE1至SEM的鏈接,M是任何一個(gè)等于或不同于整數(shù)N的整數(shù)。這個(gè)一般問題可以分解為以下3個(gè)子問題按照第一個(gè)子問題SP1,例如,最好讓用源語(yǔ)言LSn編寫的程序P運(yùn)行在專用于給定源語(yǔ)言LSm的執(zhí)行介質(zhì)SEm上,下標(biāo)m在1與M之間。第二個(gè)子問題SP2是把各自以不同的源語(yǔ)言LS1至LSN編寫的程序P1至PN裝入能夠?yàn)檫@些不同的程序提供就存儲(chǔ)器大小、執(zhí)行速度、它們的程序庫(kù)BP1至BPM及其保密特點(diǎn)而言是有效的環(huán)境的通用的執(zhí)行介質(zhì)SEm中。第三個(gè)子問題SP3旨在讓各自以不同的源語(yǔ)言LS1至LSN編寫的不同的程序P1至PN在通用的執(zhí)行介質(zhì)SEm中共存。對(duì)于第三個(gè)子問題,必須處理源于不同編程環(huán)境并放入同一個(gè)物理介質(zhì)中的程序P1至PN的安全性。這三個(gè)子問題SP1,SP2和SP3合起來要,例如在保持安全和保護(hù)、交互機(jī)制的情況下解決為可編程智能卡編寫的不同應(yīng)用程序的互操作性,為了解決這三個(gè)子問題SP1,SP2和SP3,本專業(yè)的技術(shù)人員面臨以下三種類型的解決方案,但是它們都不是完全令人滿意的。第一種解決方案,最簡(jiǎn)單的,也是最常用的,正如圖2中用編寫操作W1和WM所指示的,是把以專用于安裝在智能卡Cn中的執(zhí)行介質(zhì)SEn的源語(yǔ)言LSn編寫的程序Pn重寫為分別以專用于安裝在智能卡C1至CM中的執(zhí)行介質(zhì)SE1至SEM的源語(yǔ)言LS1至LSM編寫的程序Pn1和PnM。第一種解決方案主要缺點(diǎn)是對(duì)程序員而言繁重而又煩悶的手工任務(wù),把程序Pn的算法重寫為程序Pn1,PnM,它必須適應(yīng)新的源語(yǔ)言LS1,LSM的數(shù)據(jù)結(jié)構(gòu)和程序庫(kù)BP1,BPM。另外,每一種新的執(zhí)行介質(zhì)SE1,SEM所提供的安全機(jī)制要求對(duì)重寫的程序Pn1,PnM的代碼重新進(jìn)行考證。第一種解決方案只涉及子問題SP1,因而只解決了程序互操作性問題的很小一部分。此外,若在新卡上出現(xiàn)另一種與不同于執(zhí)行介質(zhì)SE1,SEn和SEM的執(zhí)行介質(zhì)相關(guān)的源語(yǔ)言,則又必須涉及所有用最初的源語(yǔ)言LSn編寫的舊程序,以便用這另一種源語(yǔ)言將其重寫。第二種解決方案包括交叉編譯。參照?qǐng)D3,例如,假定有兩種各自用最初專用于兩種智能卡C1和C2中的執(zhí)行介質(zhì)SE1和SE2的源語(yǔ)言LS1和LS2編寫的程序P1和P2,通過校驗(yàn)、編譯、裝入鏈CVCC1和CVCC2中的編譯之后,它們的每一個(gè)都可以以傳統(tǒng)方式在執(zhí)行介質(zhì)SE2和SE1上執(zhí)行。但是,程序P1和P2必須分別在執(zhí)行介質(zhì)SE2和SE1中執(zhí)行,而且它們都必須在包含于第三智能卡C3中專用于第三種源語(yǔ)言LS3的第三種執(zhí)行介質(zhì)SE3上執(zhí)行。為了在不同于專用于最初的源語(yǔ)言LS1或LS2的執(zhí)行介質(zhì)的目標(biāo)執(zhí)行介質(zhì)SE2和SE3或SE1和SE3上執(zhí)行程序P1或P2,程序P1和P2要經(jīng)過另一個(gè)校驗(yàn)、編譯和裝入鏈CVCC21和CVCC31或CVCC12和CVCC32中的編譯。與第一種解決方案相比,在程序員方面第二種解決方案不再需要手工重寫這些程序,但要求可以獲得許多校驗(yàn)、編譯和裝入鏈CVCC12,CVCC21,CVCC31,CVCC32。更一般地說,對(duì)于N種源語(yǔ)言LS1至LSN和M種執(zhí)行介質(zhì)SE1至SEM,要求有N*M種校驗(yàn)、編譯和裝入鏈。這些鏈在其數(shù)量上和復(fù)雜性上,要求相當(dāng)可觀的硬件、軟件和人力的投資。除了這個(gè)主要缺點(diǎn)之外,第二種解決方案還有以下缺點(diǎn)-就存儲(chǔ)器大小和執(zhí)行速度而言這樣產(chǎn)生的程序性能差,它們?cè)谄渲袌?zhí)行的執(zhí)行介質(zhì)并非從一開始就適當(dāng)?shù)剡m配編寫這些程序所用的源語(yǔ)言LS1和LS2的數(shù)據(jù)結(jié)構(gòu)、操作和程序庫(kù);-當(dāng)出現(xiàn)新的源語(yǔ)言時(shí),校驗(yàn)、編譯和裝入鏈的生產(chǎn)在數(shù)量上等于現(xiàn)存目標(biāo)執(zhí)行介質(zhì)SE1至SEM數(shù),反之當(dāng)出現(xiàn)新的執(zhí)行介質(zhì)時(shí),在數(shù)量上則等于現(xiàn)存源語(yǔ)言數(shù);-為了采用這些程序,預(yù)先給所有下載站裝入配備不同執(zhí)行介質(zhì)SE1至SEM用的編譯好而且代碼校驗(yàn)過的程序,這使第二解決方案變得更為復(fù)雜和成本高昂。第二解決方案只涉及子問題SP1,但與第一解決方案相比,它采用了自動(dòng)化的方式,而且這樣只解決了互操作性問題中非常小的一部分。另外,若在新卡上出現(xiàn)有別于執(zhí)行介質(zhì)SE1至SEM的其他執(zhí)行介質(zhì)相關(guān)的另一種源語(yǔ)言,則必須讓所有最初的程序P1至PN通過新的校驗(yàn)、編譯和裝入鏈,為所述另一種執(zhí)行介質(zhì)產(chǎn)生經(jīng)過校驗(yàn)的代碼。第三種解決方案提出一種智能卡CP,它的每一個(gè)都包含若干種執(zhí)行介質(zhì),例如三種執(zhí)行介質(zhì)SE1,SE2和SE3,如圖4所示。這樣,可以分別把用不同源語(yǔ)言LS1,LS2和LS3編寫的程序P1,P2和P3通過各自的校驗(yàn)、編譯和裝入鏈CVCC1,CVCC2和CVCC3裝入卡CP??–P為每一個(gè)程序P1,P2和P3提供就像它分別裝在只具有專用于各自源語(yǔ)言LS1,LS2和LS3的執(zhí)行介質(zhì)SE1,SE2和SE3的卡中完全一樣的功能。第三種解決方案有利地保留了分別與源語(yǔ)言LS1,LS2和LS3相關(guān)的校驗(yàn)、編譯和裝入鏈CVCC1,CVCC2和CVCC3,并且可以解決子問題SP2。盡管如此,第三種解決方案有一個(gè)主要缺點(diǎn),就是它目前更加不切實(shí)際,因?yàn)橐b入卡中的不同執(zhí)行介質(zhì)數(shù)量巨大,而且每一種都代表數(shù)量巨大的代碼。這個(gè)主要缺點(diǎn)也出現(xiàn)在BertilFoliot和IanPiumarta的題為“VirtualVirtualMachines(虛擬虛擬機(jī))”(1997年9月)的出版物或者同一作者(1988年)的題為“DynamicallyConfigutableMulti-languageExecutionPlatform(可動(dòng)態(tài)配置的多語(yǔ)言執(zhí)行平臺(tái))”的出版物中所描述的類型的VVM體系結(jié)構(gòu)中。在這種體系結(jié)構(gòu)中,在存儲(chǔ)器內(nèi)存在幾個(gè)執(zhí)行支持平臺(tái)。這些執(zhí)行支持起著下層系統(tǒng)原語(yǔ)附加抽象層的作用。但是,目前在智能卡中支持這種類型的解決方案所必須的存儲(chǔ)器是不可行的。就算可以購(gòu)到,例如與其存儲(chǔ)多個(gè)執(zhí)行介質(zhì),不如用這些存儲(chǔ)器存儲(chǔ)額外的數(shù)據(jù)和程序更有用。為此目的,把用各自執(zhí)行介質(zhì)專用的源語(yǔ)言編寫的若干個(gè)程序轉(zhuǎn)移到一種數(shù)據(jù)處理裝置上的方法包括以下步驟-把每一個(gè)程序編譯成用代表這些源語(yǔ)言最小子集的中間語(yǔ)言表達(dá)的相應(yīng)的程序;-在數(shù)據(jù)處理裝置中設(shè)置一種專用于中間語(yǔ)言的預(yù)定的執(zhí)行介質(zhì);和-把相應(yīng)的中間語(yǔ)言程序裝入配備有使相應(yīng)的源語(yǔ)言適合于中間語(yǔ)言的相應(yīng)的程序庫(kù)的數(shù)據(jù)處理裝置,以便在預(yù)定的執(zhí)行介質(zhì)中執(zhí)行中間語(yǔ)言程序。本發(fā)明的基礎(chǔ)是尋找一種最初是存在于預(yù)定的基于微處理器的數(shù)據(jù)處理裝置的執(zhí)行介質(zhì)中的最小公分母(lowestcommondenominator)的執(zhí)行介質(zhì);例如,所述執(zhí)行介質(zhì)包含于已知的不同類型的智能卡中,就是說其程序是用不同源語(yǔ)言編寫的執(zhí)行介質(zhì)。因此,本發(fā)明提供上面提出的第三解決方案的優(yōu)點(diǎn),建議把所有可能的執(zhí)行介質(zhì)的集合放入一個(gè)基于微處理器的數(shù)據(jù)處理裝置。但是,本發(fā)明不要求相當(dāng)大的或許甚至是不可能達(dá)到的存儲(chǔ)器大小,而只是把最小的、但是靈活的中間語(yǔ)言專用的縮減了的執(zhí)行介質(zhì)裝入每一個(gè)諸如智能卡等的數(shù)據(jù)處理裝置。這樣,中間語(yǔ)言不與任何一種特定的源語(yǔ)言相聯(lián)系,而是用作基礎(chǔ)語(yǔ)言,用以作為若干源語(yǔ)言的目標(biāo)。于是安裝中間語(yǔ)言所需的存儲(chǔ)器縮小了,因而程序的執(zhí)行比上面建議的第三解決方案快。這樣,本發(fā)明使用以下的組合-既能夠表達(dá)用不同源語(yǔ)言編寫的程序,又能夠表達(dá)特定的保密特點(diǎn)的中間語(yǔ)言以及它們的正確操作所必需的程序庫(kù),和-專用于中間語(yǔ)言的執(zhí)行介質(zhì),但它能夠重新配置,以便既在工作環(huán)境上又在應(yīng)用程序的安全檢查上最好地適應(yīng)每一種語(yǔ)言的要求。按照本發(fā)明的一個(gè)變型,編譯步驟可以包括以下步驟-用相應(yīng)的執(zhí)行介質(zhì)專用的機(jī)器語(yǔ)言把程序編譯成編譯后的程序,以及-把編譯后的程序轉(zhuǎn)換成以中間語(yǔ)言表達(dá)的相應(yīng)的程序。從程序編譯結(jié)果產(chǎn)生中間語(yǔ)言的代碼的程序開發(fā)者可能對(duì)這個(gè)變型感興趣。允許進(jìn)行這一操作的工具是轉(zhuǎn)換器。它用中間語(yǔ)言寫的操作代替與所述源語(yǔ)言相關(guān)的相應(yīng)的執(zhí)行介質(zhì)的指令。按照本發(fā)明的另一個(gè)方面,所述方法包括在裝入步驟之前從相應(yīng)的中間語(yǔ)言程序提取校驗(yàn)信息的步驟和在裝入步驟之后在預(yù)定的執(zhí)行介質(zhì)中檢驗(yàn)所提取的驗(yàn)證信息的步驟。按照另一個(gè)變型,預(yù)定的執(zhí)行介質(zhì)可以類似于所述各執(zhí)行介質(zhì)中的一個(gè)。盡管總起來說不如本發(fā)明的基本實(shí)施例有利,但是當(dāng)源語(yǔ)言是已經(jīng)進(jìn)行了類似的開發(fā)和改變過程的語(yǔ)言時(shí),這個(gè)變型可能令人感興趣。中間語(yǔ)言最好是可擴(kuò)展的,而同時(shí)預(yù)定的執(zhí)行介質(zhì)最好是可擴(kuò)展的或不可擴(kuò)展的。源語(yǔ)言和中間語(yǔ)言之中最好至少有一種是面向?qū)ο蟮恼Z(yǔ)言。實(shí)際上,所述方法可以包括由服務(wù)器讀出預(yù)定的執(zhí)行介質(zhì)的特性的步驟,然后所述服務(wù)器執(zhí)行所述編譯步驟。數(shù)據(jù)處理裝置可以是例如智能卡。該智能卡可以是包括在移動(dòng)無線電話終端中的用戶身份卡。按照本發(fā)明的最佳實(shí)施例,轉(zhuǎn)移方法旨在使分別用各自的源語(yǔ)言LSn編寫的任何一個(gè)任意的程序Pn轉(zhuǎn)移到按照本發(fā)明的包含于諸如下面定義的“通用”可編程智能卡CU等相應(yīng)的數(shù)據(jù)處理裝置中的通用執(zhí)行介質(zhì)SEU。如圖5左側(cè)所示,在開發(fā)和提供用相應(yīng)的源語(yǔ)言LSn(n在1和N之間)寫成的程序Pn的E0的初始步驟之后,轉(zhuǎn)移方法基本上包括四個(gè)步驟E1至E4。程序P1至PN是在與包含卡CU的終端TE通過遠(yuǎn)程通信網(wǎng)絡(luò)RES連接的服務(wù)器SER中開發(fā)的。例如,所述終端TE可以是用網(wǎng)絡(luò)RES租賃的線路或?qū)>€連接到所述服務(wù)器的銀行終端;按照另一個(gè)例子,例如,終端TE可以是用數(shù)字蜂窩無線電話網(wǎng)絡(luò)RES連接到服務(wù)器SER的GSM型移動(dòng)無線電話終端,所述服務(wù)器通過無線電話網(wǎng)絡(luò)的信令網(wǎng)絡(luò)連接到移動(dòng)業(yè)務(wù)交換中心(MSC),而卡CU是可以從所述終端TE取出的SIM(用戶身份模塊)類型的用戶身份卡。在步驟E1,服務(wù)器SER詢問卡CU中的執(zhí)行介質(zhì)SEU,以便從中讀出并記錄已經(jīng)存在的執(zhí)行介質(zhì)特征。然后把用源語(yǔ)言LSn寫的程序編譯成用專用于相應(yīng)的目標(biāo)執(zhí)行介質(zhì)SEn的機(jī)器語(yǔ)言表達(dá)的編譯后的程序PCn。執(zhí)行步驟E1的編譯器是一個(gè)安裝在服務(wù)器SER上的程序。然后,在步驟E2,把編譯后的程序PCn轉(zhuǎn)換成按照本發(fā)明的中間語(yǔ)言LI。與編譯器類似,語(yǔ)言轉(zhuǎn)換器是一種在服務(wù)器SER上實(shí)現(xiàn)的并執(zhí)行步驟E2的程序。中間語(yǔ)言LI主要具有以下兩個(gè)性能-可擴(kuò)展性,語(yǔ)言LI可以擴(kuò)展基本命令范圍,以便有效地表達(dá)源于其他語(yǔ)言的程序;-強(qiáng)類型如眾所周知,借助類型實(shí)現(xiàn)的代碼安全機(jī)制乃是可用于安全檢查的最精細(xì)的結(jié)構(gòu);于是每一種語(yǔ)言的保密特點(diǎn)都是根據(jù)卡中存在初始模型而指定的;中間語(yǔ)言LI允許以目標(biāo)語(yǔ)言的類型和類的方式進(jìn)行可擴(kuò)展的類型檢查。中間語(yǔ)言LI只包含數(shù)量非常有限的指令,構(gòu)成表達(dá)不同執(zhí)行介質(zhì)SE1至SEN機(jī)器語(yǔ)言的最小子集。在步驟E2語(yǔ)言轉(zhuǎn)換器使用外加的程序庫(kù),以便避免執(zhí)行系統(tǒng)SEn的每一個(gè)基本操作都要用通用執(zhí)行介質(zhì)SEU的一組指令代替。這種預(yù)防措施減少了裝入卡CU的程序的存儲(chǔ)器容量增大的危險(xiǎn)。圖6表示,按照第一實(shí)例,關(guān)于源語(yǔ)言程序,諸如用面向?qū)ο蟮脑凑Z(yǔ)言JAVA表達(dá)的代碼段PJ的步驟E1和E2涉及在所述卡中接收由服務(wù)器SER發(fā)送的消息。步驟E1以傳統(tǒng)方式完成把代碼段PJ編譯成采取稱作偽代碼(字節(jié)碼)格式的能在執(zhí)行介質(zhì)SEJ,亦即實(shí)現(xiàn)了JAVA虛擬機(jī)概念的微型計(jì)算機(jī)上執(zhí)行的編譯后的二進(jìn)制程序PJC。傳統(tǒng)上,JAVA語(yǔ)言中的每一條指令產(chǎn)生若干條虛擬機(jī)器語(yǔ)言指令行。然后,在步驟E2,所述轉(zhuǎn)換機(jī)制不限于用中間語(yǔ)言LI的偽代碼替換JAVA偽代碼的指令對(duì)指令的替換,而是把編譯后的程序PCJ中的基本操作的序列轉(zhuǎn)變成不同的中間語(yǔ)言序列PJLI,例如確定功能調(diào)用變?cè)?。由于這種轉(zhuǎn)換是在卡CU以外完成的,便可安裝在編譯器中使用的優(yōu)化和變換技術(shù)。步驟E2的轉(zhuǎn)換保證了發(fā)送給所述卡的以語(yǔ)言LI表達(dá)的代碼的有效性,而不管所使用的是什么源語(yǔ)言。另外,語(yǔ)言轉(zhuǎn)換有助于產(chǎn)生一種要素,后者提供所述卡CU用來檢查程序生存能力的語(yǔ)言LI的正確操作;在步驟E2結(jié)束時(shí),語(yǔ)言轉(zhuǎn)換器提供對(duì)所述卡校驗(yàn)程序生存能力有用的類型信息。按照第二實(shí)例,就像圖6表示JAVA語(yǔ)言代碼段PJ一樣,圖7表示用C語(yǔ)言表達(dá)并與工作數(shù)組的聲明對(duì)應(yīng)的代碼段PC。以傳統(tǒng)方式編譯準(zhǔn)備專用于機(jī)器語(yǔ)言的執(zhí)行介質(zhì)用的能夠執(zhí)行C語(yǔ)言程序的程序段PC的編譯步驟E1之后,步驟E2把相應(yīng)的機(jī)器語(yǔ)言段轉(zhuǎn)換成用中間語(yǔ)言LI表達(dá)的序列PCLI。在中間語(yǔ)言LI中,除在初始源語(yǔ)言所特有的序列的結(jié)束處產(chǎn)生例外之外,序列PCLI與序列PJLI相同它們包括同樣的變量和常數(shù),以及以同樣的方式表達(dá)的命令和操作。因而按照本發(fā)明的中間語(yǔ)言LI是可以適配的。按照?qǐng)D6和7所示的實(shí)例任何操作和命令都以施加給對(duì)象的消息的形式表達(dá)。就已知的面向?qū)ο蟮恼Z(yǔ)言而論,以中間語(yǔ)言表達(dá)的新消息可以在任何時(shí)間定義。圖5表示第一實(shí)施例的第二變型,上右部虛線舉例說明的,例如涉及最初以源語(yǔ)言LSN表達(dá)的程序PN的產(chǎn)生。對(duì)于這第二變型,編譯和轉(zhuǎn)換步驟E1和E2用編譯步驟E12代替,后者把用源語(yǔ)言LSN寫成的程序PN編譯成直接用中間語(yǔ)言LI表達(dá)的編譯后的程序,接著在步驟E3對(duì)它進(jìn)行校驗(yàn)并裝入智能卡CU。按照?qǐng)D7所示的實(shí)例,步驟E12直接把C語(yǔ)言程序段PC編譯成語(yǔ)言LI的序列PCLI。接著,回到圖5中的步驟E3,用中間語(yǔ)言LI表達(dá)的程序后跟校驗(yàn)和裝入鏈CVC,對(duì)其進(jìn)行校驗(yàn)并將其裝入目標(biāo)智能卡CU。鏈CVC至少部分地,最好完全地裝入卡CU。鏈CVC的其他部分主要涉及中間語(yǔ)言程序執(zhí)行的動(dòng)態(tài)校驗(yàn)并且或者被裝入服務(wù)器SER或者被裝入接收所述卡的終端TE。在步驟E3中卡CU內(nèi)的校驗(yàn)和/或適配機(jī)制把卡中接收的并用中間語(yǔ)言表達(dá)的代碼變換成可以直接在執(zhí)行介質(zhì)中執(zhí)行的二進(jìn)制程序形式。中間語(yǔ)言程序用的有效信息,主要有關(guān)安全性、類型和容器(containment),可以從程序提取,并在步驟E3期間在終端TE上建立,并在所述程序裝入所述卡后用卡進(jìn)行校驗(yàn)。若校驗(yàn)失敗,則程序無效。按照子問題SP2,這種校驗(yàn)提供應(yīng)用所述程序的環(huán)境的有效性。在步驟E3中裝入后即進(jìn)行的校驗(yàn)可以是最小的,并縮減為對(duì)智能卡執(zhí)行介質(zhì)特有的鏈接編輯機(jī)制。步驟E3的目的是在卡內(nèi)就地完成在步驟E1和E2或步驟E12中完成的工作。校驗(yàn)和/或適配機(jī)制完全轉(zhuǎn)換所接收的代碼,并將其變換成可以由所述卡中的通用執(zhí)行介質(zhì)SEU執(zhí)行的程序。這種轉(zhuǎn)換的目的是通過對(duì)其靜態(tài)地進(jìn)行安全檢查,使代碼更有效,安全檢查在動(dòng)態(tài)執(zhí)行時(shí)大大地延長(zhǎng)了程序的執(zhí)行時(shí)間。實(shí)際上,嵌入卡CU中的板上適配機(jī)制可以進(jìn)行大量的工作,后者建立一個(gè)可以直接在執(zhí)行介質(zhì)SEU中,亦即在存在于所述卡上的微處理器中執(zhí)行的程序。圖8舉例說明在步驟E3由適配機(jī)制從類似于序列PJLI,PCLI的中間語(yǔ)言序列LI完成的處理的一個(gè)實(shí)例,以便提供適配后的序列PAD。在步驟E4,中間語(yǔ)言LI程序安裝在準(zhǔn)備直接支持中間語(yǔ)言LI的卡CU內(nèi)。所述卡CU具有特定的適配機(jī)制。智能卡CU是可編程的,亦即在其整個(gè)生存期間都接收程序,并包含專用于中間語(yǔ)言LI的執(zhí)行介質(zhì)SEU。于是,用不同源語(yǔ)言LS1至LSN編寫的程序P1至PN共存于同一卡CU內(nèi),所述卡不特定地專用于源語(yǔ)言LS1至LSN之一,但它可以容納以不同的源語(yǔ)言編寫的不同程序,這解決了子問題SP2。通用執(zhí)行介質(zhì)SEU只包含初始程序P1至PN的執(zhí)行介質(zhì)SE1至SEN有限的子集。步驟E3在裝入用中間語(yǔ)言LI編寫的每一個(gè)程序的同時(shí)裝入程序庫(kù),以便在步驟E4把源語(yǔ)言LSn適配于中間語(yǔ)言,并從而執(zhí)行用中間語(yǔ)言寫成的初始程序Pn。中間語(yǔ)言特有的保密特點(diǎn)被表明(areimport)“超過”存在于通用執(zhí)行介質(zhì)SEU的保密特點(diǎn)。所述卡CU中通用執(zhí)行介質(zhì)SEU的體系結(jié)構(gòu)考慮到這方面,以便給所容納的程序提供在存儲(chǔ)器大小和執(zhí)行速度上有效的環(huán)境,而同時(shí)保留保密特點(diǎn),這解決了子問題SP3。置于卡中并支持中間語(yǔ)言LI的執(zhí)行的通用執(zhí)行介質(zhì)SEU是-可適合于接收每一種所支持的新源語(yǔ)言用的程序庫(kù),以便在其軟件環(huán)境下執(zhí)行最初用新的語(yǔ)言編寫的程序;-在以下兩方面是可靠的通過檢查程序所處理的類型來支持安全機(jī)制以及在裝入新程序庫(kù)時(shí)接收新類型的定義以便描述相關(guān)的安全機(jī)制。在步驟E4,先進(jìn)的程序解釋機(jī)制涉及執(zhí)行介質(zhì)本身。軟件和/或硬件執(zhí)行介質(zhì)SEU用作每一個(gè)可執(zhí)行程序的產(chǎn)生目標(biāo),以便響應(yīng)對(duì)子問題SP2和SP3的關(guān)心。執(zhí)行介質(zhì)SEU最好包括不同于它最初所用的一組指令。這個(gè)功能使之能夠絕對(duì)地完全重新定義通用執(zhí)行介質(zhì)SEU,使之能夠直接解釋源自特定語(yǔ)言的代碼。步驟E4所瞄準(zhǔn)的擴(kuò)展機(jī)制有利于,例如源自給定語(yǔ)言的代碼部分,并使其可能專門安裝定義不同于卡CU最初的通用執(zhí)行介質(zhì)SEU所提供的語(yǔ)義的操作。擴(kuò)展機(jī)制涉及,例如訪問數(shù)組的基本指令在越出數(shù)組界限時(shí)在JAVA語(yǔ)言中會(huì)引起例外,而在中間語(yǔ)言LI最初的裝置中所述基本指令可以訪問所述數(shù)組的任何位置。一個(gè)簡(jiǎn)單的解決辦法是如圖9所示,把JAVA語(yǔ)言訪問數(shù)組的操作OPJ轉(zhuǎn)換成中間語(yǔ)言LI的一個(gè)操作序列,對(duì)后者不擴(kuò)展。為了避免這樣不必要地?cái)U(kuò)大代碼(這在卡上是不希望有的),如圖10中操作序列OPLIb第7至10行所示,在執(zhí)行介質(zhì)SEU中定義一個(gè)基本指令,它完全實(shí)現(xiàn)對(duì)JAVA偽代碼(字節(jié)代碼)的等效語(yǔ)義。按照本發(fā)明的一個(gè)變型,步驟E3和E4用圖5右側(cè)所示的步驟E3d和E4d代替。這個(gè)實(shí)施例的目的是使執(zhí)行介質(zhì)SES特定化為具有已知的硬件,而且若有必要,具有類似于專用于源語(yǔ)言LS1至LSN的初始執(zhí)行介質(zhì)SE1至SEN中的一個(gè)的軟件的體系結(jié)構(gòu)。在步驟E3d,校驗(yàn)和裝入鏈CVCd通過優(yōu)化機(jī)制OPT加以擴(kuò)展,后者產(chǎn)生在卡外是最優(yōu)的有效的本來的最終碼。最好放松安全約束,因?yàn)槌绦蚴且粍谟酪轂樘囟ǖ闹悄芸–S產(chǎn)生的,并通過已知的工業(yè)部門的可靠性檢查。圖11表示步驟E3d在中間語(yǔ)言LI序列PCLId之間適配為適配后的序列PAd。在步驟E4d,一組程序庫(kù)BPn,BPdn由執(zhí)行介質(zhì)SES執(zhí)行,使源自用源語(yǔ)言LSn寫成的程序Pn的程序在其環(huán)境下運(yùn)行。按照這個(gè)變型的執(zhí)行介質(zhì)SES要求實(shí)現(xiàn)M個(gè)校驗(yàn)和裝入鏈,并因此有新語(yǔ)言出現(xiàn)時(shí)要編寫新的鏈CVC。這個(gè)變型與“通用”執(zhí)行介質(zhì)SEU相比不太有利。執(zhí)行介質(zhì)SES仍舊取決于預(yù)定的執(zhí)行介質(zhì)SEn,因而在源語(yǔ)言LSn的程序庫(kù)BPn和原來針對(duì)另一種語(yǔ)言編程的執(zhí)行介質(zhì)SES所希望有的程序庫(kù)之間的不適當(dāng)性要求較大的存儲(chǔ)容量,從而導(dǎo)致較低的效率。權(quán)利要求1.一種把用各自執(zhí)行載體(SE1至SEN)面向的源語(yǔ)言(LS1至LSN)分別編寫的若干個(gè)程序(P1至PN)轉(zhuǎn)移到一種數(shù)據(jù)處理裝置的方法,其特征在于包括以下步驟-把每一個(gè)程序(Pn)編譯(E1,E2;E12)成用代表所述源語(yǔ)言的最小子集的中間語(yǔ)言(LI)表達(dá)的各個(gè)程序;-在所述數(shù)據(jù)處理裝置(CU;CS)中提供(E4)為所述中間語(yǔ)言所專用的預(yù)定的執(zhí)行載體(SEU;SES),以及-把所述各中間語(yǔ)言程序裝入(E3)設(shè)有使所述各源語(yǔ)言(LSn)適配于所述中間語(yǔ)言(LI)的各自的程序庫(kù)(BPn)的所述數(shù)據(jù)處理裝置中,以便在所述預(yù)定的執(zhí)行載體(SEU;SES)中執(zhí)行所述中間語(yǔ)言程序。2.如權(quán)利要求1中所述的方法,其特征在于所述編譯步驟包括以下步驟-用所述各執(zhí)行載體(SEn)面向的機(jī)器語(yǔ)言把所述程序(Pn)編譯成已編譯程序(PCn),以及-把所述已編譯程序(PCn)轉(zhuǎn)換(E2)成以所述中間語(yǔ)言(LI)表達(dá)的各自的程序。3.如權(quán)利要求1或2中所述的方法,其特征在于它還包括在所述裝入步驟(E3)之前從所述各自的中間語(yǔ)言(LI)程序提取驗(yàn)證信息的步驟,以及在所述裝入步驟之后在所述預(yù)定的執(zhí)行載體(SEU;SES)中檢驗(yàn)所述提取的驗(yàn)證信息的步驟(E3)。4.如權(quán)利要求1至3中任何一項(xiàng)所述的方法,其特征在于所述預(yù)定的執(zhí)行載體(SES)類似于所述執(zhí)行載體(SE1至SEN)中的一種。5.如權(quán)利要求1至4中任何一項(xiàng)所述的方法,其特征在于它包括由服務(wù)器(SER)讀出預(yù)定的執(zhí)行載體(SEU;SES)的特性,然后執(zhí)行編譯步驟(E1,E2;E12)的步驟。6.如權(quán)利要求1至5中任何一項(xiàng)所述的方法,其特征在于所述數(shù)據(jù)處理裝置是一種智能卡(CU,CS)。7.如權(quán)利要求6中所述的方法,其特征在于所述智能卡是包括在移動(dòng)無線電話終端(TE)中的用戶身份卡。全文摘要本發(fā)明在單一執(zhí)行介質(zhì)中自動(dòng)執(zhí)行若干個(gè)用相應(yīng)的執(zhí)行介質(zhì)專用的源語(yǔ)言編寫的程序,而不把程序員局限于用于相應(yīng)的執(zhí)行介質(zhì)類型的單一的源語(yǔ)言。每一個(gè)程序都編譯成用代表這些源語(yǔ)言的最小子集的中間語(yǔ)言表達(dá)的程序。在諸如智能卡等數(shù)據(jù)處理裝置中,執(zhí)行介質(zhì)是專用于中間語(yǔ)言的。中間語(yǔ)言程序裝入相應(yīng)的程序庫(kù),所述程序庫(kù)使各源語(yǔ)言適用于所述中間語(yǔ)言,以便在所述執(zhí)行介質(zhì)中執(zhí)行中間語(yǔ)言程序。文檔編號(hào)G06F9/45GK1367895SQ0081122公開日2002年9月4日申請(qǐng)日期2000年6月2日優(yōu)先權(quán)日1999年6月4日發(fā)明者G·格里毛德,J·-J·范德瓦勒申請(qǐng)人:格姆普拉斯公司