[go: up one dir, main page]

JP2007012066A - ローカル及び匿名クラスに対するイントロスペクションサポート - Google Patents

ローカル及び匿名クラスに対するイントロスペクションサポート Download PDF

Info

Publication number
JP2007012066A
JP2007012066A JP2006178451A JP2006178451A JP2007012066A JP 2007012066 A JP2007012066 A JP 2007012066A JP 2006178451 A JP2006178451 A JP 2006178451A JP 2006178451 A JP2006178451 A JP 2006178451A JP 2007012066 A JP2007012066 A JP 2007012066A
Authority
JP
Japan
Prior art keywords
class
declared
response
programmatic method
local
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
JP2006178451A
Other languages
English (en)
Inventor
Gilad Bracha
ブラチャ ギルダ
Joseph D Darcy
ディー. ダーシイ ジョセフ
Peter Von Der Ahe
フォン デア アヘ ピーター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2007012066A publication Critical patent/JP2007012066A/ja
Abandoned legal-status Critical Current

Links

Images

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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

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)

Abstract

【課題】 ジェネリック型変数が定義されているクラスを決定する改良した技術を提供する。
【解決手段】 本発明の1実施例に基づく技術はローカルクラス及び匿名クラスに対するイントロスペクションサポートを提供している。本技術の結果として、ジェネリック型変数を参照するローカル又は匿名のクラス内に定義されていないジェネリック型変数を定義する囲んでいるクラスを決定することが可能である。本発明の1実施例によれば、特定のクラスがローカル又は匿名のクラスであることをコンパイラーが決定する場合に、該コンパイラーは、どのクラスがその特定のクラスを囲んでいるかを表わす情報をその特定のクラスのバイナリークラスファイル内に発する。囲まれているクラスに対応するリフレクティブプロキシに対するメソッドの呼出しに応答して、その囲まれているクラスを囲んでいる囲んでいるクラスを識別する情報が戻される。このことは、その囲まれているクラスが例えローカル又は匿名のクラスであってもそうである。
【選択図】 図1

Description

