TW509871B - Method for identifying sealed calls in Java packages whose targets are guaranteed to belong to the same package - Google Patents
Method for identifying sealed calls in Java packages whose targets are guaranteed to belong to the same package Download PDFInfo
- Publication number
- TW509871B TW509871B TW089104599A TW89104599A TW509871B TW 509871 B TW509871 B TW 509871B TW 089104599 A TW089104599 A TW 089104599A TW 89104599 A TW89104599 A TW 89104599A TW 509871 B TW509871 B TW 509871B
- Authority
- TW
- Taiwan
- Prior art keywords
- package
- call
- category
- program
- program package
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
- G06F9/4491—Optimising based on receiver type
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
A7
發明領域: 本發明係有關java程式模組之程式分析及最隹化。 發明背景: 經由利用程式碼及編譯器最佳化來善用硬體資源,可有 效地可降低程式的執行時間。對於包含許多短程序的程式 =言,如同許多物件導向程式的作法,需要進行程序間之 取佳化,以便得到有效率的程式碼。最相關的程序間之最 佳化=使用列間函式(inlining),此種方式可減少呼叫過 程的資源虛耗,並增加最佳化的機會,而提高效能。然而, 程序間之最佳化受限於物件導向程式之虛擬呼叫。因此,’ 識別一個虛擬呼叫的可能物件(target)(通常稱為“呼叫 反應擬化”(“calldevirtualizati〇n,,))之能力對此種程式 是相當重要的,且這類問題在近幾年也受到相當的重视。
Java私式語言及執行時期環境對呼叫反應擬化構成新的 挑戰。事實上,甚至可能無法預先識別Java中的一虛擬呼 叫足所有可能物件。可能在任何時間中載入其中包含額外 未預期的物件之若干新類別(class)。可能需要複雜的複 雜的型態(type)分析,以便完整地決定一虛擬呼叫的可 月匕物件。播法確定可能物件為何會大幅限制了執行程序間 取佳化之能力。此種最佳化將需要依賴使用者指定可能會 被動態載入的所有類別及介面,或者需要重複地檢查實際 物件為何,並針對未預期到的物件而準備系統預設的動 作。否則,最隹化將會有廢棄的風險,在此種情形中,需 要有一種取消該最佳化之特殊機制。此種機制係述於David -4- 509871 A7 B7 五、發明説明(2 )
Griswold 所制定且由 Sun Microsystems,Inc.於 1998 年 3 月公 佈的 “ The Java™ HotpotTM Virtual Machine Architecture,’,而 且可在網頁 http://java.sun.com:81/products/hotpot/whitepaper.html 上取得形式為白皮書的該份文件。 在諸如C + +等傳統的物件導向語言中,可以很容易地決 定(或者至少相當近似地找出)一虛擬呼叫的一組可能物 件。這是因為在編譯時,程式可能用到的所有類別都是固 定的且為已知的。對一特定方法的呼叫有能會將物件定為 該方法的任何取代實體(overriding implementation )。因 此,一呼叫物件的一簡單近似物即是被呼叫的方法之該組 所有取代實體。掃描其根是在被呼叫類別的繼承樹,即可 有效率地建構該組。在最近數年中已開發出各種技術,以 便精確地找出一虛擬呼叫的該組可能物件,而產生該組所 有取代實體之子集。現在已知道利用活性分析(liveness analysis),以便使執行程式時絕無可能被呼叫的“無效方 法實體”不會成為可能物件之候選者。所有此類技術都有 賴於具有可在執行時期參照到的且在分析時期為固定的且 可取得的所有相關類別。 然而,對於Java程式而言,通常無法預先知道哪些類別 將實際參與。只有在執行時期首次參照到該類別時,才能 找出並載入特定的類別檔。在此之前,對類別檔本身或對 其他參數(例如CLASSPATH環境變數)所作的任何改變 都可能影響到將要載入的該等類別。此種動態的行為限制 了執行類別間分析的能力,尤其限制了決定虛擬呼叫的可 -5- 本紙張尺度適用中國國家標準(CNS) A4規格(21〇x 297公釐) 裝 訂
線 509871 A7 B7 五、發明説明(3 ) 能物件的能力。論及虛擬呼叫的可能物件,這是Java與其 他物件導向語言間之另一項差異。在Java (與其他的語言 不同)中,一虛擬呼叫可到達其類別並未實施被呼叫的介 面之一取代實體。然而,仍然有可能掃描其中包含該方法 的類別或介面之各子類別(subclass),並間或檢查這些子 類別的上類別(superclass ),而找出一 J av a方法的所有 取代實體。 目前是利用兩種主要的方式來應付Java的此種動態本 質,而仍然能夠進行類別間分析及最佳化。一種方式係假 設由使用者供應所有相關的類別,並回歸到傳統的統計技 術。Instantiation,Inc.在其程式 JOVE™ (請參考網頁 http://www. instantiations.com/jove/jovereport.htm )中採用了 此種方式,而該程式要分析並編譯全部的“封裝” Java應 用程式。 此種方式的主要缺點在於:該方式並不適用於可在執行 時期動態地載入未預期到的類別或介面之(動態)應用程 式。 第二種方式假設:新類別可(在執行時期)出現,並準 備一種用來偵測廢棄的分析並根據該分析而“取消”最佳 化之機制。.請注意,在輸入經過一最佳化的程式碼之後, 通常無法“取消”該最佳化,因而必須提供一系統預設的 動作,以便在列間將程式碼寫成某些方法時可處理未預期 到的物件。前文所述的Hotpot採用此種方式。此種.方式的 主要缺點在於:該額外的機制以及間或要偵測並處理未預 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 五、發明説明(4 ) 期到的物件之需求,會造成執行時期的資源虛耗。 日最好是確保起始的最佳化^給自足的,且因而確保該 最佳化在執行時期並不會被廢棄,而無須此種事後編譯。 然而’只有在可將各特定呼叫正確地識別為“封裝啤叫” (“—,),且甚至可在執行時期之前即完全且明確 地決足孩等封裝呼叫的各組可能物件時,t有可能達到上 述的目標。 發明概述: 因此’本發明之-目的在於提供—種用來識別hva程式 套件(paekage)中呼叫的物件保證屬於同—程式套件的呼 叫之方法。 根據本發明,提供了-種用來識別‘封裝程式套件中 呼叫的物件保證屬於該程式套件的呼叫之方法,該方法包 (1) 驗證該程式套件是經過封裝及簽認; (2) 取得該程式套件的類別及介面之—類別階層圖 (3) 取得該程式套件中各別元件之存取許可;以及 (4) 利用該類別階層圖及存取許可,並配合該程式 件是經過封裝及簽認之認知,以便決定該等呼^的二^ 物件是否保證屬於該程式套件。 < 本發明利用可封裝程式套件的Java開發套件(j
DeVel〇pmentKit) K2版(舰2 2)之特殊功能。本發: 利用王要是用來提供較高安全性的此種能力,而在一呼如 出現在一經過封裝及簽認的Java程式套件之内,且決定所 -7- 本紙張尺度適财目目^#?(C"NS) A4^(21〇X297^M) 五、發明説明(5 有的物件都保證屬於該程式套件時,將該啤別 的“封裝呼叫,,(“sealed call”)。 為另J為所明 識別封裝呼叫及其可能物件時,將有料積極性的程序 間(程式套件内)最佳化。更具體而言,如果—封裝 只有-個可能物件,則可安全地使用列間函式。 化可發生在-及時(Just_In_Time ;簡稱JIT )編譯器之取 發生在在-標準的編譯時期(在執行時期之前)編譯’ 或者是用來作為一位元組程式碼變換階段。 ^, 根據本發明,無須依賴對整個程式的假設或限制也血 須擔心會變成廢棄的或造成執行時期資源虛耗,即可識: 可安全地應用靜態分析的某些情況。可將根據本發明:方 法用於可應用的那些情形,並可在別的情形中利用任何京_ 文所述之方法。 則 附圖簡述: 為了使本發明得以被了解,並得知如何實際執行本發明, 現在將以非限制性之方式舉例,並參照各附圖,而說明一 較佳實施例,這些附圖有: 圖1 a及1 b是根據本發明的一方法中主要操作步驟之流 程圖; 圖2、3、,及4示出本發明處理的繼承情形而決定加諸程 式套件中的每一方法之存取限制; 圖5a、5b、6a、6b、及7示出用來實施與本發明相關 聯的各種軟體演算法的程式碼之細節;以及 圖8是用來識別根據本發明的“封裝呼叫,,的一系統之 本紙張尺巧^巾目g家標準(CNS)规格(21()>< 297公爱) 509871 A7 B7
五、發明説明( 方塊圖。 較佳實施例之詳細說明: 於前文介紹中提到,在Java開發套件(JDK i 2)中 引進了 一種新的能力,而得以“封裝,,JAR檔内常駐的 程式套件。如果封裝了-程式套件,則該程式套件中界定的所有 類別及介面必須發源自相同的JAR檔,否則將會發生—異常狀況 (凊參閱網頁‘java.lamg.SecurityException’,)。在本视明责及 申請專利範圍中,係將被封裝的Java程式套件稱為《封裝程式套 件’’。也可封裝一 JAR檔,此即意指:除非特別宣告不封裝某一 秸式套件,否則要封裝JAR檔内的每一程式套件。當在_ 檔 内封裝-程式套件時,任何應用程式將自該TAR檔載人所有相關 的類別及介面(或不載入任何類別及介面)。封裝程式套件的原 始動機是為了有助於維持安全性。然而,我們將會了解,本發明 利用Java的此種能力,以便限制類別載入的自由度。 將各組類別檔聚集在一起對於類別間分析是重要的。為了確保 此種分析之持續性,必須可以在程式套件本身及該封裝中偵測到 改變,例如偵測到現有類別的修改及移除、以及額外類別的加入。 係以JAR檔發訊的形式提供此種功能(JDK 12也有這種功能)。 已知一 Java程式的類別時,即可驗證一呼叫的所有現有可能的 物件是否都存在於一封裝的程式套件内。如果並非如此,則某些 物件有可能會在執行時期中改變。但是縱使所有現有的物 件都屬於一個封裝的程式套件,額外的物件仍然有可能在 執行時期之前或執行時期中自其他的程式套件出現。因此, 必須確保_呼叫不會將目標對準來自一不同程式套件之方 -9- 本紙張尺度適用ΊΡ國國^^_ Μ規格(21〇Χ297公着)----一
裝 訂
線
法;意即,必須確保該呼叫是一封裝呼叫,因而現有的各 物件中不會有任何改變,且執行時期中不會出現任何額外 的物件。可利用類別、介面、及方法的系統預設(套裝) 尨改碼(modifier )所加諸的該存取限制來保證該程式套件 外部的各類別將不會增加物件組。 具有系統預設(套裝)修改碼的一類別、介面、或方法 只能為同一程式套件内的類別、介面、及方法所存取。將 具有一系統預設(套裝)修改碼的一類別、介面、或方法 分別稱為—“套裝,,類別、介面、或方法。來自一不同程 式套件的一方法無法直接取代一套裝方法;只能存取公開 的或又保埤的方法,且只能自該程式套件外部直接取代公 開的或受保護的方法。然而,同一程式套件内的一公開的 或受保護的方法可(直接或間接)取代—套裝方法,且然 後來自任何其他程式套件的一方法(間接)取代該套裝方 法。因此,必須驗證來自一套裝方法的程式套件内的一公 開的或受保制方法;會取代該套裝方法,以便斷定並二 存在有任何外部的物件。 —此外,I自—不同程式套件的—方法無法直接取代屬於 一套裝(意即非公開的)類別或介面之_方法;只能自該 程式套件外部存取公開的類別及介面(且可取代該等公^ 類別及介面之方法)。此處仍然可利用延伸該程式套件: 套裝類別之一公開類別,而“偷渡出,,該套裝類別之 ^万法。㈣該程式套件外部的另-_可延伸該公開的 (子)類別’且該另一類別可取代原始的方法。亦可利用 -10-
一貫施一 一套裝介面但係自位於該程式套件外部的
件偷渡出”該方法。還有一 法的能力上發揮作用, 一上類別 Γ法的一實體之類別,而自該程式套 還有一個修改碼在限制取代Java方 意即該最後(final )修改碼嚴格禁 止取代一方法、或延伸一類別。 圖la及lb是用來板述根據本發明的主要操作步驟之流 程圖。因此,驗證所要分析的每—程式套件,則更確定已 封裝及簽認了該程式套件。如果確係如此,則如圖^所 不’建立該程式套件的類別階層圖(CHG),並決定各程 式套件it件的各別存取許可。利用上述這些事實以及已知 要封裝並簽認該程式套件之事實,來決定該程式套件中各 呼叫的所有物件是否保證屬於該程式套件’。在決定已“封 裝,琢呼叫之後,可立即利用該知識而立即地諸如進行編 譯器的最佳化。此外,亦可在該程式套件之外分離地儲存 該知識,以供爾後的獨立使用。 如果決定將不會封裝並簽認該程式套件,則進行一檢查 以便決定是否要將是否“封裝,,呼叫的結果及封裝呼叫的 可旎物件包含在該程式套件中。如果並非如此,則封裝並 簽認該程式套件,且以前文所述之方式執行圖lb所示之 方法。另一.方面,如果要將該等結果包含在該程式套件中, 則以前文所述之方式執行圖lb所示之方法,並將是否“封 裝’’呼叫的結果及封裝呼叫的可能物件儲存在該程式套件 内。然後封裝並簽認該程式套件。 請注意,用來分析存取許可的相同演算法可以一固有步 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公爱) 509871 五、發明説明(^ 驟之方式推導出該CHG,或者在替代的方式中,可在外部 建立該CHG,並將該CHG傳送到該演算法。如有需要, 也可在外部藉由相同的符記而推導出該等存取許可。該演 算法需要這些資料,但是自外部推導出這些資科或是以這 些資料作為該演算法本身的一部分並沒有差別。 ° 圖2示出一封裝程式套件的一繼承圖(1〇),該封裝程 式套件具有根介面I,、12、& l3以及—根類別c。。該封 裝程式套件中的一呼叫參照到以類別C2包封的法 〜。我們將可了解,係為封裝程式套件…)内的類別C 的直系後裔之類別C6及c8取代了方法&。 2 裝類別c2,.並將方法%宣告為套裝方法。因此 件(10)外部的任何類別都無法延伸類別c2,或直接取代 類別C2的方法m2。假設類別C6要將方法宣主為八 開的且非最終的’而類別C“羨將方法m2宣告為V裝: 且假設這兩個類別都是公開的且非最終的。因此,類別^ 無法將方法m2傳送到在封裝程式套件〇〇)外部的8 C9’這是因為類別c8將方法〜宣告為套裝的。然而 在封裝程式套件(10)外部的類別C6之後裔(例如類別c’ ::代:別C2 (万法m2,這是因為類別。是公開的, 並將万法m2 g告為公開的且非最終的。此即意指: 保證對類別C2的方法m2之一呼叫的物件屬於封裝程式 套件(1〇),這是因為該等物件可能與該封裝程式^ 部的類別C 7相關聯。 卜 因此,如果確定已封裝並簽認程式套件(Η),則對該 -12_ 本纸張尺度適财@目家_(CNS) 公爱) 五、發明説明(10 程ί套件中類別及介面的C恥與存取許可之分析將可決 足疋否可保證一呼叫的所有物件屬於該封裝程式套件。如 此’則該呼叫被“封裝’,,且可安全地將該程式套 如果並非如此,則於執行時期,該程式套件外 部的方法可能取代該程式套件内包封的方法。 式圖套二出二八裝程式套件之一繼承樹(2°),該封裝程 八 艮;丨面l2’而孩根介面込宣告一方法m2。 V;、:看出二在類別C2中實施方法❿,·是該類別並不 :2的-後裔。但是係由類別。實施LA,而類別。 自2繼承樹外部的類別C2繼承m2。因此,可自c :::部方法經由C3而“偷渡”到該程式套件。藉由此 万式,可經由-上類別而進行偷渡,因而如果 在該程式套件的㈣,職純韻方法心2的—呼叫 之可能物件。 ,同樣地,如果可在執料期決定對I2:m2的呼叫屬於類 別C3: C4:C5、或c6,則必須決定每一類別C3、 C5、或〇6疋否為抽象的,並具有其本身的方法1112,且在 此,隋形中’可將對I2:m2的呼叫宣·告為“被封裝的,,。如 果疋抽象的’則琢類別本身在執行時期中不可能是一實際 」牛士果該類別具有其本身的方法m2,則顯然將呼叫 减別的方去,而不會呼叫該程式套件外部的km。 圖4不出#裝程式套件的兩個繼承樹(3G ),該封裝 私式套件…有根類別C ^及C4,其中類別c 1將方法〜 _公開的且非最終的。類別q^的一公開的且 本紙張尺奴財酬綠^ -13- 509871 A7 _______ B7 五、發明説明( ) 非最終的後裔。在相同的程式套件中,類別c4&c6與程 式套件(30)内的類別c3並沒有直接的繼承關係,但是 無法忽視類別c4及c6,這是因為類別C4及C6可經由 不屬於同一程式套件(30)的一中間類別C7而取代C3之 万法m2。因此,同一封裝程式套件内與一類別d之間並 無明顯繼承關係的另一類別e有可能取代在該類別d中宣 告的一方法m,而且在此種情形中,如果可自該程式套件 卜部取代e · : m,則不彳于將對d: : m的一較宣告為“被封 裝的’’。 圖5a至7示出考慮到類別與成員存取許可以及最後修 改碼以便識別封裝呼叫的一基本演算法之細節。前文所述 的圖2' 3、及4中亦示出該演算法的某些特徵。 基本演算法 假設有一個對類別或介面c的一呼叫(表示為c: :m), 且我們想要決定該呼叫是否為一封裝的呼叫.如果有一個 包含C的程式套件,則我們可分析該程式套件的類別及介 面,並以一類別階層圖(CHG)或繼承圖的形式記錄階層 繼承關係。根據該CHG,可強化對方法c: :m的所有^ 代品之一標準搜尋,以便決定對c: :m的特定呼叫是否為 一封裝的呼叫。 在該搜尋中,全面分析有可能取代方法m (或或自一上 類別繼承此種取代實體)的c之所有子類別。這些子類別 都是直接或間接延伸類別c (或實施介面C)之類別 但例外的狀況是:如果一類別將方法㈤宣告為最終的,則 張尺度國國家標準(CNS) A4規格(21〇x^;^--- A7
將免除所有的其子類別。如果碰到的情形為一類別d是一 公開的且非最終的類別,且將方法m重新宣告為公開的且 非最終的,或者自一上類別繼承此—重新宣告,則我們可 終止韓搜尋,#即對e: :m的原始呼叫並不是—封裝的呼 叫。這是因為某-子類別e可自另—程式套件延伸類別d, 且e將可取代c · : m。否則’對c ::爪的呼叫是一封裝的 呼叫〇 圖5a至7示出用來決定對c: :m的一呼叫是否為一封 裝呼叫的此種演算法之一實施例。圖6a及讣處理c是 -類別的情形;圖7處理c是一介面的情形。下文中將說 明與PuMiCN〇nFinalSubclassFoung常數有關的程式碼。 為了決足該程式套件的各類別與介面間之直接繼承,檢 查这些類別及介面的内邵即已足夠。然而,為了偵測間接 繼承,可能需要檢查其他的類別。例如,某一程式套件的 一類別可延伸另一程式套件的一類別,而該另一程式套件 的該類別又延伸該第一程式套件的另一類別。因此,前一 類別(間接)延伸後一類別,且這兩個類別都屬於同一程 式套件,但是在只檢查該程式套件内部時,並無法看出任 何的繼承關係。此種情形係示於圖4中之程式套件(3 〇 )。 必須也檢查屬於一不同程式套件(對應於圖4中之類別 C7)之中間類別,以便完全地決定繼承關係。然而,我們 仍然希望使我們的演算法只植基於一個程式套件的内容 且該等内谷疋經過封裝及簽纟忍,且與其他的資訊不同,不 會被改變。 15- 本紙張尺度適用中國國家標準(CNS) A4規格(21〇χ297公釐)
裝 訂
509871 A7 B7 五、發明説明( 此種跨程式套件的間接繼承亦可協助將一方法自該方法 的程式套件“偷渡,,出來。相同程式套件内的一間接子類 別可(經由跨程式套件繼承而)而取代一公開類別的一套 裝方法,且該子類別又可將該方法宣告為公開的,因而可 讓外部的子類別取代該方法。然而,下面是唯一相關的情 形:該類別必須是公開的,以便可由另一程式套件的一類 別延伸該類別,且該方法是套裝的,否則無法直接偷渡該 方法。無法以此種方式“偷渡’’介面的方法,因為該等方 法都是公開的。 皮程式套件的CHG (只植基於該程式套件的内容)並未 包括因跨程式套件繼承而產生的弧。應付此種缺陷的一種 傳統方式是假設在該程式套件的繼承樹中並未連接的兩個 類別可間接地相互延伸。 圖5a、5b、6a、6b、及7所示的該等基本演算法包含 一極輕微的修改,以便應付跨程式套件繼承。如果碰到一 可跨程式套件延伸的公開子類別(以及該方法的一套裝非 最終的旦告),則檢查該程式套件的所有其他根類別,以 便得知該等根類別是否有可能取代該套裝方法。請參閱圖 5、6a、及 6b 所示與 PublicNonFinalSiibclassFound 常數有 關的程式碼。 論及圖5a、5b、6a、6b、及7所示的該演算法之複雜 性,清首先要注意,若知道一程式套件的類別檔(位 元組程式碼)或;ava原始檔,則可有效率地建構該程式 套件的繼承圖。當然可以只檢視每_類別—次,以便檢查 -16-
509871 A7 B7 五、發明説明( 該類別的上類別、上介面、及所宣告的方法。若知道該程 式套件的繼承圖,則該演算法需要檢視每一子類別,且間 或需要檢視上類別至少一次。然而,因為壹類別(介面) 可實施(延伸)數個介面,所以繼承圖可能不是一個樹, 而是一個一般的非週期性有向圖(Directed Acyclic Graph ; 簡稱DAG )。因此,為了避免檢視類別或介面一次以上, 於首度檢視類別及介面時,可標示該等類別及介面。同樣 地,可標示在一繼承的宣告中已“向上,,技尋的(上)類 別,並可標示在跨程式套件繼承中已搜尋過的各“根,,,以 避免重複此種搜尋。這些修改也與用來找出一方法的所有 取代物之各標準演算法有關。 為了加速搜尋可能的跨程式套件繼承,可預先處理繼承 圖,以便每一根類別將包含該根類別的繼承樹内已宣告為 (公開的)万法之清單(反之亦然,可使每一方法與宣告 該方法所在的類別及類別樹相關聯)。只有出現在兩個^ 同樹的各方法是有關的,且可省略其根直接延伸 java.lang.object的各樹,這是因為物件不延伸任何其他的 類別。 / 可以很容易地調整用來識別封裝呼叫的該演算法而收 集在該搜尋中發現的取代實體,紋封裝呼叫的完整 物件組。 正 在評估根據本發明的的演算法時,我們發現被封裝的呼 叫有相當高的比率正好只有一個可能物件,因而是直 用列間函式的良好候選者。 -17-
509871 A7 B7 五、發明説明(15 因此,本發明利用套裝類別、介面、及方法的系統預設 存取許可、以及封裝並簽認Java程式套件的能力來決定某 些呼叫的完整物件組。 強化上述分析且最好是將額外的呼叫歸類為被封裝之一 種方式是利用D· Bacon及P· Sweeney所發表的論文“Fast Static Analysis of C++ Virtual Fubction Calls ”(發表於 In Proc of the 1996 ACM Conference on Object oriented Programming Systems, Language and Applications (OOPSLA), pp. 325 - 341, San Jose,CA,1996 )所述的活性資訊。例如,可將套裝類 別或具有公開的(或受保護的)建構子(constructor )的類 別視為具有活性,但其前提是該等類別必須是程式套件内 的實體。然而,也有較小的可能以此種方式“封裝”額外 的呼叫,這是因為可將一公開的類別(使呼叫不被封裝) 視為具有活性(前提是該類別具有一公開的或受保護的建 構子)。另一方面,活性資訊有可能減少一封裝呼叫已知 具有的物件數目。 可封裝額外呼叫的另一種方式是利用資料流分析來更有 效地決定被呼叫者的可能型態。此類方法有可能識別額外 的封裝呼叫,但是這類方法遠比根據本發明的繼承圖型態 演算法更為複雜。 我們將可了解,根據本發明的演算法係依據只與被呼叫 的方法有關的資訊,而將各呼叫歸類為封裝呼叫。實際上, 該演算法識別封裝的方法,亦即識別只能自同一程式套件 呼叫的方法,且保證每一此種類別為一封裝呼叫。 -18- 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 16 五、發明説明( ^開發者可利用適當類別、彳面、及方法的系統預設 裝)存取許可,並封裝及簽認該等類別、介面、及方 处、相關#王式套件,而提高軟體開發者的應用程式之效 犯如果一應用程式的工作係集中在各程式套件内,且該 作不㈢發生在各程式套件間之呼叫,則可安全地加速該 工作。 :、圖8疋用來識別—封裝程式套件中的呼叫並保證 薇呼叫的物件屬於該程式套件的一電腦系統(40)之方塊 統(40)包含:—驗證單元(41),用以驗證該程 式套件是經過封裝及簽認;以及-CHG |元(42),用 以決疋琢程式套件的類別階層圖。又設有一存取許可單元 (43),用以決定該程式套件中各別元件的存取許可。一 物件處理器(44)係鶴合到驗證單元(41)、CHG單元(42)、 及存取4可單元(43) ’且係回應該類別階層圖及該存取 许可、以及該程式套件㈣封裝及簽認之知識,以便決定 ,等Μ㈣㈣件是祕證屬㈣程式套件。物件處理 器(44)包含-直接取代單元(45),用以決定該程式套 件外邵的是何直接取代或實施—㈣叫的方法, 且如果確係如此,肖將該呼叫識別為並不保證呼叫的所有 物件屬於同一封裝程式套件之呼叫。 物件處理器(44)進-步包含—間接取代單元(46) 用以決定該程式套件内的-方法是否可直接或間接取代或 實施一個被呼叫的方法且因而由該程式套件外的一方法間 接取代或實施該被彳叫的方法。如果確係如此,則系統( -19- 本紙張尺度適用中國國家標準((^8) Α4規格(210X297/^y A7 B7 17 五、發明説明( 將該呼叫識別為並不保證呼叫的物件都屬於同一封裝程式 套件之呼叫。 間接取代單元(46)包含一子類別檢視單元(47),用 以在每一類別或介面上檢視自目前正在處理的類別或介面 開始的繼承圖、以及該繼承圖中相關聯的子類別及子介 面。子類別檢視單元(47)決定是否有一個將該方法宣告 為非最終公開的或受保護的或自該類別或介面的一母體= 承β旦告之公開的非最終子類別。如果確係如此,則系統 (4 0 )將該呼叫識別為並不保證呼叫的物件都屬於同—封 裝程式套件之呼叫。 、 間接取代單元(46 )進-步包含一多重樹分析單元(^ , 用以決定另一繼承樹的類別是否可將該類別再細分為若干 子類別,並決定該類別是否可將該方法經由該程式套件外 部的一個或多個類別而傳送到該另一繼承樹之類別。如果 確係如此,則將子類別檢視單元(47)用於每一此種繼 樹。 間接取代單元(4 6 )進-步包含—上類別檢視單元(* 9 ), 用以檢查該程式套件外部的—“外部”類別之—方法是否 可經由該程式套件内的-“内部,,類別(該“内部,,類別實 施該介面,.並自該外部類別繼承該方法之實體,因而該= 部㉙別可以有實體)而貫施該介面。如果確係如此目I】系 統(則將該呼叫識別為並不保證呼叫的物件都屬於同二 封裝程式套件之呼叫。 該物件處理器進-步包含—可能物件單元(5〇),用以 -20- 本纸張尺度_ t目目家料(⑽)魏格(摩2^:^ 五、發明説明( 決定保證呼叫的物件都屬 ^ 組可能物件。#屬料—封裝程式套件的呼叫之- 儲存早X (51 )料合到物件處理 = ::::::套叫識別為保證二 ' 之結果。如前文中參照圖la所述 I將孩資訊分離地儲存在該程式套件㈣, 後的獨立使用。 ,乂供爾 -程式分析單元(52)亦係.禹合到物件處理器 ^端’以㈣用與Μ的物件絲屬於同-㈣套件的 =有狀資訊,而執㈣—;ava程式套件之程序間程式 刀軒^取佳化早疋(53)亦係連接到物件處理器(44) 疋輸出,以便利用與呼叫的你杜过也θ 的呼叫右心,4 證屬於同—程式套件 程切而執行對一Java程式套件之程序間 :=?譯器最佳化。一儲存媒體(54)係轉合 : 兀(3) ’且可將自最佳化單元(53)推導出 我—=Tir後程式儲存在該儲存媒體(⑷上。 且 行的-電腦程式之—儲存媒;,==== 本發明而產生的編譯後程式資科之-儲存媒體來儲存根據 在接㈣万法中請專利範圍中,提供 t利;圍步驟的字母字元,其用意只是為二Γ: 我來Γ:Γ步驟的任何特定順序。同樣地 =們田了不考慮呼叫是“被封裝的,,順序是不重要 勺’因而並不將方法申請專利範圍出現的順序視為具 -21 - 本纸張尺度適财國國家㈣(Ci^i格(2iGx297:i:ir 509871 A7 B7 五、發明説明(19有約束性。 -22 - 本纸張尺度適用中國國家標準(CNS) A4規格(210X 297公釐)
Claims (1)
- 六、申請專利範圍 種用來識別;ava封裝程式套件中呼叫的物件保 孩程式套件的呼叫之方法,該方法包含下列步帮·-、 (1 )驗證該程式套件是經過封裝及簽認; ⑴取得該程式套件的類別及介面之—類別階層圖; (3)取得藏程式套件中各別元件之存取許可·以及 …⑷利㈣類別階層圖及存取許可,並配合該程式 經過封裝及簽認之認知,以便決定該等呼叫的财物 保證屬於該程式套件。 疋否 2.如申請專利範圍第Η之方法,#中該步驟(4)包含下 列步驟: U)決㈣程式套件外部的_方法是否可直接取代或實施 一被呼叫的方法;以及 (b) 如果確係如此,則將該呼叫識別為並不保證呼叫的物 件都屬於同一程式套件之呼叫。 3·如申請專利範圍第2項之方法,進一步包含下列步驟·· (c) 決足是否可在該程式套件内直接或間接取代或實施一 ,呼叫的方法且該程式套件外部的_方法是否可間接取代或 實施該被呼叫的方法;以及 (d) 如果確係如此,則將該呼叫識別為並不保證呼叫的物 件都屬於同一程式套件之呼叫。 4 ·如申請專利範圍第3項之方法,其中該步驟(c )包含下 列步驟: ϋ (1 )檢視自Μ被呼叫的方法的類別或介面開始之類別階層 圖; ^ -23- 本紙張尺度適用中國國家標準(CNS) Α4规格(210X 297公釐) -----------—丨丨— 509871 /、、申明專利範園 (2)搜尋一個將該方法當止 _別或介面"趙繼;該==或二= 別;以及 < A閉的非取終子類 ⑴如果找龍子朗, 的物件都屬於同-封裝程式套件之呼別為並不保證呼叫 5·如申請專利範圍第4嚷之方法 (1 )決泠另^ , 進步包含下列步驟: 早^ 承樹的㈣是否可將_別再細分為若干 的一個或多個_而傳送到%_=、.;:由雜式套件外邵 確係如此,則 、繼承樹之類別;以及如果 慮到該類別的方法時,將根據申請專利範圍第4 頁的万法亦應用於該另一繼承樹的該等類別。 6·如申請專利範圍第5項之方法,包含下列步驟: ⑷檢查該程式套件外部的_ “外部,,類別之—方法是否 可經由該程式套件内的一“内部,,類別(該“内部,,類別本 施該介面,並自該外部類別繼承該方法之實體)而實施 面之一方法; (5) 檢查該内部類別是否可有實體;以及 (6) 如果找到孩類別或子類別,則將該呼叫識別為並不保 證呼叫的物件都屬於該程式套件之呼叫。 7·如申請專利範圍第6項之方法,進一步包含下列步驟: (5)如果並未將該呼叫識別為並不保證呼叫的物件都屬於 同一程式套件之呼叫,則將該呼叫識別為保證呼叫的物件都 屬於該程式套件之呼叫。 24- 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公董] 5、申请專利範圍 8·如申凊專利範圍第7項之. ⑷決定保證呼叫的物;都万屬法二 吁能物件。 屬、邊私式套件的呼叫之一組 9·ΓΖ1 專Γ範圍第8項之方法,進—步包含下列步驟: 之資呀而執、保^呼叫的物件都屬於該程式套件的呼叫有關 (或)最t對--輪物的程相程式分析及 1〇·如申請專利範圍第1項之方法φ ^ 式套件的大致相同之時間上執行該方法。,裝並簽認該程 圍第7項之方法,包含下列步帮:在該程式 =:=:的物件都屬於該程式套件的呼叫以 12_:::=:r法,其中係在封裝並簽認該程 i3.t=專利範圍第12項之方法,其中係在程式分析及(或) 瑕佳化之前執行該方法。 7請專利第12項之方法,其中係大致連同程式分 析及(或)取佳化而執行該方法。 i5.=種用來在—了讓封裝程式套件中識別絲呼叫的物件 屬於孩程式套件的呼叫之電腦系統,該系統包含: 一驗證單元’用以驗證該程式套件是否業已封裝並簽認或 者疋否將要封裝並簽認;以及 韓— 合到該驗證單元之-物件處理器,該物件處理器係回應 一先前推導出的繼承圖及先前推導㈣存取許可,並配合該 -25- 本紙張尺度適财S g家標準(CNS) A4規格(210X297公整了 私式套件已經過封裝及簽認之—認知,以便決定呼叫的所有 物件是否保證屬於該程式套件。 16·如申請專利範圍第15項之系統,進一步包含: 一 CHG單元,用以建立該程式套件的類別及介面之一繼 承圖;以及 、 存取〃午可單元,用以決定該程式套件中各別元件之存取 許可及相關修改碼; /中。物件處理器係搞合到该CHG單元及該存取許可單 兀,以便自該等單元接收該先前推導出的繼承圖及先前推導 出的存取許可。 17.如申明專利範圍第15項之系統,其中該物件處理器包含: 一直接取代單元,用以決定該程式套件外部的一方法是否 可直接取代或實施一被呼叫的方法,且如果確係如此,則將 咸乎叫識別為並不保證呼叫的所有物件都屬於該程式套件之 呼叫〇 18·如申請專利範圍第15項之系統,其中該物件處理器包含: 一間接取代單元,用以決定該程式套件内的一方法是否可 直接或間接取代或實施一個被呼叫的方法且因而由該程式套 件外的一方法是否可間接取代或實施該被呼叫的方法。且如 果確係如此,則將該呼叫識別為並不保證呼叫的物件都屬於 該程式套件之呼叫。 19.如申請專利範圍第18之系統,其中該間接取代單元包含: 一子類別檢視單元,用以檢視自該類別或介面開始的繼承 圖,並決定是否有一個將該方法宣告為非最終公開的或受保 -26- 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 509871 六、申請專利範圍 護的.或自該類別κ面的—母體繼承該宣告之公開的非最終 子類別,且如果確係如此,則將該呼叫識別為並不保證呼叫 的物件都屬於該程式套件之呼叫。 20. ^申請專利範圍第18項之系統,其中該間接取代單元包 、-多重樹分析單元,用以決定另一繼承樹的類別是否可將 孩類別再細分為若干子_,並決定_別是否可將該方法 經由該程式套件外部m多個μ而料龍另一繼承 樹之類別,且如果確係如此,職子類職視單元用 此種繼承樹。 、 21·:申請專利範圍第18項之系統,其中該間接取代單元 * -上類別檢視單元,用以檢查該程式套件外部白卜“外部 一方法,否可經由該程式套件内的一“内部,,類別(該 一邵類別實施該介面,並自該外部類別繼承該方法之實 體,因而該内部類別可以有實體)而實施該介面,且如果確 之:,蔹呼叫識別為並不保證呼叫的物件都屬於該程 杜I明專利範圍第15項之系統,進一步包含耦合到該物 I處理器之程式分析單元,用以利用與呼叫的物件保證都 屬於m程式套件的呼叫有關之資訊,而 式套件之程序間程式分析。 中請專利範圍第18項之系統,其中該物件處理器進 步包含: 裝 包 線 程 -27 人適用中國國豕標準(CNS) Μ規格(⑽X撕公爱) η Α8 Β8 C8 D8 申請專利範圍 的物件都屬於該程式 ~可能物件單元,用以決定保證呼叫 套件的呼叫之一組可能物件。 24·如申請專利範圍第η項之系統,進一步包 H/匕η —耦合到該 物件處理器之最佳化單元,践利用射叫的物件保證都 屬於該程式套件的呼叫有關之資訊,而執行對_ 程 式套件之程序間最佳化。 . 25·如申請專利範圍第15項之系統,進一步包含一#禺合到該 物件處理器之儲存單元,用以在該程式套件内部或外部儲 存與保證呼叫的物件都屬於該程式套件的呼叫有關之資 訊。 26·如申請專利範圍第24項之系統,進一步包含一耦合到該 最佳化單元之儲存媒體,用以儲存該最佳化單元所產生的 最佳化之程式資料。 27· ·—種儲存用來執行申請專利範圍第1項的方法的一電腦 程式之儲存媒體。 28· —種用來儲存根據申請專利範圍第9項的方法而產生的 編譯後程式資料之儲存媒體。 -28- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公爱)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/270,661 US6526571B1 (en) | 1999-03-16 | 1999-03-16 | Method for identifying calls in java packages whose targets are guaranteed to belong to the same package |
Publications (1)
Publication Number | Publication Date |
---|---|
TW509871B true TW509871B (en) | 2002-11-11 |
Family
ID=23032260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW089104599A TW509871B (en) | 1999-03-16 | 2000-03-14 | Method for identifying sealed calls in Java packages whose targets are guaranteed to belong to the same package |
Country Status (8)
Country | Link |
---|---|
US (1) | US6526571B1 (zh) |
EP (1) | EP1037141B1 (zh) |
JP (1) | JP2000293379A (zh) |
KR (1) | KR20010006750A (zh) |
AT (1) | ATE359546T1 (zh) |
DE (1) | DE60034263T2 (zh) |
IL (1) | IL134133A (zh) |
TW (1) | TW509871B (zh) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687759B1 (en) * | 1999-08-13 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for performing method lookup in the presence of modularity constructs to support transitive method override |
US6687760B1 (en) * | 1999-08-13 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for preforming method lookup in the presence of modularity constructs to support transitive method override |
US7158993B1 (en) * | 1999-11-12 | 2007-01-02 | Sun Microsystems, Inc. | API representation enabling submerged hierarchy |
US7089242B1 (en) * | 2000-02-29 | 2006-08-08 | International Business Machines Corporation | Method, system, program, and data structure for controlling access to sensitive functions |
JP3555858B2 (ja) * | 2000-03-23 | 2004-08-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体 |
US6986132B1 (en) | 2000-04-28 | 2006-01-10 | Sun Microsytems, Inc. | Remote incremental program binary compatibility verification using API definitions |
US6883163B1 (en) | 2000-04-28 | 2005-04-19 | Sun Microsystems, Inc. | Populating resource-constrained devices with content verified using API definitions |
US6651186B1 (en) * | 2000-04-28 | 2003-11-18 | Sun Microsystems, Inc. | Remote incremental program verification using API definitions |
US6981245B1 (en) | 2000-09-14 | 2005-12-27 | Sun Microsystems, Inc. | Populating binary compatible resource-constrained devices with content verified using API definitions |
KR20020032889A (ko) * | 2000-10-27 | 2002-05-04 | 오길록 | 자바 클래스 파일 분석을 이용한 클래스 호출관계 표시 방법 |
US7793277B2 (en) * | 2001-09-07 | 2010-09-07 | International Business Machines Corporation | Compiler apparatus and method for devirtualizing virtual method calls |
US7010783B2 (en) * | 2002-03-18 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation |
US6912633B2 (en) * | 2002-03-18 | 2005-06-28 | Sun Microsystems, Inc. | Enhanced memory management for portable devices |
US6996802B2 (en) * | 2002-03-18 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using initialization order and calling order constraints |
US7181737B2 (en) * | 2002-03-18 | 2007-02-20 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using static procedure return addresses |
US7149752B2 (en) * | 2002-12-03 | 2006-12-12 | Jp Morgan Chase Bank | Method for simplifying databinding in application programs |
US7085759B2 (en) | 2002-12-06 | 2006-08-01 | Jpmorgan Chase Bank | System and method for communicating data to a process |
US8032439B2 (en) | 2003-01-07 | 2011-10-04 | Jpmorgan Chase Bank, N.A. | System and method for process scheduling |
US7484095B2 (en) * | 2003-01-16 | 2009-01-27 | Sun Microsystems, Inc. | System for communicating program data between a first device and a second device |
US8121955B2 (en) | 2003-01-16 | 2012-02-21 | Oracle America, Inc. | Signing program data payload sequence in program loading |
US7222331B2 (en) * | 2003-01-16 | 2007-05-22 | Sun Microsystems, Inc. | Linking of virtual methods |
US7272830B2 (en) * | 2003-01-16 | 2007-09-18 | Sun Microsystems, Inc. | Ordering program data for loading on a device |
US7281244B2 (en) * | 2003-01-16 | 2007-10-09 | Sun Microsystems, Inc. | Using a digital fingerprint to commit loaded data in a device |
US7165246B2 (en) * | 2003-01-16 | 2007-01-16 | Sun Microsystems, Inc. | Optimized representation of data type information in program verification |
US20040143739A1 (en) * | 2003-01-16 | 2004-07-22 | Sun Mircosystems, Inc., A Delaware Corporation | Run time code integrity checks |
US7401156B2 (en) * | 2003-02-03 | 2008-07-15 | Jp Morgan Chase Bank | Method using control interface to suspend software network environment running on network devices for loading and executing another software network environment |
US7379998B2 (en) * | 2003-03-31 | 2008-05-27 | Jp Morgan Chase Bank | System and method for multi-platform queue queries |
US7814073B2 (en) * | 2003-05-02 | 2010-10-12 | Jp Morgan Chase Bank | Utility for identifying differences between two Java objects |
US20040230602A1 (en) * | 2003-05-14 | 2004-11-18 | Andrew Doddington | System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system |
US7366722B2 (en) * | 2003-05-15 | 2008-04-29 | Jp Morgan Chase Bank | System and method for specifying application services and distributing them across multiple processors using XML |
US7509641B2 (en) * | 2003-05-16 | 2009-03-24 | Jp Morgan Chase Bank | Job processing framework |
US7594219B2 (en) * | 2003-07-24 | 2009-09-22 | International Business Machines Corporation | Method and apparatus for monitoring compatibility of software combinations |
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US20050144174A1 (en) * | 2003-12-31 | 2005-06-30 | Leonid Pesenson | Framework for providing remote processing of a graphical user interface |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US20050222990A1 (en) * | 2004-04-06 | 2005-10-06 | Milne Kenneth T | Methods and systems for using script files to obtain, format and disseminate database information |
WO2005111795A1 (fr) * | 2004-04-14 | 2005-11-24 | France Telecom | Procede d’evaluation de compatibilite d’une application et d’une plateforme de type java |
AU2005234798B2 (en) * | 2004-04-26 | 2009-01-08 | Jp Morgan Chase Bank | System and method for routing messages |
US7493601B2 (en) * | 2004-11-19 | 2009-02-17 | International Business Machines Corporation | System and method for providing access to programmer created JAVA classes |
JP4844102B2 (ja) * | 2005-11-30 | 2011-12-28 | 富士ゼロックス株式会社 | サブプログラム及びそのサブプログラムを実行する情報処理装置 |
US8151243B1 (en) * | 2006-06-06 | 2012-04-03 | Oracle America, Inc. | System and method for determining whether an array is a read-only array |
US9477495B2 (en) * | 2006-08-17 | 2016-10-25 | International Business Machines Corporation | Conservative class preloading for real time Java execution |
JP4979414B2 (ja) | 2007-02-28 | 2012-07-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 複数ロケール混在環境におけるプロビジョニング用の管理サーバ、コンピュータプロブラム、及び方法 |
US9594662B2 (en) * | 2014-08-27 | 2017-03-14 | Ca, Inc. | Automated instrumentation of applications |
US10241763B2 (en) * | 2014-12-10 | 2019-03-26 | Microsoft Technology Licensing, Llc. | Inter-procedural type propagation for devirtualization |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603031A (en) * | 1993-07-08 | 1997-02-11 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US5999737A (en) * | 1994-03-01 | 1999-12-07 | Digital Equipment Corporation | Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis |
US6038395A (en) * | 1994-12-16 | 2000-03-14 | International Business Machines Corporation | System and method for implementing proxy objects in a visual application builder framework |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
US5790861A (en) * | 1995-07-07 | 1998-08-04 | Sun Microsystems, Inc. | Method and apparatus for generating executable code from object-oriented C++ source code |
US6526565B1 (en) * | 1995-12-21 | 2003-02-25 | International Business Machines Corporation | Packaging algorithm for providing object oriented applications having reduced footprints |
US5761673A (en) * | 1996-01-31 | 1998-06-02 | Oracle Corporation | Method and apparatus for generating dynamic web pages by invoking a predefined procedural package stored in a database |
WO1998037486A1 (en) * | 1997-02-18 | 1998-08-27 | International Business Machines Corporation | Method for lookup of packages and classes in java, and devices making use of this method |
JP3672207B2 (ja) * | 1997-05-15 | 2005-07-20 | 松下電器産業株式会社 | プログラム変換装置 |
IL133024A (en) * | 1997-05-29 | 2003-11-23 | Sun Microsystems Inc | Method and apparatus for signing and sealing objects |
US6230314B1 (en) * | 1997-10-02 | 2001-05-08 | International Business Machines Corporation | Method and device for program transformation using class hierarchy transformation based upon type constraint analysis |
-
1999
- 1999-03-16 US US09/270,661 patent/US6526571B1/en not_active Expired - Lifetime
-
2000
- 2000-01-20 IL IL13413300A patent/IL134133A/xx not_active IP Right Cessation
- 2000-02-11 AT AT00301095T patent/ATE359546T1/de not_active IP Right Cessation
- 2000-02-11 EP EP00301095A patent/EP1037141B1/en not_active Expired - Lifetime
- 2000-02-11 DE DE60034263T patent/DE60034263T2/de not_active Expired - Lifetime
- 2000-03-08 KR KR1020000011446A patent/KR20010006750A/ko not_active Application Discontinuation
- 2000-03-13 JP JP2000068025A patent/JP2000293379A/ja active Pending
- 2000-03-14 TW TW089104599A patent/TW509871B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
IL134133A (en) | 2003-10-31 |
EP1037141A3 (en) | 2004-04-14 |
IL134133A0 (en) | 2001-04-30 |
DE60034263D1 (de) | 2007-05-24 |
ATE359546T1 (de) | 2007-05-15 |
US6526571B1 (en) | 2003-02-25 |
EP1037141B1 (en) | 2007-04-11 |
JP2000293379A (ja) | 2000-10-20 |
KR20010006750A (ko) | 2001-01-26 |
EP1037141A2 (en) | 2000-09-20 |
DE60034263T2 (de) | 2007-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW509871B (en) | Method for identifying sealed calls in Java packages whose targets are guaranteed to belong to the same package | |
TWI648648B (zh) | 安卓平台上可執行程式的保護方法 | |
CN108932406B (zh) | 虚拟化软件保护方法和装置 | |
Chan et al. | Advanced obfuscation techniques for Java bytecode | |
Leroy | Java bytecode verification: algorithms and formalizations | |
US7475431B2 (en) | Using security levels to improve permission checking performance and manageability | |
Leroy | Java bytecode verification: an overview | |
Bartel et al. | Static analysis for extracting permission checks of a large scale framework: The challenges and solutions for analyzing android | |
Low | Java control flow obfuscation | |
Hunt et al. | Sealing OS processes to improve dependability and safety | |
US9529981B2 (en) | Methods and systems for setting access to a list of class entities | |
US20050278790A1 (en) | System and method for using security levels to simplify security policy management | |
Brachthäuser et al. | Effekt: Extensible algebraic effects in Scala (short paper) | |
WO2013170724A1 (zh) | 安卓系统中java应用程序的保护方法 | |
Allen et al. | Combining type-analysis with points-to analysis for analyzing Java library source-code | |
Melicher et al. | A capability-based module system for authority control | |
Watson et al. | Capability hardware enhanced RISC instructions: CHERI instruction-set architecture | |
CA2416304C (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
Arzt et al. | Towards cross-platform cross-language analysis with soot | |
Luckow et al. | HVMTP: a time predictable and portable java virtual machine for hard real-time embedded systems | |
US10656885B2 (en) | Using object flow integrity to improve software security | |
Avvenuti et al. | JCSI: A tool for checking secure information flow in java card applications | |
CN101593258B (zh) | 一种在软件保护装置中实现.Net虚拟机的系统和方法 | |
Zaks et al. | Sealed calls in Java packages | |
Evans | Policy-directed code safety |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |