欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

語言子集證實(shí)的制作方法

文檔序號:6631720閱讀:169來源:國知局

專利名稱::語言子集證實(shí)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及計(jì)算機(jī)系統(tǒng)。更具體地說,本發(fā)明涉及語言子集證實(shí)(languagesubsetvalidation)。
背景技術(shù)
:面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)(例如JavaTM平臺中使用的技術(shù))得到了廣泛的應(yīng)用。面向?qū)ο蟮某绦虻幕締挝皇蔷哂蟹椒?過程)和域(數(shù)據(jù))的對象,此處稱為“成員”。具有共享成員的對象被分組為“類”。“類”定義了這類中的對象的共享成員。每個對象還是其所屬類中的一個特別的“實(shí)例”。實(shí)際上,類經(jīng)常被用作“模板”來產(chǎn)生具有相似特性的多重對象(多重實(shí)例)。類的一個特性是“封裝”,封裝說明了類的這樣一個特性,即除了通過界面暴露出來的以外,類內(nèi)的成員的實(shí)際執(zhí)行對于外部使用者和其他類而言是隱藏的。這個特性使類很適合于分散式開發(fā),例如由不同的開發(fā)者在網(wǎng)絡(luò)上的不同地點(diǎn)上進(jìn)行開發(fā)。通過將需要的類進(jìn)行匯編、連接并執(zhí)行得到的程序,就可以完成整個編程。類具有“繼承”的特性。繼承是一種機(jī)制,其使一個類可以繼承另一個類的全部成員。繼承其他類的類稱作子類,提供屬性的類稱作超類(superclass)。象征性地,這可以表示為子類<=超類,或者超類=>子類。子類可以通過增加附加成員擴(kuò)展超類的能力。子類可以通過提供具有相同名稱和類型的替代方法取代超類的虛擬方法。類的類型成員是指域和方法,它們包括從超類繼承而來的成員。類文件還可以對超類命名。成員可以是公用的,即它可以被包括其說明的類的成員所使用。成員也可以是專用的。類的專用域只在類內(nèi)定義的方法中是可見的。類似地,專用方法只能由類內(nèi)的方法調(diào)用。專用成員在子類內(nèi)是不可見的,而且不像其他成員那樣被子類繼承。成員還可以是受保護(hù)的。界面類型是其成員為常量和抽象方法的類型。這種類型不具有實(shí)現(xiàn)工具,但是否則無關(guān)的類可以通過為其抽象方法提供實(shí)現(xiàn)工具而執(zhí)行。界面可能具有子界面,就像類具有子類一樣。子界面從其超界面(superinterface)繼承,并同樣定義新的方法和常量。另外,界面可以在某一時間擴(kuò)展為多個界面。一個擴(kuò)展為多個界面的界面從各個界面中繼承所有的抽象方法和常量,并定義其自身的其它方法和常量。在JavaTM編程語言中,類可以分組并且組可以命名,被命名的類的分組是程序包。如果類成員沒有說明具有任何公用、專用或者保護(hù)密碼,則它只在對其進(jìn)行定義的類內(nèi)或者在屬于相同程序包的一部分的類內(nèi)是可見的。說明類的成員或者來自其被說明的程序包中的成員可以使用保護(hù)成員。在Addison-WseleyLongman,Inc于1996年8月出版的Gosling等人編著的“TheJavaTMLanguageSpecification”中詳細(xì)介紹了JavaTM編程語言。虛擬機(jī)是一種由處理器執(zhí)行的軟件應(yīng)用或者指令序列所產(chǎn)生的抽象計(jì)算機(jī)器?!绑w系結(jié)構(gòu)中立性”指能夠由虛擬機(jī)在具有多種計(jì)算機(jī)體系結(jié)構(gòu)的多種計(jì)算機(jī)平臺上執(zhí)行的程序,例如JavaTM編程語言中所寫的那些一樣。因此,例如在基于WindowsTM的個人計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)的虛擬機(jī)將與在基于UNIXTM的計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)的虛擬機(jī)使用同一套指令執(zhí)行應(yīng)用程序。虛擬機(jī)指令序列的不依靠平臺的編碼結(jié)果是一個或多個字節(jié)碼的流,例如每個字節(jié)碼是一個字節(jié)長的數(shù)字代碼。JavaTM虛擬機(jī)是虛擬機(jī)的一個例子。由JavaTM虛擬機(jī)執(zhí)行的編譯代碼通過使用硬件和不依靠操作系統(tǒng)的二進(jìn)制格式表示,這種二進(jìn)制格式通常存儲于文件中,稱為類文件格式。類文件被設(shè)計(jì)用來操作面向?qū)ο蟮慕Y(jié)構(gòu),這種結(jié)構(gòu)可以表示用JavaTM編程語言寫的程序,但還可以支持其他幾種編程語言。類文件格式精確地定義類或者界面的表示法,包括一些細(xì)節(jié),例如在平臺確定的目標(biāo)文件格式中理所當(dāng)然的字節(jié)次序。為了安全的目的,JavaTM虛擬機(jī)對類文件中的指令采用了嚴(yán)格的格式和結(jié)構(gòu)限制。任何能按照有效類文件表達(dá)的具有功能性的語言都可以把Java虛擬機(jī)作為主機(jī)。類文件被設(shè)計(jì)用來操作面向?qū)ο蟮慕Y(jié)構(gòu),這種結(jié)構(gòu)可以表示用JavaTM編程語言寫的程序,但還可以支持其他幾種編程語言。在Addison-WseleyLongman,Inc于1996年8月再版出版的Lindholm等人編著的“TheJavaTMVirtualMachineSpecification”中詳細(xì)介紹了JavaTM虛擬機(jī)。與典型的臺式計(jì)算機(jī)或者類似設(shè)備相比,資源受限設(shè)備(resource-constraineddevice)通常被認(rèn)為是那些在存儲和/或計(jì)算能力或速度上受到相對限制的設(shè)備。例如,其他資源受限設(shè)備包括移動電話、邊界掃描設(shè)備、現(xiàn)場可編程設(shè)備、個人數(shù)字助理(PDA)和尋呼機(jī)以及其他微型或者小體積設(shè)備。本發(fā)明還可以用于非資源受限的設(shè)備(non-resourceconstraineddevice)。為了進(jìn)行說明,術(shù)語“處理器”還用以指實(shí)體計(jì)算機(jī)或者虛擬機(jī)。智能卡是資源受限設(shè)備的其中一種類型,還被稱為智能化便攜式數(shù)據(jù)攜帶卡。智能卡由塑料或者金屬制成并具有電子芯片,電子芯片包括用于執(zhí)行程序的嵌入式微處理器或者微控制器和用于存儲程序和數(shù)據(jù)的存儲器。這些設(shè)備可能有信用卡大小,具有8位或者16位結(jié)構(gòu)的計(jì)算機(jī)芯片。另外,這些設(shè)備的存儲能力通常有限。例如,某些智能卡的隨機(jī)存儲器(RAM)容量小于1K,只讀存儲器(ROM)和/或非易失性存儲器(例如電可擦除只讀存儲器(EEPROM))容量也有限。JavaTM虛擬機(jī)執(zhí)行用JavaTM編程語言書寫的程序,并被設(shè)計(jì)用于存儲容量相對較大的臺式計(jì)算機(jī)。很希望能夠利用JavaCardTM虛擬機(jī)的全部實(shí)現(xiàn)工具書寫程序并在資源受限設(shè)備(例如智能卡)上執(zhí)行。但是,由于資源受限設(shè)備(例如智能卡)的結(jié)構(gòu)和存儲有限,不能在這種設(shè)備上使用全部的Java虛擬機(jī)平臺實(shí)現(xiàn)工具。因此,獨(dú)立的JavaCardTM(支持JavaTM編程語言的智能卡)技術(shù)支持用于資源受限設(shè)備的JavaTM編程語言的子集。某些JavaTM技術(shù)所支持的項(xiàng)在JavaCardTM技術(shù)中卻不受到支持。例如,JavaTM技術(shù)支持字符型、雙精度型、浮點(diǎn)型和長型,但JavaCardTM技術(shù)卻不支持。另外,某些JavaTM語言特性在有限的方式下受到支持。JavaCardTM技術(shù)在限制這些特性的作用方面并不遜于JavaTM技術(shù)。例如,JavaTM技術(shù)允許具有超過一維的數(shù)組,而JavaCardTM技術(shù)只允許具有一維數(shù)組。在JavaCardTM技術(shù)中,JavaCardTM轉(zhuǎn)換器把正常類文件作為輸入,并把它們轉(zhuǎn)換為CAP(轉(zhuǎn)換的小應(yīng)用程序)文件。CAP格式支持類文件信息的子集。每個CAP文件包括在一個JavaTM程序包中所定義的所有的類和界面。CAP文件具有壓縮格式和優(yōu)化格式,以使JavaTM程序包可以在資源受限設(shè)備上有效地存儲和執(zhí)行。轉(zhuǎn)換之后,CAP文件被安裝在允許使用JavaCardTM技術(shù)的設(shè)備上。用于JavaCardTM技術(shù)的JavaTM語言子集的出現(xiàn),意味著可以產(chǎn)生出包括不被JavaCardTM子集支持的項(xiàng)的有效JavaTM程序模塊。在資源受限設(shè)備上執(zhí)行這些程序模塊可能產(chǎn)生錯誤結(jié)果。因此現(xiàn)有技術(shù)需要有一種方法和裝置用于語言子集證實(shí),以方便于在資源受限設(shè)備上正確執(zhí)行應(yīng)用程序。發(fā)明簡述一種語言子集證實(shí)方法,包括證實(shí)多個包括程序的程序模塊,每個程序模塊包括為第一計(jì)算機(jī)語言定義的多個字節(jié)碼,所述第一計(jì)算機(jī)語言是第二計(jì)算機(jī)語言的硬件相關(guān)的子集。證實(shí)包括對于沒有在所述第一計(jì)算機(jī)語言中定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)(errorcondition);對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于雖在所述第一計(jì)算機(jī)語言中定義但使用方式與該第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)。一種用于語言子集證實(shí)的裝置,包括一個具有程序指令的存儲器和至少一個處理器,處理器被設(shè)定使用程序指令證實(shí)多個程序模塊,這些模塊一起構(gòu)成程序。處理器還被設(shè)定使用程序指令對于沒有在所述第一計(jì)算機(jī)語言中定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于雖然在所述第一計(jì)算機(jī)語言中定義但是使用方式與該第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)。附圖簡述圖1A為一個方框圖,說明了在源級上語言與語言子集之間的關(guān)系;圖1B為一個方框圖,說明了在類文件級上語言與語言子集之間的關(guān)系;圖2是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行語言子集證實(shí)的方法;圖3是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行靜態(tài)證實(shí)的方法;圖4A是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對方法進(jìn)行靜態(tài)證實(shí)的方法;圖4B是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對方法字節(jié)碼進(jìn)行靜態(tài)證實(shí)的方法;圖5是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對域進(jìn)行靜態(tài)證實(shí)的方法;圖6是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行基于方法的證實(shí)的方法;圖7是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行基于程序包的證實(shí)的方法;圖8是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例在程序包中對方法的證實(shí);圖9A是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例在程序包中對類的證實(shí);圖9B為一個方框圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對實(shí)現(xiàn)的界面數(shù)量的計(jì)算;圖9C為一個方框圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對繼承界面數(shù)量的計(jì)算;圖10A是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例證實(shí)類存取控制;圖10B是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例確定程序包缺省方法是否被處理成為公共方法或者保護(hù)方法;圖11是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例證實(shí)程序包缺陷;圖12是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行基于卡的證實(shí)。具體實(shí)施方案詳述本領(lǐng)域普通技術(shù)人員將認(rèn)識到下面對本發(fā)明的描述只起到說明性作用。受益于本說明的本領(lǐng)域技術(shù)人員將會很容易地理解本發(fā)明的其它實(shí)施例。本發(fā)明涉及計(jì)算機(jī)系統(tǒng),尤其涉及語言子集證實(shí)。本發(fā)明進(jìn)一步涉及機(jī)器可讀介質(zhì),其上存儲了(1)本發(fā)明的設(shè)計(jì)參數(shù)和/或(2)使用了本發(fā)明在計(jì)算機(jī)上實(shí)現(xiàn)操作所用的程序指令。舉例來說,這樣的介質(zhì)包括磁帶、磁盤、光學(xué)可讀介質(zhì)(例如CDROM)和半導(dǎo)體存儲器(例如PCMCIA卡)。介質(zhì)還可能呈現(xiàn)便攜式產(chǎn)品的形式,例如小磁盤、磁盤或者磁帶。介質(zhì)還可能呈現(xiàn)體積較大或固定產(chǎn)品的形式,例如硬盤驅(qū)動器或者計(jì)算機(jī)隨機(jī)RAM。圖1A和圖1B說明了在高級程序語言源級和類文件級上語言與語言子集特性之間的關(guān)系。請參看圖1A,圖1A為一個方框圖,說明了在語言源級上語言與語言子集之間的關(guān)系。JavaCardTM技術(shù)支持JavaTM語言的一個子集,該子集以數(shù)字100表示。對于某些所支持的JavaTM語言特性,JavaCardTM技術(shù)還限制其操作范圍,該JavaTM語言特性以數(shù)字102表示。此外,特別的JavaCardTM虛擬機(jī)還有選擇地支持某些JavaTM語言特性,圖中這些選擇特性用數(shù)字104表示。JavaTM技術(shù)支持而JavaCardTM技術(shù)不支持的特性用數(shù)字106表示?,F(xiàn)在請參看圖1B,圖1B是一個方框圖,說明了在類文件級上語言與語言子集之間的關(guān)系。JavaCardTM技術(shù)支持JavaTM類文件中所含信息的子集,圖中用數(shù)字110表示。JavaCardTM技術(shù)對于某些所支持的JavaTM語言特性還限制其操作范圍,并且這些限制能夠在類文件級得到校驗(yàn),圖中用數(shù)字112表示。此外,特別的JavaCardTM虛擬機(jī)還選擇性地支持某些JavaTM特性,這些特性能夠在類文件級得到校驗(yàn)。圖中這些選擇性特性用數(shù)字114表示。JavaTM技術(shù)支持而JavaCardTM技術(shù)不支持的特性也可能在類文件級得到校驗(yàn),圖中用數(shù)字116表示。因此,圖1B表明,在源級所支持的語言特性與類文件級所支持的語言特性之間存在直接聯(lián)系。此外,通過在類文件級進(jìn)行校驗(yàn),有可能確定在高級程序語言源級書寫的程序是否使用未被JavaCard技術(shù)定義的特性。根據(jù)本發(fā)明,采用語言子集的系統(tǒng)中指令級程序文件與語言子集相對進(jìn)行證實(shí)。不受支持的項(xiàng)被檢測出來,在限制方式中受到支持的項(xiàng)被校驗(yàn),以確定它們是否被正確使用。另外,校驗(yàn)特別的執(zhí)行環(huán)境,以確定其是否支持選擇特性。如果執(zhí)行環(huán)境支持選擇特性,指令級程序文件被校驗(yàn),以確定選擇特性是否得到正確使用。如果執(zhí)行環(huán)境不支持選擇特性,指令級程序文件被校驗(yàn),以確定是否使用了不受支持的選擇特性。在多個階段都完成這個過程,提供了相對完全的證實(shí)。在本說明中,本發(fā)明是對于JavaTM技術(shù)和JavaCardTM技術(shù)進(jìn)行說明。但是,本領(lǐng)域普通技術(shù)人員將會認(rèn)識到,本發(fā)明對于其他平臺也同樣適用。而且,本領(lǐng)域普通技術(shù)人員還將會認(rèn)識到,本發(fā)明也同樣適用于不同類型的語言子集證實(shí)。現(xiàn)在請參看圖2,圖2說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行語言子集證實(shí)的方法。在附圖標(biāo)記130中進(jìn)行靜態(tài)證實(shí)。為了進(jìn)行說明,術(shù)語“靜態(tài)證實(shí)”指可以通過僅僅通過檢查類文件就能實(shí)現(xiàn)的證實(shí),不涉及其它的程序單元或者程序執(zhí)行狀態(tài)。在靜態(tài)證實(shí)中,未得到支持的特性受到檢測。另外,選擇性特性被證實(shí)。在附圖標(biāo)記135中進(jìn)行基于方法的證實(shí)。在基于方法的證實(shí)中,在方法中對指令進(jìn)行數(shù)據(jù)流分析,以校驗(yàn)算術(shù)操作的中間值。這個階段被用于檢測可能的溢出條件。在附圖標(biāo)記140中進(jìn)行基于程序包的證實(shí)。在基于程序包的證實(shí)中,具有有限范圍的不受支持的特性受到檢測。在附圖標(biāo)記145中進(jìn)行基于卡的證實(shí)。在基于卡的證實(shí)中,為所有程序所使用的存儲器總量受到校驗(yàn),以確定程序是否超出目標(biāo)設(shè)備的存儲器限制。現(xiàn)在請參看圖3,圖3是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行靜態(tài)證實(shí)的方法。在附圖標(biāo)記160中接收類文件。在附圖標(biāo)記165中對域進(jìn)行靜態(tài)證實(shí)。在附圖標(biāo)記170中對方法進(jìn)行靜態(tài)證實(shí)。在附圖標(biāo)記175中進(jìn)行校驗(yàn),以確定是否其它的類文件保持有效。如果存在其它類文件,運(yùn)行在附圖標(biāo)記160中繼續(xù)進(jìn)行。這個過程一直進(jìn)行到所有的類文件得到證實(shí)?,F(xiàn)在請參看圖4A,圖4A是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對方法進(jìn)行靜態(tài)證實(shí)的方法。在附圖標(biāo)記190中接收方法。在附圖標(biāo)記192中進(jìn)行校驗(yàn),以確定方法說明是否被語言子集所支持。在JavaCardTM技術(shù)中,參數(shù)類型、返回類型和存取標(biāo)志符受到校驗(yàn),以確定是否有效。例如,JavaTM技術(shù)支持字符串、長型、雙精度型和浮點(diǎn)型,但JavaCardTM技術(shù)卻不支持。另外,JavaTM技術(shù)支持“同步”和“本地”存取標(biāo)志符,但是JavaCardTM技術(shù)卻不支持。如果類型或者存取標(biāo)志符不受支持,則在附圖標(biāo)記194中指示出錯。如果方法聲明被支持,在附圖標(biāo)記196中進(jìn)行校驗(yàn),以證實(shí)特殊的執(zhí)行環(huán)境是否支持選擇特性。在JavaCardTM技術(shù)中,整數(shù)型(int)是選擇特性的例子。特殊的執(zhí)行環(huán)境(JavaCardTM虛擬機(jī))確定選擇項(xiàng)是否被支持。如果執(zhí)行環(huán)境不支持選擇特性,在附圖標(biāo)記198中進(jìn)行校驗(yàn),以確定方法說明是否包括選擇特性。如果方法包括選擇特性,在附圖標(biāo)記194中指示出錯。在附圖標(biāo)記200中方法的字節(jié)碼被證實(shí)。在附圖標(biāo)記202中進(jìn)行校驗(yàn),以確定是否有其它方法等待證實(shí)。如果有其它方法,運(yùn)行在附圖標(biāo)記190中繼續(xù)進(jìn)行。這個過程一直進(jìn)行到類文件中所有的方法得到證實(shí)?,F(xiàn)在請參看圖4B,圖4B是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對方法字節(jié)碼進(jìn)行靜態(tài)證實(shí)的方法。在附圖標(biāo)記210中接收字節(jié)碼。在附圖標(biāo)記212中進(jìn)行關(guān)于字節(jié)碼是否被語言子集所支持的判斷。字節(jié)碼受到校驗(yàn),以確定是否使用了未得到支持的數(shù)據(jù)類型和是否使用了對未得到支持的數(shù)據(jù)類型數(shù)值的操作。字節(jié)碼還受到校驗(yàn),以確定是否使用了未得到支持的特性。例如,在JavaCardTM技術(shù)中不支持線程。關(guān)鍵字“同步的(synchronized)”指示使用監(jiān)督程序使線程同步,此關(guān)鍵字具有特殊的字節(jié)碼表示法。它在字節(jié)碼中的出現(xiàn)指示使用了監(jiān)督程序。如果字節(jié)碼不受支持或者被用于操作未得到支持類型的數(shù)據(jù),在附圖標(biāo)記214中指示出錯。如果字節(jié)碼獲得支持,在附圖標(biāo)記216中進(jìn)行校驗(yàn),確定特殊執(zhí)行環(huán)境是否支持選擇項(xiàng)。如果特殊執(zhí)行環(huán)境不支持選擇項(xiàng),在附圖標(biāo)記218中進(jìn)行校驗(yàn),確定選中的字節(jié)碼是否代表選擇特性。如果選中的字節(jié)碼代表選擇特性,在附圖標(biāo)記214中指示出錯。在附圖標(biāo)記220中進(jìn)行校驗(yàn),確定方法中是否保留有更多的字節(jié)碼。如果其中保留有更多的字節(jié)碼,運(yùn)行在附圖標(biāo)記210中繼續(xù)執(zhí)行。這個過程一直進(jìn)行到方法中所有的字節(jié)碼得到校驗(yàn)?,F(xiàn)在請參看圖5,圖5是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對域進(jìn)行靜態(tài)證實(shí)的方法。對域的靜態(tài)證實(shí)按照與對方法的靜態(tài)證實(shí)相同的方式進(jìn)行。在JavaCardTM技術(shù)中,無效存取標(biāo)志符包括例如“易失的”或者“暫態(tài)的”。如果域說明使用未得到支持的類型和存取標(biāo)志符,則指示出錯。如果域聲明使用選擇特性,例如在JavaCardTM技術(shù)中使用整數(shù)類型,不被執(zhí)行環(huán)境支持,則也指示出錯。JavaTM虛擬機(jī)指令集定義了指令集以操作整數(shù)類型字節(jié)、短型和整數(shù)型的值。類型字節(jié)和短型的變量在編譯過程中被擴(kuò)展至整數(shù)型。因此,被計(jì)算的值也是32位整數(shù)數(shù)值。但是,JavaCardTM虛擬機(jī)除了具有指令集以操作整數(shù)類型字節(jié)的值之外,還具有單獨(dú)的指令集以操作類型字節(jié)和短型變量。在JavaCardTM平臺上對32位整數(shù)型的支持是任選的。不支持32位整數(shù)型的目標(biāo)平臺不能使用32位整數(shù)型變量。并且,JavaTM類文件中使用的32位算法字節(jié)碼必須轉(zhuǎn)換為用于JavaCardTM指令集的16位指令。因此,由16位指令進(jìn)行計(jì)算的值是16位整數(shù)值。這種轉(zhuǎn)換將產(chǎn)生溢出的可能性,超出16位表示法。如果有可能溢出的值被輸入至容易發(fā)生溢出的指令中,或者如果可能溢出的值被用作數(shù)組索引,就可能發(fā)生錯誤結(jié)果。確定是否存在溢出的可能性包括產(chǎn)生數(shù)據(jù)流。確定何時存在溢出的可能性的方法的細(xì)節(jié)在1999年11月15日由Chen和Schwabe提交的美國專利申請中有詳細(xì)介紹,該申請名稱是“OptimizationofN-BaseTypedArithmeticExpressions”。為避免困惑,本說明中不另作討論?,F(xiàn)在請參看圖6,圖6是一個流程圖,說明根據(jù)本發(fā)明的一個實(shí)施例而進(jìn)行的基于方法的證實(shí)。在基于方法的證實(shí)中,對方法進(jìn)行分析,以確定是否存在可能的溢出條件。在附圖標(biāo)記270中接收方法。在附圖標(biāo)記275中對方法進(jìn)行校驗(yàn),以確定是否存在可能的溢出條件。在附圖標(biāo)記285中證實(shí)局部變量類型。在JavaCardTM技術(shù)中,編譯指令確定編譯器是否產(chǎn)生局部變量屬性表,作為代碼產(chǎn)生過程的一部分。局部變量屬性變量包括局部變量的類型信息。如果存在局部變量屬性表,可以在上述“靜態(tài)證實(shí)”階段對有效類型進(jìn)行局部變量證實(shí)。如果不存在局部變量屬性表,數(shù)據(jù)流被用在本階段,以確定局部變量的類型。如果任何局部變量具有未得到支持的類型或者目標(biāo)設(shè)備不支持的選擇性類型,則指示出錯。在附圖標(biāo)記290中進(jìn)行校驗(yàn),以確定是否還存在其它方法要進(jìn)行證實(shí)。如果存在其它方法,在附圖標(biāo)記270中運(yùn)行繼續(xù)進(jìn)行。這個過程一直進(jìn)行到類文件中所有的方法得到證實(shí)?,F(xiàn)在請參看圖7,圖7是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行基于程序包的證實(shí)的方法。在基于程序包的證實(shí)中,對具有有限范圍的受支持的特性進(jìn)行檢測。在附圖標(biāo)記300中接收包括程序包的類文件。在附圖標(biāo)記305中對程序包中的方法進(jìn)行證實(shí)。在附圖標(biāo)記310對程序包中的類進(jìn)行證實(shí)。在附圖標(biāo)記315對程序包限制進(jìn)行證實(shí)?,F(xiàn)在請參看圖8,圖8是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例在程序包中對方法的證實(shí)。在附圖標(biāo)記330中接收方法。在附圖標(biāo)記335中進(jìn)行校驗(yàn),以確定變量和參數(shù)的總數(shù)是否超出預(yù)定值。在JavaCardTM技術(shù)中,變量和參數(shù)的總數(shù)不能超出255。如果總數(shù)超出預(yù)定值,在附圖標(biāo)記350中指示出錯。在附圖標(biāo)記337中Java字節(jié)碼被轉(zhuǎn)換為JavaCard字節(jié)碼。在附圖標(biāo)記340中進(jìn)行校驗(yàn),以確定方法內(nèi)的JavaCardTM字節(jié)碼總數(shù)是否超出預(yù)定值。在JavaCardTM技術(shù)中,JavaCardTM字節(jié)碼總數(shù)不能超出32767。如果字節(jié)碼總數(shù)超出限制,在附圖標(biāo)記355中指示出錯。在附圖標(biāo)記365中進(jìn)行校驗(yàn),以確定是否程序包中的所有方法都得到證實(shí)。如果還存在其它方法,在附圖標(biāo)記330中運(yùn)行繼續(xù)進(jìn)行。這個過程一直進(jìn)行到所有方法得到證實(shí)?,F(xiàn)在請參看圖9A,圖9A是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例在程序包中對類和界面的證實(shí)。在附圖標(biāo)記380中接收類文件。在附圖標(biāo)記382中對類內(nèi)的實(shí)例域的數(shù)量進(jìn)行證實(shí)。在JavaCardTM技術(shù)中,每個類內(nèi)的實(shí)例域總數(shù)不能超出255。這個數(shù)量包括在類中說明的域和在類的每個超類中說明的所有實(shí)例域。一般關(guān)于超類內(nèi)域的信息不包括在用于子類的類文件中。因此,必須讀取用于超類的類文件,以確定超類中實(shí)例域的數(shù)量。這個過程以循環(huán)方式繼續(xù)進(jìn)行,直到根超類被檢測到。然后將按照這種方式獲得的實(shí)例域的總數(shù)與實(shí)例域最大值進(jìn)行比較。在附圖標(biāo)記384中對靜態(tài)域的數(shù)量進(jìn)行校驗(yàn)。在JavaCardTM技術(shù)中,每個類的公用和保護(hù)性靜態(tài)域的總數(shù)不能超出256。與實(shí)例域不同,只存在一個具體化的靜態(tài)域。因此,靜態(tài)域的最大值不適用于類的每個超類的靜態(tài)域。在附圖標(biāo)記386中對實(shí)例方法的數(shù)量進(jìn)行校驗(yàn)。在JavaCardTM技術(shù)中,程序包可見實(shí)例方法的總數(shù)不能超出128,公用和保護(hù)性實(shí)例方法的總數(shù)不能超出128。這個數(shù)量包括在類中聲明的方法和在類的每個超類中聲明的所有方法。一般關(guān)于超類內(nèi)方法的信息不包括在用于子類的類文件中。因此,必須讀取用于超類的類文件,以確定超類中實(shí)例方法的數(shù)量。對于公用和保護(hù)性實(shí)例方法,這個過程以循環(huán)方式繼續(xù)進(jìn)行,直到根超類被檢測到。對于程序包可見實(shí)例方法,循環(huán)繼續(xù)進(jìn)行,直到被校驗(yàn)程序包內(nèi)所有的超類被檢測到。最后,任何重復(fù)都被除去。在附圖標(biāo)記388中對靜態(tài)方法的數(shù)量進(jìn)行校驗(yàn)。在JavaCardTM技術(shù)中,每個類的公用和保護(hù)性靜態(tài)方法的總數(shù)不能超出256。與實(shí)例域不同,只存在一個具體化的靜態(tài)方法。因此,靜態(tài)方法的最大值不適用于類的每個超類的靜態(tài)方法。在附圖標(biāo)記390中對類存取控制進(jìn)行校驗(yàn)。這個證實(shí)確定公用界面是否不正確地?cái)U(kuò)展為程序包可見界面,以及超類中程序包缺省方法的存取可見性是否在子類中不正確地變成公用或者保護(hù)性的。在附圖標(biāo)記392中進(jìn)行校驗(yàn),以確定類或者界面是否具有超過預(yù)定數(shù)量的超界面。在JavaCardTM技術(shù)中,超界面的最大值是15。如果類文件代表類,此類的超界面包括直接由此類實(shí)現(xiàn)的界面和每個直接實(shí)現(xiàn)界面的超界面,以及由任何超類實(shí)現(xiàn)的界面。因此,對超界面總數(shù)的確定,可以通過循環(huán)訪問每個超界面和超類,直至所有界面都被在內(nèi)。重復(fù)被除去后留下的界面數(shù)量與可實(shí)現(xiàn)界面最大值進(jìn)行比較。如果類文件表示界面,這個校驗(yàn)界面的超界面包括被這個界面直接繼承的截面和每個直接超界面的超界面。因此,對超界面總數(shù)的確定,可以通過循環(huán)確定每個界面及其超界面從哪個界面繼承。重復(fù)被除去后留下的界面數(shù)量與可繼承界面最大值進(jìn)行比較。在附圖標(biāo)記396中確定是否還有更多的類文件需要被證實(shí)。如果還有更多的類文件,在附圖標(biāo)記380中運(yùn)行繼續(xù)進(jìn)行。這個過程一直進(jìn)行到所有類文件得到證實(shí)?,F(xiàn)在請參看圖9B,圖9B為一個方框圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對實(shí)現(xiàn)界面數(shù)量的計(jì)算。C1400、C2402和C3404表示三個類。I1406、I2408和I3410表示三個界面。類C3和界面I3在程序包B414中,其他項(xiàng)在程序包A412中。從類C1開始,由類及其所有超類直接實(shí)現(xiàn)的界面的數(shù)量被加至由該類的超類實(shí)現(xiàn)的界面數(shù)量之中,重復(fù)部分被除去。此處由C1實(shí)現(xiàn)的第一界面受到檢驗(yàn)。類C1實(shí)現(xiàn)I1,I1繼承I2。因此I1和I2被計(jì)算在內(nèi)。如果I2還繼承了任何界面,這些界面也被計(jì)算在內(nèi)。然后C1的超類受到檢驗(yàn)。類C1從C2擴(kuò)展。類C2不實(shí)現(xiàn)任何界面,只擴(kuò)展出C3。類C3實(shí)現(xiàn)(I1,I2)。因此,類C2也實(shí)現(xiàn)(I2和I3)。返回至類C1,類C1實(shí)現(xiàn)界面I1、界面I1的超界面I2和由其超類C2實(shí)現(xiàn)的界面。因此,C1實(shí)現(xiàn)(I1,I2)+(I2,I3)。除去重復(fù)部分之后,C1實(shí)現(xiàn)三個界面(I1,I2)+(I12,I3)=(I1,I2,I3)。這個數(shù)量小于用于JavaCardTM技術(shù)的最大值?,F(xiàn)在請參看圖9C,圖9C為一個方框圖,說明了根據(jù)本發(fā)明的一個實(shí)施例對繼承界面數(shù)量的計(jì)算。I1416、I2418和I3420、I4422和I5424表示五個界面。界面I4和I5位于程序包D428中,其他界面位于其它的程序包C426中。界面I1從I2和I3擴(kuò)展,因此I1具有超界面I2和I3。另外,界面I1繼承I2和I3繼承的所有內(nèi)容。如圖9C所示,I3從I2擴(kuò)展,I4從I5擴(kuò)展,I5從I2擴(kuò)展。因此,I4從(I2+I5)=(I2,I5)繼承,I3從(I4)+(I2,I5)+(I2)=(I2,I4,I5)繼承。因此,I1從(I2)+(I3)+(I2,I4,I5)繼承。除去重復(fù)部分之后,I1從四個界面(I2,I3,I4,I5)繼承。這個數(shù)量小于用于JavaCardTM技術(shù)的最大值。現(xiàn)在請參看圖10A,圖10A是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例而證實(shí)類存取控制。由于類文件能夠代表類或者界面,因此在附圖標(biāo)記430中校驗(yàn)受檢驗(yàn)的類文件是否包括界面。如果類文件代表界面,在附圖標(biāo)記431中校驗(yàn)界面是否為公用。在JavaCardTM技術(shù)中,公用界面不可能擴(kuò)展為程序包可見界面。由于一個界面至少可以擴(kuò)展一個超界面,這個確定程序需要對程序包內(nèi)的每個界面進(jìn)行檢驗(yàn),以確定這個鏈條中是否有界面是程序包可見界面。如果界面是公用的,在附圖標(biāo)記432中進(jìn)行校驗(yàn),以確定當(dāng)前界面是否擴(kuò)展出任何界面。如果當(dāng)前界面直接繼承一個界面,則在附圖標(biāo)記434中接收此界面。在附圖標(biāo)記436中對于直接超界面是否具有程序包缺省可見性進(jìn)行證實(shí)。直接超界面是可以被當(dāng)前界面立即繼承的界面。如果直接超界面具有程序包缺省可見性,在附圖標(biāo)記438中指示出錯。如果直接超界面不具有程序包缺省可見性,在附圖標(biāo)記440中進(jìn)行校驗(yàn),以確定是否存在另外一個超界面。如果不存在另外一個超界面,在附圖標(biāo)記434中運(yùn)行繼續(xù)進(jìn)行。JavaCardTM技術(shù)還規(guī)定,超類中的程序包缺省方法的存取可見性不必在子類中變?yōu)楣玫幕蛘呤鼙Wo(hù)的。這在附圖標(biāo)記442中一開始就進(jìn)行校驗(yàn)。如果當(dāng)前類文件代表類,在附圖標(biāo)記442中對當(dāng)前類是否具有超類進(jìn)行判斷。如果當(dāng)前類具有超類,在附圖標(biāo)記444中接收當(dāng)前類的公用的或者受保護(hù)的方法。在附圖標(biāo)記446中對方法進(jìn)行校驗(yàn),以確定方法是否也在具有程序包缺省可見性的超類中定義。在附圖標(biāo)記448中對當(dāng)前類中是否還有更多公用的或者受保護(hù)的方法進(jìn)行判斷。如果有更多公用的或者受保護(hù)的方法,在附圖標(biāo)記444中運(yùn)行繼續(xù)進(jìn)行。這個過程一直進(jìn)行到當(dāng)前類中所有公用的和受保護(hù)的方法得到檢驗(yàn)。現(xiàn)在請參看圖10B,圖10B是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例確定程序包缺省方法是否被處理成為公共方法或者保護(hù)方法。在附圖標(biāo)記460中進(jìn)行校驗(yàn),以確定當(dāng)前類是否在同一程序包中具有超類。如果當(dāng)前類在同一程序包中具有超類,在附圖標(biāo)記462中對方法是否也在超類中定義但具有程序包缺省可見性進(jìn)行校驗(yàn)。如果相應(yīng)方法在超類中具有程序包缺省可見性,在附圖標(biāo)記464中指示出錯。如果相應(yīng)方法未在超類中定義或者不具有程序包缺省可見性,從附圖標(biāo)記460開始,當(dāng)前類被設(shè)置為當(dāng)前類的超類,并且此過程反復(fù)進(jìn)行。這個對方法的校驗(yàn)過程以循環(huán)方式繼續(xù)進(jìn)行,直到達(dá)到超類根部(root)或者程序包邊界?,F(xiàn)在請參看圖11,圖11是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例證實(shí)程序包缺陷。在附圖標(biāo)記476中對程序包中定義的類和界面的數(shù)量進(jìn)行校驗(yàn)。在JavaCardTM技術(shù)中程序包中定義的類和界面的最大值為255。如果數(shù)量超過了最大值,在附圖標(biāo)記478中指示出錯。在附圖標(biāo)記480中對由這個校驗(yàn)后程序包輸入的程序包的數(shù)量是否大于預(yù)定數(shù)量進(jìn)行判斷。在JavaCardTM技術(shù)中一個程序包不能輸入超過128個的程序包。在附圖標(biāo)記490,在程序包中類文件被轉(zhuǎn)換成為CAP文件后,CAP文件組成部分(component)大小得到證實(shí)。在JavaCardTM技術(shù)中,CAP文件由一組組成部分組成。每個組成部分描述了所定義的JavaTM程序包中的一組單元或者CAP文件的一個方面。所有組成部分都具有如下通用格式組成部分{u1標(biāo)記u2大小u1信息[]}“大小”項(xiàng)表示“信息”數(shù)組組成部分中字節(jié)的數(shù)量。由“大小”組成部分表示的最大值是64K字節(jié)。不同類型組成部分的“信息”數(shù)組的內(nèi)容和格式不同。組成部分的其中一種類型方法為組成部分。方法組成部分具有如下通用格式方法-組成部分{u1標(biāo)記u2大小··方法-組成部分方法[]}該方法數(shù)組可以包括多重方法,并且每個方法小于32K字節(jié)。但是,用于所有方法的字節(jié)總數(shù)有可能超過64K字節(jié)的限制。因此,每個組成部分內(nèi)的字節(jié)數(shù)被加在一起,總數(shù)與最大值(64K)進(jìn)行比較。如果總數(shù)大于極限值,則在附圖標(biāo)記495中指示出錯。在JavaCard技術(shù)中,“輸出”文件是指包括Java程序包的所有公用可存取信息的二進(jìn)制文件。根據(jù)本發(fā)明的另一個實(shí)施例,在進(jìn)行基于程序包的證實(shí)階段,通過校驗(yàn)表示定義超類或者超界面的程序包的“輸出”文件,對超類或者超界面進(jìn)行校驗(yàn)。此“輸出”文件得到使用,代替了超類的類文件或者超界面。但是,因?yàn)椤拜敵觥蔽募话ü每纱嫒⌒畔?,程序包缺省類和界面,以及程序包缺省和專用方法和域不包括在?nèi)。因此,在基于程序包的證實(shí)中某些校驗(yàn)需要延時,直至基于卡的證實(shí),因?yàn)闆]有足夠的信息可以利用。作為延時校驗(yàn)直至基于卡的證實(shí)的例子,對于超界面的數(shù)量的精確計(jì)算要求程序包和公用可見性界面都包括在內(nèi)。由于輸出文件只包括公用可存取信息,程序包可見性界面未包括在內(nèi)。因此,如果公用超界面的數(shù)量在基于程序包的證實(shí)過程中被確定小于最大值,當(dāng)關(guān)于程序包可見性界面的信息可用時,公用和程序包可見性界面的數(shù)量將不得不在后來的基于卡的證實(shí)中重復(fù)進(jìn)行。但是,如果計(jì)算出的公用超界面的數(shù)量大于最大值,將沒有必要進(jìn)行進(jìn)一步的計(jì)算,因?yàn)樵缫殉隽顺缑娴淖畲笾?。需要延時校驗(yàn)直至基于卡的證實(shí)的另一種情況是計(jì)算類中的實(shí)例域的數(shù)量。由于超類中的專用和程序包缺省實(shí)例域在輸出文件中不可用,不可能得到精確的計(jì)算。因此,實(shí)例域的數(shù)量必須在所有類的信息可用時在后來的基于卡的證實(shí)中進(jìn)行計(jì)算。根據(jù)本發(fā)明的另一個實(shí)施例,在基于程序包的證實(shí)中進(jìn)行的證實(shí)需要延時,直至下面說明的基于卡的證實(shí)。在這種情況下,當(dāng)卡上的所有類的信息都可用時進(jìn)行證實(shí)?,F(xiàn)在請參看圖12,圖12是一個流程圖,說明了根據(jù)本發(fā)明的一個實(shí)施例進(jìn)行基于卡的證實(shí)。在附圖標(biāo)記500中接收可執(zhí)行運(yùn)行時間(executableruntime)映像所需的類文件或者CAP文件。在附圖標(biāo)記505中,用于可執(zhí)行(executable)映像內(nèi)所有程序單元的存儲器使用量(memoryusage)被加在一起。在附圖標(biāo)記510中,計(jì)算出來的存儲器使用量與最大值進(jìn)行比較。如果總的存儲器使用量大于為可執(zhí)行映像定義的最大值,在附圖標(biāo)記515中指示出錯。在JavaCardTM技術(shù)中,所有的程序單元必須符合處于64K的界限內(nèi),這是JavaCardTM虛擬機(jī)所引用的存儲器范圍。雖然本發(fā)明根據(jù)JavaCardTM技術(shù)而進(jìn)行說明,但本領(lǐng)域普通技術(shù)人員將認(rèn)識到本發(fā)明適用于許多其它平臺。舉例來說這些平臺包括K虛擬機(jī)(KVM)技術(shù)。KVM技術(shù)在太陽微系統(tǒng)公司于1999年6月出版的“TheKVirtualMachine(KVM)-AWhitePaper”一書中有介紹。本發(fā)明可以用軟件或者硬件來實(shí)現(xiàn),也可以采用可編程門陣列器件、專用集成電路(ApplicationSpecificIntegratedCircuits,ASICS)和其他硬件實(shí)現(xiàn)。因此,本發(fā)明描述了一種用于語言子集證實(shí)的新穎方法。雖然在說明中描述了本發(fā)明的實(shí)施例及其應(yīng)用,但對于本領(lǐng)域技術(shù)人員而言,在不偏離上述發(fā)明思想的條件下可以對發(fā)明進(jìn)行很多改進(jìn),這一點(diǎn)是顯而易見的。因此本發(fā)明只受所附權(quán)利要求的限制。權(quán)利要求1.一種語言子集證實(shí)方法,包括證實(shí)多個包括程序的程序模塊,每個所述程序模塊包括為第一計(jì)算機(jī)語言所定義的多個字節(jié)碼,所述第一計(jì)算機(jī)語言是第二計(jì)算機(jī)語言的硬件相關(guān)的子集,所述證實(shí)包括對于沒有為所述第一計(jì)算機(jī)語言所定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)(errorcondition);對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于雖然在所述第一計(jì)算機(jī)語言中定義但是使用方式與所述第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)。2.根據(jù)權(quán)利要求1所述的方法,其中所述程序模塊包括類文件;并且所述證實(shí)進(jìn)一步包括通過把所有用于所述程序模塊的代碼和數(shù)據(jù)相加來判斷存儲器使用量(memoryusage);當(dāng)所述存儲器使用量超出最大存儲器使用量時指示出錯狀態(tài)。3.根據(jù)權(quán)利要求1所述的方法,其中所述程序模塊包括CAP文件;并且所述證實(shí)進(jìn)一步包括通過把所有用于所述程序模塊的代碼和數(shù)據(jù)相加來判斷存儲器使用量;當(dāng)所述存儲器使用量超出最大存儲器使用量時指示出錯狀態(tài)。4.根據(jù)權(quán)利要求2所述的方法,其中所述證實(shí)進(jìn)一步包括讀取所述類文件內(nèi)的每個方法;當(dāng)方法說明不被所述第一計(jì)算機(jī)語言所支持時指示出錯;并且當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇特性而所述方法說明包括所述選擇特性時指示出錯。5.根據(jù)權(quán)利要求4所述的方法,其中所述證實(shí)進(jìn)一步包括當(dāng)域說明不被所述第一計(jì)算機(jī)語言支持時指示出錯;并且當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇特性而所述域說明包括所述選擇特性時指示出錯。6.根據(jù)權(quán)利要求5所述的方法,其中所述證實(shí)進(jìn)一步包括讀取每個所述方法的字節(jié)碼;當(dāng)所述字節(jié)碼使用不被所述第一計(jì)算機(jī)語言支持的數(shù)據(jù)類型時指示出錯;當(dāng)所述字節(jié)碼在不被所述第一計(jì)算機(jī)語言支持的數(shù)值類型上操作時指示出錯;當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇類型而所述指令使用了所述選擇類型時指示出錯;當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇類型而所述指令在所述選擇類型的至少一個數(shù)值上運(yùn)行時指示出錯。7.根據(jù)權(quán)利要求4中所述的方法,其中所述證實(shí)進(jìn)一步包括為所述類文件內(nèi)的每個方法產(chǎn)生數(shù)據(jù)流;并且使用所述數(shù)據(jù)流判斷在方法內(nèi)的算術(shù)中間結(jié)果是否存在溢出的可能性,所述溢出可能性產(chǎn)生與第二最終結(jié)果語義上不同(semanticallydifferent)的第一最終結(jié)果,當(dāng)所述方法不能按照所述第一計(jì)算機(jī)語言執(zhí)行時獲得所述第一最終結(jié)果,當(dāng)所述方法不能在所述第二計(jì)算機(jī)語言下執(zhí)行時獲得所述第二最終結(jié)果。8.根據(jù)權(quán)利要求4所述的方法,其中所述證實(shí)進(jìn)一步包括讀取至少一個包括程序包的類文件;當(dāng)所述程序包中每個類的每個方法內(nèi)的局部變量和參數(shù)的總數(shù)超過變量和參數(shù)的最大值時指示出錯;根據(jù)所述第一計(jì)算機(jī)語言而轉(zhuǎn)換所述方法內(nèi)的所有字節(jié)碼以產(chǎn)生經(jīng)轉(zhuǎn)換的字節(jié)碼;并且當(dāng)經(jīng)轉(zhuǎn)換的字節(jié)碼的總數(shù)超過字節(jié)碼的最大值時指示出錯。9.根據(jù)權(quán)利要求8所述的方法,其中所述證實(shí)進(jìn)一步包括當(dāng)所述程序包的每個類內(nèi)的實(shí)例域的數(shù)量超過實(shí)例域的最大值時指示出錯;當(dāng)所述程序包的每個類內(nèi)的靜態(tài)域的數(shù)量超過靜態(tài)域的最大值時指示出錯;當(dāng)所述程序包的每個類內(nèi)的實(shí)例方法的數(shù)量超過實(shí)例方法的最大值時指示出錯;當(dāng)所述程序包的每個類內(nèi)的靜態(tài)方法的數(shù)量超過靜態(tài)方法的最大值時指示出錯;當(dāng)所述程序包的每個類或每個界面的超界面(superinterface)的總數(shù)超過超界面的最大值時指示出錯。10.根據(jù)權(quán)利要求9所述的方法,其中所述證實(shí)進(jìn)一步包括當(dāng)所述程序包內(nèi)公用界面擴(kuò)展為程序包可見性界面時指示出錯;當(dāng)超類(superclass)中的程序包缺省方法的存取可見性在所述程序包中的子類中變成公用或者保護(hù)性時指示出錯。11.根據(jù)權(quán)利要求1所述的方法,其中所述第一計(jì)算機(jī)語言是為JavaCardTM虛擬機(jī)定義的;而且所述第二計(jì)算機(jī)語言包括JavaTM語言。12.根據(jù)權(quán)利要求1所述的方法,其中所述第一計(jì)算機(jī)語言是為JavaCardTM虛擬機(jī)定義的;所述第二計(jì)算機(jī)語言包括JavaTM類文件。13.一種機(jī)器可讀的程序存儲設(shè)備,具體實(shí)施為該機(jī)器可執(zhí)行的指令的程序,用以實(shí)現(xiàn)語言子集證實(shí)方法,該方法包括證實(shí)多個包括程序的程序模塊,每個所述程序模塊包括為第一計(jì)算機(jī)語言所定義的多個字節(jié)碼,所述第一計(jì)算機(jī)語言是第二計(jì)算機(jī)語言的硬件相關(guān)的子集,所述證實(shí)包括對于沒有為所述第一計(jì)算機(jī)語言所定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)(errorcondition);對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于雖然在所述第一計(jì)算機(jī)語言中定義但是使用方式與所述第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)。14.根據(jù)權(quán)利要求13所述的程序存儲設(shè)備,其中所述程序模塊包括類文件;并且所述證實(shí)進(jìn)一步包括通過把所有用于所述程序模塊的代碼和數(shù)據(jù)相加來判斷存儲器使用量;當(dāng)所述存儲器使用量超出最大存儲器使用量時指示出錯狀態(tài)。15.根據(jù)權(quán)利要求13所述的程序存儲設(shè)備,其中所述程序模塊包括CAP文件;并且所述證實(shí)進(jìn)一步包括通過把所有用于所述程序模塊的代碼和數(shù)據(jù)相加來判斷存儲器使用量;當(dāng)所述存儲器使用量超出最大存儲器使用量時指示出錯狀態(tài)。16.根據(jù)權(quán)利要求14所述的程序存儲設(shè)備,其中所述證實(shí)進(jìn)一步包括讀取所述類文件內(nèi)的每個方法;當(dāng)方法說明不被所述第一計(jì)算機(jī)語言所支持時指示出錯;并且當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇特性而所述方法說明包括所述選擇特性時指示出錯。17.根據(jù)權(quán)利要求16所述的程序存儲設(shè)備,其中所述證實(shí)進(jìn)一步包括當(dāng)域說明不被所述第一計(jì)算機(jī)語言支持時指示出錯;并且當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇特性而所述域說明包括所述選擇特性時指示出錯。18.根據(jù)權(quán)利要求17所述的程序存儲設(shè)備,其中所述證實(shí)進(jìn)一步包括讀取每個所述方法的字節(jié)碼;當(dāng)所述字節(jié)碼使用不被所述第一計(jì)算機(jī)語言支持的數(shù)據(jù)類型時指示出錯;當(dāng)所述字節(jié)碼在不被所述第一計(jì)算機(jī)語言支持的數(shù)值類型上操作時指示出錯;當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇類型而所述指令使用了所述選擇類型時指示出錯;當(dāng)所述執(zhí)行環(huán)境不支持所述第一計(jì)算機(jī)語言的選擇類型而所述指令在所述選擇類型的至少一個數(shù)值上運(yùn)行時指示出錯。19.根據(jù)權(quán)利要求16中所述的程序存儲設(shè)備,其中所述證實(shí)進(jìn)一步包括為所述類文件內(nèi)的每個方法產(chǎn)生數(shù)據(jù)流;并且使用所述數(shù)據(jù)流判斷在方法內(nèi)的算術(shù)中間結(jié)果是否存在溢出的可能性,所述溢出可能性產(chǎn)生與第二最終結(jié)果語義上不同的第一最終結(jié)果,當(dāng)所述方法不能按照所述第一計(jì)算機(jī)語言執(zhí)行時獲得所述第一最終結(jié)果,當(dāng)所述方法不能在所述第二計(jì)算機(jī)語言下執(zhí)行時獲得所述第二最終結(jié)果。20.根據(jù)權(quán)利要求16所述的程序存儲設(shè)備,其中所述證實(shí)進(jìn)一步包括讀取至少一個包括程序包的類文件;當(dāng)所述程序包中每個類的每個方法內(nèi)的局部變量和參數(shù)的總數(shù)超過變量和參數(shù)的最大值時指示出錯;根據(jù)所述第一計(jì)算機(jī)語言而轉(zhuǎn)換所述方法內(nèi)的所有字節(jié)碼以產(chǎn)生經(jīng)轉(zhuǎn)換的字節(jié)碼;并且當(dāng)經(jīng)轉(zhuǎn)換的字節(jié)碼的總數(shù)超過字節(jié)碼的最大值時指示出錯。21.根據(jù)權(quán)利要求20所述的程序存儲設(shè)備,其中所述證實(shí)進(jìn)一步包括當(dāng)所述程序包的每個類內(nèi)的實(shí)例域的數(shù)量超過實(shí)例域的最大值時指示出錯;當(dāng)所述程序包的每個類內(nèi)的靜態(tài)域的數(shù)量超過靜態(tài)域的最大值時指示出錯;當(dāng)所述程序包的每個類內(nèi)的實(shí)例方法的數(shù)量超過實(shí)例方法的最大值時指示出錯;當(dāng)所述程序包的每個類內(nèi)的靜態(tài)方法的數(shù)量超過靜態(tài)方法的最大值時指示出錯;當(dāng)所述程序包的每個類或每個界面的超界面的總數(shù)超過超界面的最大值時指示出錯。22.根據(jù)權(quán)利要求21所述的方法,其中所述證實(shí)進(jìn)一步包括當(dāng)所述程序包內(nèi)公用界面擴(kuò)展為程序包可見性界面時指示出錯;當(dāng)超類中的程序包缺省方法的存取可見性在所述程序包中的子類中變成公用或者保護(hù)性時指示出錯。23.根據(jù)權(quán)利要求13所述的程序存儲設(shè)備,其中所述第一計(jì)算機(jī)語言是為JavaCardTM虛擬機(jī)定義的;而且所述第二計(jì)算機(jī)語言包括JavaTM語言。24.根據(jù)權(quán)利要求13所述的方法,其中所述第一計(jì)算機(jī)語言是為JavaCardTM虛擬機(jī)定義的;所述第二計(jì)算機(jī)語言包括JavaTM類文件。25.一種用于語言子集證實(shí)的裝置,包括證實(shí)多個包括程序的程序模塊的工具,每個所述程序模塊包括為第一計(jì)算機(jī)語言所定義的多個字節(jié)碼,所述第一計(jì)算機(jī)語言是第二計(jì)算機(jī)語言的硬件相關(guān)的子集,所述證實(shí)工具包括對于沒有為所述第一計(jì)算機(jī)語言所定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)的工具;對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)的工具;對于雖然在所述第一計(jì)算機(jī)語言中定義但是使用方式與所述第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)的工具。26.根據(jù)權(quán)利要求25所述的裝置,其中所述程序模塊包括類文件;并且所述證實(shí)工具進(jìn)一步包括通過把所有用于所述程序模塊的代碼和數(shù)據(jù)相加來判斷存儲器使用量的工具;當(dāng)所述存儲器使用量超出最大存儲器使用量時指示出錯狀態(tài)的工具。全文摘要一種語言子集證實(shí)方法,包括證實(shí)多個包括程序的程序模塊,每個程序模塊包括為第一計(jì)算機(jī)語言定義的多個字節(jié)碼,所述第一計(jì)算機(jī)語言是第二計(jì)算機(jī)語言的硬件相關(guān)的子集。證實(shí)包括對于沒有在所述第一計(jì)算機(jī)語言中定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于雖然在所述第一計(jì)算機(jī)語言中定義但是使用方式與所述的所述第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)。一種用于語言子集證實(shí)的裝置,包括一個具有程序指令的存儲器和至少一個處理器,處理器被設(shè)定使用程序指令證實(shí)多個程序模塊,這些模塊一起構(gòu)成程序。處理器還被設(shè)定使用程序指令對于沒有在所述第一計(jì)算機(jī)語言中定義的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于不被所述第一計(jì)算機(jī)語言的執(zhí)行環(huán)境所支持的所述多個程序模塊中的每一項(xiàng)指示出錯狀態(tài);對于雖然在所述第一計(jì)算機(jī)語言中定義但是使用方式與所述的所述第一計(jì)算機(jī)語言不一致的多個程序模塊中的每一項(xiàng)指示出錯狀態(tài)。文檔編號G06F9/445GK1678989SQ00818196公開日2005年10月5日申請日期2000年11月10日優(yōu)先權(quán)日1999年11月12日發(fā)明者陳志群申請人:太陽微系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
长治市| 双流县| 依兰县| 庆城县| 庆阳市| 横峰县| 阆中市| 尉氏县| 家居| 卢湾区| 成都市| 平安县| 中宁县| 岚皋县| 蒙山县| 大同市| 临漳县| 奇台县| 邯郸县| 汝城县| 大安市| 遵义县| 广昌县| 龙井市| 分宜县| 安仁县| 福鼎市| 黎川县| 梅河口市| 乃东县| 宜州市| 大丰市| 双鸭山市| 马山县| 郯城县| 油尖旺区| 卢湾区| 阜康市| 荆州市| 南川市| 杭锦旗|