本発明はオブジェクト指向型言語に関するものであって、更に詳細には、ローカルクラス及び匿名クラスに対するイントロスペクション(内観)サポート技術に関するものである。
ジャバ(Java)開発キット(JDK)はジャバプログラミング言語(以後、「JPL」と呼称する)プログラムを発生するためのソフトウエア開発キットである。JDKバージョン1.5はJPLに対して幾つかの拡張を導入している。これらの拡張のうちの1つは「ジェネリック型(generic type)」の導入である。
JPLにおけるジェネリック型は、全く同じというわけではないが、C++プログラミング言語におけるテンプレートに類似している。ジェネリック型は、ジェネリック型の使用を有益的なものとさせるシナリオの説明を介して最も容易に理解することが可能である。
JPLのような強く型付けされたプログラミング言語の構文規則によれば、変数のデータ型はその変数の宣言において表現されるものとされている。以下の宣言が例示的なものである。
Figure 2007012066
上の宣言において、変数「x」は型「Integer」のものと宣言されている。従って、「x」に対して「Integer」クラス又はそのサブクラスのインスタンスではないオブジェクトを割当てることの試みは禁止されるべきであり且つその割当てにおいて何かが誤っていることをコンパイラーをしてプログラマーに警告させるべきである。
以下の宣言は幾分より洗練されており且つ知識を与えるものである。
Figure 2007012066
上の宣言において、変数「myIntList」は型「List」のものと宣言されている。上の表現が評価されると、「LinkedList()」コンストラクターメソッドの呼出しを介して「LinkedList」クラスの新たなインスタンス(即ち、「LinkedList」オブジェクト)が形成され(インスタンス化され)且つ「myIntList」へ割当てられる。これらの「List」及び「LinkedList」クラスは以下の説明における例として使用するが、以下に説明するクラスの挙動はこれらのクラスにのみ制限されるものではないことを理解すべきである。
特定の型の変数にはその特定の型のサブタイプ(subtype)即ち下位型であるオブジェクトを割当てることが可能である。型「List」のその他の変数のように、変数「myIntList」は「LinkedList」オブジェクトを割当てることが可能である。何故ならば、型「LinkedList」は型「List」のサブタイプ即ち下位型だからである。「LinkedList」オブジェクトは他のオブジェクトのリンクされたリストである。JPLにおいてジェネリック型を導入する前には、コンパイラーは、これらの他のオブジェクトの特定の型が何であったかを決定することは不可能であった。型システムはランタイム挙動の保守的な近似である。例えば、ジェネリック型でない場合には、「Foo」型オブジェクトのみがLinkedList内に「挿入」された場合には、LinkedListからこれらのオブジェクトを「抽出」した場合に、コンパイラーは、該オブジェクトが型「Foo」のものであったことを決定することは不可能である。ジェネリック型がない場合には、これらのオブジェクトは「Object」クラスの何等かの決定不可能な下位型のインスタンスであったことをコンパイラーが決定することが可能であるに過ぎず、JPLにおいては、全てのクラスは「Object」クラスのサブクラスである。これは、コンパイラーが得ることが可能な特定の限界であったので、「抽出された」オブジェクトはそれらに対して呼び出された「Object」クラス(「Foo」クラスと対比して)のメソッドを有することが可能であるに過ぎない。
この欠点のために、特定のデータ型のものであると宣言されていた変数に対してそのオブジェクトを割当てる前にこのように戻されたオブジェクトを特定のデータ型へプログラマーが「キャスト」することがしばしば必要となった。以下のコードがそのことを示している。
Figure 2007012066
上のコードにおいて、該メソッドにより戻される「Object」型オブジェクトはクラス「Integer」のインスタンス内に明示的にキャストされる。このキャストが実施されなかった場合には、非「Integer」型オブジェクトが型「Integer」の変数に対して割当てられていることをコンパイラーが非難する場合がある。勿論、このような非難は有益的なものである。何故ならば、コンパイラーがこのような割当てに対して非難しなかった場合には、そのメソッドが実際にはInteger即ち整数ではないオブジェクトを戻した場合及びその時にコンパイルされたプログラムは予測されず且つ不所望な挙動を示す場合がある。
このような態様でオブジェクトをキャストせねばならないことは、通常、プログラマーを苛立たせ且つソースコードを不所望に冗長なものとさせ且つ読みにくいものとさせる。キャストすることは「ダーティ」即ち汚らわしいプログラミング手法であると考える者もいる。幸運なことに、JPLにおいてのジェネリック型の出現は、少なくとも、上述した目的のために、キャストすることを不必要なものとさせている。ジェネリック型を組込んだサンプルの宣言は以下の通りである。
Figure 2007012066
これは、「myIntList」に割当てられたリンクされたリスト内のオブジェクトがクラス「Integer」のインスタンスとなるということをこの宣言が明示的に示している点を除いて、上の非ジェネリック型宣言と類似している。この宣言に鑑み、コンパイラーは「myIntList.iterator().next()」メソッドにより戻される全てのオブジェクトが「Integer」オブジェクトであることを知得する。コンパイラーは以下の表現について非難するものではない。
Figure 2007012066
何故ならば、コンパイラーは、該メソッドにより戻されるオブジェクトが「Integer」オブジェクトでなければならないこと、及び変数「x」が型「Integer」のオブジェクトを参照することが可能であることを決定することが可能だからである。単一の宣言が潜在的に多数のキャストを不必要なものとさせる。
更に注意すべきことであるが、ジェネリック型は、クラスの複数の別個のインプリメンテーション(implementation)を必要とすることなしに、このような態様における特定性を可能とさせる。「myIntList」は「Integer」オブジェクトを参照する「List」オブジェクトであるが、プログラマーは「Integer」オブジェクトのみを参照するために「List」クラスのインプリメンテーションを特にコード化することは必要ではない。ジェネリック型はジェネリックな態様でクラスを一度定義させ、次いで異なる特定の宣言において複数回呼び出させることを可能とする。
ジェネリック型が提供するランタイム挙動のより精密な近似に起因して、ジェネリック型は、又、ランタイム障害を回避することに貢献する。
ジェネリック型宣言の実際の1つの例を以下に示す。
Figure 2007012066
上のジェネリック型宣言においては、山型括弧で囲まれたパラメータ(例えば、「<E>」)はジェネリック型の「仮型パラメータ(formal type parameter)」と呼ばれる。このようなジェネリック型の特定の呼出しは「パラメータ化された型(parameterized type)」と呼ばれる。例えば、以下の表現はパラメータ化された型である。
Figure 2007012066
前述したパラメータ化された型において、「<Integer>」は「実型引数」の1例である。パラメータ化された型は、そのジェネリック型宣言が呼び出される場合に仮型パラメータの場所に配置されるべき実型引数を特定する。以下に提供する例は1つの仮型パラメータのみ及び1つの実型引数のみを包含するものであるが、ジェネリック型は複数の仮型パラメータを特定することが可能であり且つパラメータ化された型は複数の実型引数を特定することが可能であることを理解すべきである。
JPLジェネリック型及びC++テンプレートは構文的及び機能的に幾分類似しているものであるが、これら2つの間には幾つかの顕著な差異が存在している。JPLジェネリック型の宣言は、異なる実型引数に対し複数の異なる特定の宣言に展開されることはない。その代わりに、JPLにおける非ジェネリック型宣言の場合におけるように、JPLジェネリック型宣言は単一のクラスファイル内にコンパイルされる。
ジェネリック型は非常に有用なものであるから、JPLライブラリ内に存在していた非ジェネリック型宣言の多くがジェネリック型宣言で置換されている。非ジェネリックメソッド宣言もこれらのライブラリにおいてジェネリックメソッド宣言で置換されている。換言すると、以前の非ジェネリック型及びメソッド宣言は「ジェネリック化」されている。既存のライブラリは移行互換性を可能とする態様でジェネリック化されている。新たなJPLプログラムを書いているプログラマーは、そのプログラムにパラメータ化された型をいれることによりジェネリック型及びメソッドを利用することが可能である。
クラス分類
クラスは、幾分、それらのクラスが他のクラスと相対的に宣言される箇所に基づく分類に従って類別することが可能である。幾つかのクラスはトップレベル(top−level)クラスであり、且つ幾つかのクラスはネストしたクラス(nested class)である。トップレベルクラスは、その他のクラス内において宣言されることのないクラスである。対照的に、ネストしたクラスは、別のクラス内において宣言されているクラスであるが、多分、最も直接的なレベルにおいて宣言されるものではない。
ネストしたクラスは、更に、名前が付けられているか及び別のクラス内において直接的に宣言されているかに基づいて更に類別することが可能である。名前が付けられており且つ別のクラス内において直接的に宣言されているネストしたクラスは「メンバークラス」と呼ばれる。メンバークラスが直接的に宣言されている(即ち、下方に1つのレベルを超えることなく宣言されている)クラスは、そのメンバークラスに対して「宣言するクラス」である。換言すると、メンバークラスは、メソッド及びフィールドが宣言するクラスのメンバーである場合があるのと殆ど同じ態様で、メンバークラスはその宣言するクラスの「メンバー」である。
幾つかのネストしたクラスは「メンバー」クラスではない。例えば、幾つかのネストしたクラスは別のクラス内に包含されている何等かのメソッド内において宣言されている。第一クラスが第二クラス内に包含されているメソッド内に宣言されている場合には、その第二クラスはその第一クラスに対して「宣言する」クラスではない。何故ならば、その第一クラスはその第二クラス内において直接的に宣言されていないからである。このような環境下において、その第二クラスはその第一クラスの「宣言する」クラスではないが、その第二クラスは未だにその第一クラスの「囲む(enclosing)」クラスであり、その第一クラスはその第二クラス内に包含されているが、その第二クラス内において直接的に宣言されているものではない。
これらの非メンバークラスの中で、クラスの2つの更なるサブカテゴリがあり、即ちローカルクラスと匿名クラスである。ローカルクラスは、メソッド宣言等のコードの直接実行可能ブロック内において宣言される。匿名クラスは宣言された名前を有することのないクラスである。
下の例示的なコードにおいて、クラス「Local」はローカルクラスである。何故ならば、それはクラス「Top」の宣言内において直接的にではなくメソッド「foo」の宣言内において宣言されているからである。クラス「Top」は未だにクラス「Local」をエンクローズ(enclose)即ち囲んでいる。
Figure 2007012066
次の下の例は1つのメソッド「bar()」を有する匿名クラスの1例を例示している。
Figure 2007012066
型変数を包含する囲むクラスの変数は囲まれたクラスの範囲内に包含されており、従ってその囲まれたクラス及びそのメンバーはこのような変数を参照することが許される。
イントロスペクション
ランタイムにおいて稼動中のプログラムの要素の特性を決定する方法をプログラムが有することが有用であることがしばしばある。このような特性を決定することの能力を「イントロスペクション(introspection)」即ち内観と呼ばれる。JDKコアリフレクション(Core Reflection)アプリケーションプログラミングインターフェース(API)は現在のJPL仮想マシン(JVM)におけるクラスに関してのイントロスペクションをサポートしている。コアリフレクションAPIは、又、新たなクラスインスタンス及び新たな配列を構築し、オブジェクト及びクラスのフィールドへアクセスし且つ修正し、オブジェクト及びクラスに関してのメソッドを呼出し、配列の要素をアクセスし且つ修正するために使用することが可能である。コアリフレクションAPIのメカニズムは、あるプログラム要素(例えば、クラス、フィールド、メソッド等)がこれらのプログラム要素に関する情報を表わす対応する「リフレクティブプロキシ(reflective proxy)」を有することを可能とさせる。
例えば、コアリフレクションAPIのあるメソッドはそのメソッドの仮パラメータの型、又はそのメソッドの戻り型を包含するメソッドのシグネチャに関する情報を戻す。このような情報は、ジェネリック型パラメータの数及び名前等のジェネリック型特定情報を包含することが可能である。
クラスはそのクラスの外側で定義されているジェネリック型変数を参照することが可能であるので、特定のジェネリック型変数が定義されているクラスを決定する態様を有することが有用である。コアリフレクションAPIは「getDeclaringClass()」と呼ばれるメソッドを実装している。メンバークラスに対応するリフレクティブプロキシに対して呼び出されると、「getDeclaringClass()」メソッドはそのメンバークラスの宣言するクラスに対応するリフレクティブプロキシを戻す。そのメンバークラスがその宣言するクラスにおいて定義されているジェネリック型変数を参照すると、「getDeclaringClass()」メソッドは、そのジェネリック型変数が定義されたクラスを決定するために使用することが可能である。その宣言するクラスがそのジェネリック型変数を定義すると、その宣言するクラスに対応するリフレクティブプロキシがこの事実を表示する。そうでない場合には、「getDeclaringClass()」メソッドは、そのリフレクティブプロキシに対して呼出し、1つの「クラスレベル」より高く移行することが可能である。多くの場合において、このプロセスは、そのジェネリック型変数を定義するクラスが決定されるまで継続される場合がある。
然しながら、幾つかの場合においては、このプロセスは特定のジェネリック型変数が定義されたクラスを決定するために使用することは不可能である。「getDeclaringClass()」メソッドがローカル又は匿名のクラスに対応するリフレクティブプロキシに対して呼び出されると、「getDeclaringClass()」メソッドは「ヌル(null)」を戻す。これは全く正しい結果である。何故ならば、上述したように、ローカルクラス及び匿名クラスは1つのクラス内において直接的に宣言されるものではなく、従って、このようなクラスに対しての宣言するクラスは存在していないからである。
従って、ローカル又は匿名のクラスがそのクラスの外側で定義されているジェネリック型変数を参照する場合に、「getDeclaringClass()」メソッドは、そのジェネリック型変数が定義されているクラスを決定する何等かの態様を提供するものではない。
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、ジェネリック型変数が定義されているクラスを決定するための改良した技術を提供することを目的とする。
本発明の別の目的とするところは、ローカルクラス及び匿名クラスに対する改良したイントロスペクションサポート技術を提供することである。
本発明の1実施例によれば、ローカルクラス及び匿名クラスに対するイントロスペクションサポートを提供する技術が提供される。この技術の結果として、ジェネリック型変数を参照するローカル又は匿名のクラス内において定義されているものではないジェネリック型変数を定義するクラスを決定することが可能である。
本発明の1実施例によれば、「getEnclosingClass()」と呼ばれるメソッドがインプリメント即ち実装される。囲まれているクラスに対応するリフレクティブプロキシに対しての「getEnclosingClass()」メソッドの呼出しに応答して、その囲まれているクラスを囲んでいる囲むクラスを識別する情報が戻される。このことは、囲まれているクラスがローカルクラス又は匿名クラスの場合であってもそうである。本発明の1実施例においては、囲んでいるクラスのリフレクティブプロキシが、どのジェネリック型変数がその囲んでいるクラスにより定義されているかを表わす情報を包含している。
本発明の1実施例によれば、特定のクラスがローカル又は匿名のクラスであることをコンパイラーが決定する場合には、該コンパイラーは、その特定のクラスのバイナリークラスファイル内に、その特定のクラスを囲んでいる囲んでいるクラスのアイデンティティを表わす情報を発する。その特定のクラスのバイナリークラスファイルにおける該情報は、「getEnclosingClass()」メソッドがその特定のクラスの囲んでいるクラスを決定することを可能とするためにランタイムにおいて使用することが可能である。
本発明の1実施例によれば、ローカルクラス及び匿名クラスに対するイントロスペクションをサポートする技術が提供される。本発明の1実施例の動作のハイレベルの概観を例示した動作フローチャートを図1に示してある。
図1を参照すると、ブロック102において、リフレクティブプロキシの「getEnclosingClass()」メソッドの呼出しが検知される。該リフレクティブプロキシはローカルクラスか又は匿名クラスである場合がある囲まれたクラス(enclosed class)に対応している。例えば、仮想マシンのランタイム環境はこのようなメソッドの呼出しを検知する場合がある。そのメソッドの名前「getEnclosingClass()」が説明の便宜上使用されているが、本発明の実施例は「getEnclosingClass()」に関連してここで説明するものと同一の動作を実施するメソッドに対し異なる名前を使用することが可能である。
ブロック104において、「getEnclosingClass()」メソッドの呼出しに応答して、その囲まれているクラスを囲んでいる囲んでいるクラス(enclosing class)が決定される。例えば、ランタイム環境は、その囲まれているクラスに対応するバイナリークラスファイルからこのような情報を決定することが可能である。
ブロック106において、その囲んでいるクラスを識別する情報が発生される。該情報は「getEnclosingClass()」メソッドの結果としてリターン即ち戻すことが可能である。例えば、ランタイム環境は該情報を発生し且つリターン即ち戻すことが可能である。
1実施例においては、その囲んでいるクラスのリフレクティブプロキシが、他の情報の中で、その囲んでいるクラスを定義するジェネリック型変数を表示する。従って、囲んでいるクラスのリフレクティブプロキシの特定のメソッド(例えば、メソッド「toGenericString」)の呼出しに応答して、これらのジェネリック型変数を包含する情報がランタイムにおいて戻される。
その他の観点において、本発明は、ある実施例においては、コンピュータ装置、コンピューティングシステム、及び前述した技術を実施すべく構成されたコンピュータにより読取可能な媒体を包含している。
コンパイル時に囲んでいるクラスの情報を発する
本発明の1実施例においては、ランタイム環境が、囲まれているクラスに対応するバイナリークラスファイル内に格納されている情報に基づいてローカルクラス又は匿名クラスの囲んでいるクラスを決定する。各クラスは別個の対応するバイナリークラスファイルを有している。本発明の1実施例によれば、コンパイラーが、囲まれているクラスがローカル又は匿名のクラスであることの決定に応答してバイナリークラスファイル内に囲んでいるクラスのアイデンティティを格納する。
図2は本発明の1実施例に基づいて、コンパイル時において囲んでいるクラスのアイデンティティ情報を発する技術の1例を例示しているフローチャートである。コンパイラーは、例えば、このような技術を実施することが可能である。
ブロック202において、クラス宣言が検知される。ブロック204において、そのクラス宣言がローカルクラス又は匿名クラスの宣言であるか否かが決定される。そのクラス宣言がローカルクラス又は匿名クラスの宣言である場合には、制御がブロック206へパスする。そうでない場合には、制御はブロック208へパスする。
ブロック206において、そのローカル又は匿名のクラスの囲んでいるクラスを識別する情報がそのローカル又は匿名のクラスに対するバイナリークラスファイル内に発せられる。該情報は、そのローカル又は匿名のクラスに対応するリフレクティブプロキシの「getEnclosingClass()」メソッドの呼出しに応答してランタイム環境によりアクセスすることが可能である。
一方、ブロック208において、その囲んでいるクラスを識別する情報は、その宣言がブロック202において検知された囲まれているクラスに対するバイナリークラスファイル内に発せられることない。
本発明の1実施例によれば、特定の名前が付けられたクラスの宣言が別のクラスの宣言内に包含されているメソッド宣言内に包含されている場合には、その特定のクラスの宣言はローカルクラス宣言であると決定される。
本発明の1実施例によれば、特定のクラスが名前無しで宣言されている場合には、その特定のクラスの宣言は匿名クラス宣言であると決定される。
匿名クラス宣言は囲んでいるクラスのフィールドに対する初期化表現内に包含させることが可能である。以下のコードの例においては、匿名クラスがクラス「Foo」のメンバーであるフィールド「t」に対する初期化表現内において宣言されている。
Figure 2007012066
ローカル又は匿名のクラスが複数のクラス内にネスト(入れ子)されている場合がある。例えば、ローカル又は匿名のクラスはクラス「Foo」内にネストされている場合があり、そのクラスはクラス「Bar」内にネストされている場合があり、そのクラスはクラス「Baz」内にネストされている場合がある。本発明の1実施例によれば、ローカル又は匿名のクラスに対する囲んでいるクラスは、そのクラスを最も直接的に囲んでいるクラスである。前の例において、匿名クラスの最も直接的に囲んでいるクラスは「Foo」である。
バイナリークラスフィルタ構造の例
上述したように、本発明の1実施例においては、コンパイラーは、例えこの囲んでいるクラスがローカル又は匿名クラスに対する「宣言する」クラスではなくとも、そのローカル又は匿名のクラスを囲んでいるクラスを識別する情報をそのローカル又は匿名クラスに対応するバイナリークラスファイル内に発する。本発明の1実施例によれば、該バイナリークラスファイルは以下の形態の構造を包含しており、その場合に、型「u2」及び「u4」は2及び4バイト長の符号無し数字に対する型を表わしている(本明細書で説明する型及び定数に関しての付加的な情報及び定義については、Tim Lindholm及びFrank Yellinによるジャバ仮想マシン明細第二版(The Java Virtual Machine Specification,2 ed.)を参照すると良く、その文献の開示内容全てを引用により本明細書に取込む)。
Figure 2007012066
「attribute info」フィールドは属性テーブルを包含している。該属性テーブルの各値は属性構造である。本発明の1実施例によれば、各属性は以下の形態の構造である。
Figure 2007012066
「attribute name index」はそのクラスの定数プール内へのインデックスである。このインデックスにおける「constant pool」エントリはその属性の名前を表わす構造である。本明細書で説明する構造の幾つかに関しての付加的な情報については、前述したジャバ仮想マシン明細の文献を参照すると良い。
本発明の1実施例によれば、属性テーブル内に包含させることが可能な属性の1つの種類は「EnclosingMethod」属性である。本発明の1実施例によれば、ローカルクラス及び匿名クラスのみが「EnclosingMethod」属性を有している。本発明の1実施例によれば、「EnclosingMethod」属性は以下のフォーマットを有している。
Figure 2007012066
「attribute name index」は「constant pool」テーブル内での有効なインデックスである。「constant pool」エントリはストリング「EnclosingMethod」を表わす構造である。上述した実施例において、「attribute length」の値は4である。
「class index」項目は「constant pool」テーブル内への有効なインデックスである。そのインデックスにおけるエントリは現在のクラスの宣言を囲んでいる最も内側のクラスを表わす「CONSTANT Class info」構造である。本発明の1実施例によれば、ローカル又は匿名のクラスに対する囲んでいるクラス情報を識別する情報をコンパイラーが発するのはこの構造内へである。本発明の1実施例においては、「CONSTANT Class info」構造は以下の形式を有している。
Figure 2007012066
1実施例においては、「TAG」項目は値「CONSTANT Class」を有しており(前述したジャバ仮想マシン明細の文献に更に定義されているように)、且つ「name index」の値は「constant pool」テーブル内への有効なインデックスである。1実施例においては、そのインデックスにおけるエントリは、符号化することが可能な有効な完全に資格が与えられたクラス又はインターフェース名を表わす構造である。
付加的なイントロスペクションメソッド
本発明の1実施例によれば、各リフレクティブプロキシは「getSimpleName()」メソッドをインプリメント即ち実装し、それは、呼び出されると、そのリフレクティブプロキシに対応するクラスの単純な名前を戻す。
本発明の1実施例によれば、各リフレクティブプロキシは「getCanonical Name()」メソッドを実装し、それは呼び出されると、JPL明細によって定義されるように、そのリフレクティブプロキシに対応するクラスのカノニカル(canonilal)名を戻す。
本発明の1実施例によれば、各リフレクティブプロキシは「isAnonymousClass()」メソッドを実装しており、それは、呼び出されると、そのリフレクティブプロキシに対応するクラスが匿名クラスである場合に「真」を戻し、且つそうでない場合に「偽」を戻す。
本発明の1実施例によれば、各リフレクティブプロキシは「isLocalClass()」メソッドを実装し、それは、呼び出されると、そのリフレクティブプロキシに対応するクラスがローカルクラスである場合に「真」を戻し、且つそうでない場合には、「偽」を戻す。
本発明の1実施例によれば、各リフレクティブプロキシは「isMemberClass()」メソッドを実装し、それは、呼び出されると、そのリフレクティブプロキシに対応するクラスがメンバークラス(即ち、「宣言する」クラス内において直接的に宣言されているクラス)である場合に「真」を戻し、且つそうでない場合に「偽」を戻す。
ハードウエア概観
図3は、本発明の1実施例を実装させることが可能なコンピュータシステム300を例示したブロック図である。コンピュータシステム300は、情報交換を簡単化させるためのバス302、及び情報を処理するためにバス302と結合されている1個又はそれ以上のプロセッサ304を包含している。コンピュータシステム300は、又、ランダムアクセスメモリ(RAM)又はその他のダイナミック格納装置等のメインメモリ306を包含しておりそれはプロセッサ304により実行されるべき命令及び情報を格納するためにバス302に結合されている。メインメモリ306は、又、プロセッサ304による命令の実行期間中に一次的な変数又はその他の中間情報を格納するために使用することが可能である。コンピュータシステム300は、更に、プロセッサ304に対する静的情報及び命令を格納するためにバス302に結合されているリードオンリメモリ(ROM)308又はその他のスタチック格納装置を包含することが可能である。磁気ディスク又は光学的ディスク等の格納装置310が情報及び命令を格納するために設けられており且つバス302へ結合されている。
コンピュータシステム300は、コンピュータユーザに対し情報を表示するために陰極線管(CRT)等のディスプレイ312へバス302を介して結合させることが可能である。英文字又はその他のキーを包含する入力装置314がプロセッサ304に対し情報及びコマンド選択を通信するためにバス302へ結合されている。別のタイプのユーザ入力装置は、マウス、トラックボール、又は指示情報及びコマンド選択をプロセッサ304へ通信し且つディスプレイ312上のカーソルの動きを制御するためのカーソル方向キー等のカーソル制御器316である。この入力装置は、典型的に、2つの軸、即ち第一軸(例えばx)及び第二軸(例えばy)において2つの自由度を有しており、それは該装置が面内における位置を特定することを可能とする。
コンピュータシステム300において、バス302は種々のコンポーネント間において、情報、信号、データ等を交換させることを可能とする任意のメカニズム及び/又は媒体とすることが可能である。例えば、バス302は電気的信号を担持する1組の導体とすることが可能である。バス302は、又、コンポーネントの1つ又はそれ以上の間でワイヤレス信号を担持するワイヤレス媒体(例えば、空気)とすることが可能である。バス302は、又、コンポーネントの1つ又はそれ以上の間で信号を容量的に交換させることを可能とする媒体(例えば、空気)とすることが可能である。バス302は、更に、コンポーネントの1つ又はそれ以上を接続するネットワーク接続とすることが可能である。相対的に、種々のコンポーネントの間において情報、信号、データ等を交換させることを可能とする任意のメカニズム及び/又は媒体をバス302として使用することが可能である。
バス302は、又、これらのメカニズム/媒体の結合とすることが可能である。例えば、プロセッサ304はワイヤレスにより格納装置310と通信することが可能である。このような場合には、バス302は、プロセッサ304及び格納装置310の観点からは、空気等のワイヤレス媒体である。更に、プロセッサ304は容量的にROM308と通信することが可能である。この場合には、バス302はこの容量的通信を行うことを可能とする媒体(例えば、空気)である。更に、プロセッサ304はネットワーク接続を介してメインメモリ306と通信することが可能である。この場合には、バス302はネットワーク接続である。更に、プロセッサ304は1組の導体を介してディスプレイ312と通信することが可能である。この場合には、バス302は1組の導体である。従って、どのようにして種々のコンポーネントが互いに通信するかに依存して、バス302は異なる形態をとることが可能である。バス302は、図3に示したように、種々のコンポーネント間において情報、信号、データ等を交換させることを可能とする全てのメカニズム及び/又は媒体を機能的に表わしている。
本発明は本明細書に記載した技術を実装するためのコンピュータシステム300の使用に関連している。本発明の1実施例によれば、これらの技術は、メインメモリ306内に包含されている1つ又はそれ以上の命令からなる1つ又はそれ以上のシーケンスを実行するプロセッサ304に応答してコンピュータシステム300により実施される。このような命令は、格納装置310等の別の機械読取可能な媒体からメインメモリ306内に読込むことが可能である。メインメモリ306内に包含されている命令シーケンスの実行は、プロセッサ304をして、本明細書に記載した処理ステップを実施させる。別の実施例においては、本発明を実現するためにソフトウエア命令と結合させるか又その代わりにハードワイヤード回路を使用することが可能である。従って、本発明の実施例は、ハードウエア回路及びソフトウエアの何等かの特定的な結合に制限されるものではない。
本明細書において使用されているように「機械読取可能な媒体」という用語は、マシンをして特定の態様で動作させるデータを供給することに関与する任意の媒体のことを意味している。コンピュータシステム300を使用して実現される実施例においては、種々の機械読取可能な媒体が、例えば、実行のためにプロセッサ304へ命令を供給する場合に関与する。このような媒体は、これらに制限されるものではないが、非揮発性媒体、揮発性媒体、伝送媒体を包含する多くの形態をとることが可能である。非揮発性媒体は、例えば、格納装置310等の光学的又は磁気的ディスクを包含している。揮発性媒体は、メインメモリ306等のダイナミックメモリを包含している。伝送媒体は、バス302を構成するワイヤを包含して、同軸ケーブル、銅ワイヤ及びオプティカルファイバーを包含している。伝送媒体は、又、無線及び赤外線データ通信期間中に発生されるもの等の音響的又は光波の形態をとることが可能である。
機械読取可能な媒体の一般的な形態は、例えば、フロッピィディスク、フレキシブルディスク、ハードディスク、磁気テープ、又は任意のその他の磁気媒体、CD−ROM、任意のその他の光学的媒体、パンチカード、紙テープ、孔のパターンを具備する任意のその他の物理的媒体、RAM、PROM、EPROM、フラッシュEPROM、任意のその他のメモリチップ又はカートリッジ、後に説明するような搬送波、又はそれからコンピュータが読取ることが可能な任意のその他の媒体を包含している。
機械読取可能な媒体の種々の形態は、実行のためにプロセッサ304へ1つ又はそれ以上の命令からなる1つ又はそれ以上のシーケンスを担持する場合に関与される場合がある。例えば、該命令は、初期的には、遠隔コンピュータの磁気ディスク上に担持されている場合がある。その遠隔コンピュータは命令をそのダイナミックメモリ内にロードし且つ該命令をモデムを使用して電話線を介して送ることが可能である。コンピュータシステム300に対してローカルなモデムが電話線を介してそのデータを受取り且つそのデータを赤外線信号へ変換するために赤外線送信器を使用することが可能である。赤外線検知器は赤外線信号内に担持されるデータを受取ることが可能であり且つ適宜の回路がそのデータをバス302上に配置させることが可能である。バス302はそのデータをメインメモリ306へ運び、そこからプロセッサ302が該命令を検索し且つ実行する。メインメモリ306により受取られた命令は、オプションとして、プロセッサ302による実行の前又は後のいずれかにおいて格納装置310上に格納させることが可能である。
コンピュータシステム300は、又バス302へ結合されている通信インターフェース318を包含している。通信インターフェース318はローカルネットワーク322へ接続されているネットワークリンク320に対し二方向データ通信カップリングを与える。例えば通信インターフェース318は対応するタイプの電話線に対するデータ通信接続を提供する統合サービスデジタルネットワーク(ISDN)カード又はモデムとすることが可能である。別の例として、通信インターフェース318は、互換性のあるLANに対しデータ通信接続を与えるローカルエリアネットワーク(LAN)カードとすることが可能である。ワイヤレスリンクを実現することも可能である。いずれかのこのような実現において、通信インターフェース318は種々のタイプの情報を表わすデジタルデータストリームを担持する電気的、電磁的又は光学的信号を送り且つ受取る。
ネットワークリンク320は、典型的に、1つ又はそれ以上のネットワークを介してその他のデータ装置に対しデータ通信を提供する。例えば、ネットワークリンク320はローカルネットワーク322を介してホストコンピュータ324に対し又はインターネットサービスプロバイダー(ISP)326により操作されているデータ装置に対し接続を与えることが可能である。ISP326は現在一般的に「インターネット」328と呼称されているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供している。ローカルネットワーク322及びインターネット328は、両方共、デジタルデータストリームを担持する電気的、電磁的又は光学的信号を使用する。種々のネットワークを介しての信号及びコンピュータシステム300へ及びそれからの及びそれからデジタルデータを担持するネットワーク320上及び通信インターフェース318を介しての信号は、情報を輸送する搬送波の例示的な形態である。
コンピュータシステム300はネットワーク、ネットワークリンク320及び通信インターフェース318を介してメッセージを送り且つプログラムコードを包含するデータを受取ることが可能である。インターネットの例においては、サーバー330はインターネット328、ISP326、ローカルネットワーク322、通信インターフェース318を介してアプリケーションプログラムに対して要求されたコードを送信する場合がある。
プロセッサ304は、コードが受取られ及び/又は後で実行するために格納装置310又はその他の非揮発性格納装置内に格納される場合にその受取ったコードを実行することが可能である。このように、コンピュータシステム300は搬送波の形態でアプリケーションコードを得ることが可能である。
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
本発明の1実施例の動作の概観を例示したフローチャート。 本発明の1実施例に基づいてコンパイル時に囲んでいるクラスのアイデンティティ情報を発する技術の1例を例示したフローチャート。 本発明のある実施例を実装することが可能なコンピュータシステムの1例を示したブロック図。
符号の説明
300 コンピュータシステム
302 バス
304 プロセッサ
306 メインメモリ
308 リードオンリメモリ(ROM)
310 格納装置
312 ディスプレイ
314 入力装置
318 通信インターフェース
320 ネットワークリンク
322 ローカルネットワーク
324 ホストコンピュータ
326 インターネットサービスプロバイダー(ISP)
328 インターネット
330 サーバー

