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 PDF

Info

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
Application number
TW089104599A
Other languages
English (en)
Inventor
Nava Aizikowitz
Vitaly Feldman
Ayal Zaks
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Application granted granted Critical
Publication of TW509871B publication Critical patent/TW509871B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • G06F9/4491Optimising 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)

  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公爱)
TW089104599A 1999-03-16 2000-03-14 Method for identifying sealed calls in Java packages whose targets are guaranteed to belong to the same package TW509871B (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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