Claims (18)

  1. ある種のクラスのイントロスペクションを可能とさせる方法において、
    第一クラスに対応するリフレクティブプロキシの第一プログラマチックメソッドの呼出しに応答して、該第一クラスを囲む第二クラスを決定し、
    該第二クラスを識別する情報を発生し、
    該第一クラスが(a)該第二クラス内において宣言される第二プログラマチックメソッド内において宣言されるローカルクラス、及び(b)宣言された名前を有するものでない匿名クラスのうちの1つである、
    ことを特徴とする方法。
  2. 請求項1において、該第二クラスが該第二クラスのフィールドに対する初期化表現を包含しており、該初期化表現が該第一クラスの宣言を包含していることを特徴とする方法。
  3. 請求項1において、該第二クラスを決定する場合に、該第一クラスに対応しており且つその中に該第二クラスを識別する情報をコンパイラーが発したバイナリークラスファイル内に包含されている情報に基づいて該第二クラスを決定することを特徴とする方法。
  4. 請求項1において、更に、
    該リフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第一クラスが該第二クラス内において宣言されている該第二プログラマチックメソッド内において宣言されているローカルクラスであるか否かを決定し、且つ
    該第一クラスが該第二クラス内において宣言されている該第二プログラマチックメソッド内において宣言されているローカルクラスであることの決定に応答して、該第三プログラマチックメソッドの結果として「真」を戻す、
    ことを特徴とする方法。
  5. 請求項1において、更に、
    該リフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第一クラスが宣言された名前を有することのない匿名クラスであるか否かを決定し、
    該第一クラスが宣言された名前を有することのない匿名クラスであることの決定に応答して、該第三プログラマチックメソッドの結果として「真」を戻す、
    ことを特徴とする方法。
  6. 請求項1において、更に、
    第三クラスに対応するリフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第三クラスが別のクラス内において直接的に宣言されているか否かを決定し、
    別のクラス内において該第三クラスが直接的に宣言されていることの決定に応答して、該第三プログラマチックメソッドの結果として「真」を戻す、
    ことを特徴とする方法。
  7. 命令からなる1つ又はそれ以上のシーケンスを担持する機械読取可能な媒体において、その命令は、1つ又はそれ以上のプロセッサによって実行される場合に、該1つ又はそれ以上のプロセッサをして、
    第一クラスに対応するリフレクティブプロキシの第一プログラマチックメソッドの呼出しに応答して、該第一クラスを囲んでいる第二クラスを決定し、
    該第二クラスを識別する情報を発生し、
    該第一クラスが(a)該第二クラス内において宣言されている第二プログラマチックメソッド内において制限されているローカルクラス及び(b)宣言された名前を有することのない匿名クラスのうちの1つである、
    上記各ステップを実施させることを特徴とする機械読取可能な媒体。
  8. 請求項7において、該第二クラスが該第二クラスのフィールドに対する初期化表現を包含しており、該初期化表現が該第一クラスの宣言を包含していることを特徴とする機械読取可能な媒体。
  9. 請求項7において、該第二クラスを決定する場合に、該第一クラスに対応しており且つその中にコンパイラーが該第二クラスを識別する情報を発したバイナリークラスファイル内に包含される情報に基づいて該第二クラスを決定することを特徴とする機械読取可能な媒体。
  10. 請求項7において、該ステップが、更に、
    該リフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第一クラスが該第二クラス内において宣言されている該第二プログラマチックメソッド内において宣言されているローカルクラスであるか否かを決定し、
    該第一クラスが該第二クラス内において宣言されている該第二プログラマチックメソッド内において宣言されているローカルクラスであることの決定に応答して、該第三プログラマチックメソッドの結果として「真」を戻す、
    ことを特徴とする機械読取可能な媒体。
  11. 請求項7において、該ステップが、更に、
    該リフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第一クラスが宣言された名前を有することのない匿名クラスであるか否かを決定し、
    該第一クラスが宣言された名前を有することのない匿名クラスであることの決定に応答して、該第三プログラマチックメソッドの結果として「真」を戻す、
    ことを特徴とする機械読取可能な媒体。
  12. 請求項7において、該ステップが、更に、
    第三クラスに対応するリフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第三クラスが別のクラス内において直接的に宣言されているか否かを決定し、
    該第三クラスが別のクラス内において直接的に宣言されていることの決定に応答して、該第三プログラマチックメソッドの結果として「真」を戻す、
    ことを特徴とする機械読取可能な媒体。
  13. 第一クラスに対応するリフレクティブプロキシの第一プログラマチックメソッドの呼出しに応答して、該第一クラスを囲んでいる第二クラスを決定するメカニズム、
    該第二クラスを識別する情報を発生するメカニズム、
    を有しており、該第一クラスが(a)該第二クラス内において宣言されている第二プログラマチックメソッド内において宣言されているローカルクラス及び(b)宣言された名前を有することのない匿名クラスのうちの1つであることを特徴とする装置。
  14. 請求項13において、該第二クラスが該第二クラスのフィールドに対する初期化表現を包含しており、該初期化表現が該第一クラスの宣言を包含していることを特徴とする装置。
  15. 請求項13において、該第二クラスを決定するメカニズムが、該第一クラスに対応しており且つその中にコンパイラーが該第二クラスを識別する情報を発したバイナリークラスファイル内に包含されている情報に基づいて該第二クラスを決定するメカニズムを有していることを特徴とする装置。
  16. 請求項13において、更に、
    該リフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第一クラスが該第二クラス内において宣言されている該第二プログラマチックメソッド内において宣言されているローカルクラスであるか否かを決定するメカニズム、
    該第一クラスが該第二クラス内において宣言されている該第二プログラマチックメソッド内において宣言されているローカルクラスであることの決定に応答して該第三プログラマチックメソッドの結果として「真」を戻すメカニズム、
    を有していることを特徴とする装置。
  17. 請求項13において、更に、
    該リフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第一クラスが宣言された名前を有することのない匿名クラスであるか否かを決定するメカニズム、
    該第一クラスが宣言された名前を有することのない匿名クラスであることの決定に応答して該第三プログラマチックメソッドの結果として「真」を戻すメカニズム、
    を有していることを特徴とする装置。
  18. 請求項13において、更に、
    第三クラスに対応するリフレクティブプロキシの第三プログラマチックメソッドの呼出しに応答して、該第三クラスが別のクラス内において直接的に宣言されているか否かを決定するメカニズム、
    該第三クラスが別のクラス内において直接的に宣言されていることの決定に応答して該第三プログラマチックメソッドの結果として「真」を戻すメカニズム、
    を有していることを特徴とする装置。
JP2006178451A 2005-06-30 2006-06-28 ローカル及び匿名クラスに対するイントロスペクションサポート Abandoned JP2007012066A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/173,976 US7669184B2 (en) 2005-06-30 2005-06-30 Introspection support for local and anonymous classes

Publications (1)

Publication Number Publication Date
JP2007012066A true JP2007012066A (ja) 2007-01-18

Family

ID=37488426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006178451A Abandoned JP2007012066A (ja) 2005-06-30 2006-06-28 ローカル及び匿名クラスに対するイントロスペクションサポート

Country Status (3)

Country Link
US (1) US7669184B2 (ja)
EP (1) EP1752873A3 (ja)
JP (1) JP2007012066A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016062190A (ja) * 2014-09-16 2016-04-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラミング言語の処理系を実現する装置及び方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526752B1 (en) * 2005-04-12 2009-04-28 Sun Microsystems, Inc. Introspection support for generic types
US7669184B2 (en) 2005-06-30 2010-02-23 Sun Microsystems, Inc. Introspection support for local and anonymous classes
US7788651B2 (en) * 2005-09-02 2010-08-31 Microsoft Corporation Anonymous types
US8176469B2 (en) * 2006-05-04 2012-05-08 Oracle International Corporation Inter language interoperability using a variant type
US8578334B2 (en) * 2006-12-04 2013-11-05 Microsoft Corporation Dynamic language-based integrated development environment
US8813049B2 (en) * 2010-06-30 2014-08-19 Oracle International Corporation Type inference of partially-specified parameterized types
US8938722B2 (en) * 2012-10-17 2015-01-20 International Business Machines Corporation Identifying errors using context based class names
US10158647B2 (en) * 2015-08-25 2018-12-18 Oracle International Corporation Permissive access control for modular reflection
US10191753B2 (en) 2016-03-30 2019-01-29 Oracle International Corporation Generating verification metadata and verifying a runtime type based on verification metadata
US10394528B2 (en) 2016-03-30 2019-08-27 Oracle International Corporation Returning a runtime type loaded from an archive in a module system
US10387142B2 (en) 2016-09-16 2019-08-20 Oracle International Corporation Using annotation processors defined by modules with annotation processors defined by non-module code
US10282184B2 (en) 2016-09-16 2019-05-07 Oracle International Corporation Metadata application constraints within a module system based on modular dependencies
US10848410B2 (en) 2017-03-29 2020-11-24 Oracle International Corporation Ranking service implementations for a service interface
US11782774B2 (en) * 2021-03-19 2023-10-10 Oracle International Corporation Implementing optional specialization when compiling code

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708222B1 (en) * 1997-05-01 2004-03-16 Microsoft Corporation Method and system for locating enclosing owners of embedded objects
US7669184B2 (en) 2005-06-30 2010-02-23 Sun Microsystems, Inc. Introspection support for local and anonymous classes

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016062190A (ja) * 2014-09-16 2016-04-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラミング言語の処理系を実現する装置及び方法
US9921858B2 (en) 2014-09-16 2018-03-20 International Business Machines Corporation Apparatus and method for realizing runtime system for programming language
US10331465B2 (en) 2014-09-16 2019-06-25 International Business Machines Corporation Apparatus and method for realizing runtime system for programming language
US10922107B2 (en) 2014-09-16 2021-02-16 International Business Machines Corporation Apparatus and method for realizing runtime system for programming language

Also Published As

Publication number Publication date
US20070006141A1 (en) 2007-01-04
EP1752873A2 (en) 2007-02-14
US7669184B2 (en) 2010-02-23
EP1752873A3 (en) 2007-02-21

Similar Documents

Publication Publication Date Title
JP2007012066A (ja) ローカル及び匿名クラスに対するイントロスペクションサポート
JP5044139B2 (ja) 移行互換性を維持したままのジェネリック型の具体化
US6366876B1 (en) Method and apparatus for assessing compatibility between platforms and applications
US6018628A (en) Method of implementing parameterized types to be compatible with existing unparameterized libraries
KR101795844B1 (ko) 런타임 시스템
CN107924326B (zh) 对经更新的类型的迁移方法进行覆盖
JPH08263292A (ja) オブジェクト指向プログラミング・インターフェース及びマップする方法
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
EP3607432B1 (en) Flow-based scoping
JP2007012064A (ja) 非ジェネリック化方法がジェネリック化方法をオーバーライドすることの許可
US6951022B1 (en) Delegate-based event handling
EP1708083A1 (en) Supporting dynamically-typed languages in typed assembly languages
US7802240B2 (en) Mechanism for compiling programs
JP2007234022A (ja) 高速パッチベースメソッドコール
US5970250A (en) System, method, and computer program product for scoping operating system semanticis in a computing environment supporting multi-enclave processes
JP5165234B2 (ja) ジャバ言語におけるメソッド参照のサポート
US10394610B2 (en) Managing split packages in a module system
CN117519848A (zh) 一种函数调用方法、装置、设备及存储介质
US7526752B1 (en) Introspection support for generic types
US7254817B2 (en) Apparatus and methods for integrating APIs for program execution management
EP1046985A2 (en) File portability techniques
US6769119B1 (en) System, method, and computer program product for scoping operating system semantics in a computing environment supporting multi-enclave processes
CN113656008B (zh) 用于模块化反射的限制性访问控制
CN113778420B (zh) 桥接模块系统和非模块系统
JP2000207186A (ja) リモ―トオブジェクト通信プログラム生成システム、リモ―トオブジェクト通信システム、およびリモ―トオブジェクト通信プログラム生成プログラムを記録したコンピュ―タ読み取り可能な記録媒体

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20070725