(57)【要約】  システムおよび方法は、オブジェクト指向プログラミング言語環境において遅延参照をサポートし得る。オブジェクト指向プログラミング言語環境は、将来利用可能になるオブジェクトに対して遅延参照を提供することができるインターフェースを含み得る。さらに、遅延参照に基づいてオブジェクトを得るように呼び出し側から要求を受取った後、インターフェースは、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すことができ、または、オブジェクトが現在のところ利用可能でない場合および／またはオブジェクトが利用可能にならない場合には呼び出し側に通知することができる。
2015516098.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のマイクロプロセッサ上で動作するオブジェクト指向プログラミング言語環境において遅延参照をサポートするための方法であって、
将来利用可能になるオブジェクトに対して遅延参照を提供するステップと、
前記遅延参照に基づいて前記オブジェクトを得るように呼び出し側から要求を受取った後、
前記オブジェクトが利用可能である場合には前記オブジェクトを前記呼び出し側に返すこと、ならびに、
前記オブジェクトが現在のところ利用可能でない場合および前記オブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には前記呼び出し側に通知すること、のうちの１つを実行するステップとを備える、方法。
【請求項２】
前記オブジェクトが利用可能になるのを待っている間は、前記遅延参照に基づいて前記オブジェクトを要求するために前記呼び出し側が用いる呼び出しスレッドをブロックすることを回避するステップをさらに備える、請求項１に記載の方法。
【請求項３】
前記オブジェクトが利用可能になる前に、前記オブジェクトがどのクラスに関連付けられるかについて前記呼び出し側に知らせるステップをさらに備える、請求項１または２に記載の方法。
【請求項４】
前記オブジェクトが現在のところ利用可能でない場合に、ランタイム例外を実行するか、またはヌル値を返すステップをさらに備える、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記オブジェクトが利用可能にならない場合に、オブジェクト利用不可例外を実行するステップをさらに備える、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記オブジェクトが利用可能になるのを前記呼び出し側が最大期間だけ待つことを確実にするステップをさらに備える、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記オブジェクトに関連付けられるクラス定義に基づいてオブジェクトに対する遅延参照を作成するステップをさらに備える、請求項１から６のいずれか１項に記載の方法。
【請求項８】
遅延参照を別の遅延参照にネスティングするステップをさらに備える、請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記オブジェクトの記録動的プロキシを得るステップと、
前記オブジェクトの前記記録動的プロキシによって、最後に記録された呼び出しの遅延表現を提供するステップとをさらに備える、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
遅延オブジェクトが利用可能になったときにアプリケーションが通知されるようにするためのメカニズムを提供するステップをさらに備える、請求項１から９のいずれか１項に記載の方法。
【請求項１１】
請求項１から１０のいずれか１項に記載の方法の全てのステップを実行するように１つ以上のマイクロプロセッサ上で実行されるためのプログラム命令を備えるコンピュータプログラム。
【請求項１２】
機械読取可能な媒体上に格納された、請求項１１に記載のコンピュータプログラムを備えるコンピュータプログラム製品。
【請求項１３】
オブジェクト指向プログラミング言語環境において遅延参照をサポートするためのシステムであって、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で起動するインターフェースとを備え、前記インターフェースは、
将来利用可能になるオブジェクトに対して遅延参照を提供するステップと、
前記遅延参照に基づいて前記オブジェクトを得るように呼び出し側から要求を受取った後、
前記オブジェクトが利用可能である場合には前記オブジェクトを前記呼び出し側に返すこと、ならびに、
前記オブジェクトが現在のところ利用可能でない場合および前記オブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には前記呼び出し側に通知すること、のうちの１つを実行するステップとを実行するように動作する、システム。
【請求項１４】
前記インターフェースは、前記オブジェクトが利用可能になるのを待っている間は、前記遅延参照に基づいて前記オブジェクトを要求するために前記呼び出し側が用いる呼び出しスレッドをブロックすることを回避できる、請求項１３に記載のシステム。
【請求項１５】
前記インターフェースは、前記オブジェクトが利用可能になる前に、前記オブジェクトがどのクラスに関連付けられるかについて前記呼び出し側に知らせることができる、請求項１３または１４に記載のシステム。
【請求項１６】
前記インターフェースは、前記オブジェクトが現在のところ利用可能でない場合に、ランタイム例外を実行するか、またはヌル値を返すことができる、請求項１３から１５のいずれか１項に記載のシステム。
【請求項１７】
前記インターフェースは、前記オブジェクトが利用可能にならない場合に、オブジェクト利用不可例外を実行することができる、請求項１３から１６のいずれか１項に記載のシステム。
【請求項１８】
前記オブジェクトが利用可能になるのを前記呼び出し側が最大期間だけ待つことを確実にすることができるヘルパーをさらに備える、請求項１３から１７のいずれか１項に記載のシステム。
【請求項１９】
前記オブジェクトに関連付けられるクラス定義に基づいてオブジェクトに対する遅延参照を作成することができるヘルパーをさらに備える、請求項１３から１８のいずれか１項に記載のシステム。
【請求項２０】
前記インターフェースは、遅延参照を別の遅延参照にネスティングすることができる、請求項１３から１９のいずれか１項に記載のシステム。
【請求項２１】
前記オブジェクトの記録動的プロキシを得ることができ、
前記オブジェクトの前記記録動的プロキシによって、最後に記録された呼び出しの遅延表現を提供することができるヘルパーをさらに備える、請求項１３から２０のいずれか１項に記載のシステム。
【請求項２２】
命令が格納された非一時的な機械読取可能な記録媒体であって、前記命令は、実行されると、
将来利用可能になるオブジェクトに対して遅延参照を提供するステップと、
前記遅延参照に基づいて前記オブジェクトを得るように呼び出し側から要求を受取った後、
前記オブジェクトが利用可能である場合には前記オブジェクトを前記呼び出し側に返すこと、ならびに、
前記オブジェクトが現在のところ利用可能でない場合および前記オブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には前記呼び出し側に通知すること、のうちの１つを実行するステップとをシステムに実行させる、記録媒体。
【請求項２３】
請求項１から１０のいずれか１項に記載の方法をコンピュータに実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示：
この特許文献の開示の一部は、著作権保護の対象である題材を含んでいる。著作権所有者は、特許商標庁の包袋または記録に記載されている通りにいかなる人が特許文献または特許開示を複写することに対しても異議はないが、その他の点ではいかなる著作権も全て保有する。
【０００２】
発明の分野：
本発明は、一般にコンピュータシステムおよびソフトウェアに関し、特にオブジェクト指向プログラミング言語環境をサポートすることに関する。
【背景技術】
【０００３】
背景：
オブジェクト指向プログラミング（object-oriented programming：ＯＯＰ）は、通常はクラスのインスタンスであるオブジェクトに基づいてアプリケーションおよびコンピュータプログラムを設計するために用いられることができる。ＯＯＰ技術は、データ抽象化、カプセル化、メッセージング、モジュラリティ、ポリモーフィズムおよび継承などの特徴を含み得る。異なる役割または責務を有し得る各オブジェクトは、メッセージを受取って、データを処理し、メッセージを他のオブジェクトに送ることができる。また、これらのオブジェクトは、さまざまな動作または方法に密接に関連付けられ得る。これは、本発明の実施の形態が扱う予定の一般的な分野である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要：
オブジェクト指向プログラミング言語環境において遅延参照（deferred reference）をサポートし得るシステムおよび方法が本明細書に記載されている。オブジェクト指向プログラミング言語環境は、将来利用可能になるオブジェクトに対して遅延参照を提供することができるインターフェースを含み得る。さらに、遅延参照に基づいてオブジェクトを得るように呼び出し側から要求を受取った後、インターフェースは、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すことができ、または、オブジェクトが現在のところ利用可能でない場合および／またはオブジェクトが利用可能にならない場合には呼び出し側に通知することができる。
【０００５】
また、１つ以上のマイクロプロセッサ上で動作するオブジェクト指向プログラミング言語環境において遅延参照をサポートするためのシステムが本明細書に記載されている。当該システムは、将来利用可能になるオブジェクトに対して遅延参照を提供するための手段と、遅延参照に基づいてオブジェクトを得るように呼び出し側から要求を受取った後、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すこと、ならびに、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知すること、のうちの１つを実行するための手段とを備える。
【０００６】
さらに、オブジェクト指向プログラミング言語環境において遅延参照をサポートするためのシステムが本明細書に記載されている。当該システムは、将来利用可能になるオブジェクトに対して遅延参照を提供するように構成されたインターフェースと、遅延参照に基づいてオブジェクトを得るようにインターフェースに要求を送るように構成された呼び出し側とを備える。インターフェースは、呼び出し側から要求を受取った後、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すこと、ならびに、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知すること、のうちの１つを実行するようにさらに構成される。
【図面の簡単な説明】
【０００７】
【図１】本発明のさまざまな実施の形態に係るオブジェクト指向プログラミング（ＯＯＰ）環境において遅延参照をサポートする図である。
【図２】本発明の実施の形態に係るＯＯＰ環境において遅延タイプを定義するための例示的なインターフェースの図である。
【図３】本発明の実施の形態に係る、サーバから管理ビーン情報を取得するための例示的なソフトウェア疑似コードの図である。
【図４】本発明の実施の形態に係るＯＯＰ環境において遅延参照をサポートするための例示的なフローチャートである。
【図５】本発明の実施の形態に係るＯＯＰ環境において遅延参照をサポートするための例示的なシステムの図である。
【図６】本発明の実施の形態に係る特徴を示すための機能ブロック図である。
【発明を実施するための形態】
【０００８】
詳細な説明：
オブジェクト指向プログラミング（ＯＯＰ）環境において遅延参照をサポートし得るシステムおよび方法が本明細書に記載されている。
【０００９】
参照オブジェクトは、別のオブジェクトまたは指示対象への参照をカプセル化することができ、それによって参照自体を参照オブジェクトのように検討および操作することができる。遅延参照とは、まだ存在していないであろう指示対象、利用可能でないであろう指示対象、または将来のある時点でのみ利用可能になる指示対象を表わす。
【００１０】
図１は、本発明のさまざまな実施の形態に係るＯＯＰ環境において遅延参照をサポートする図である。図１に示されるように、ＯＯＰ環境１００、例えばＪＡＶＡ（登録商標）プログラミング環境は、将来のオブジェクト１０３に対して遅延参照１０１を提供し得る。遅延参照１０１は、ＯＯＰ環境１００において遅延タイプを定義することができるインターフェース１１０に基づき得る。将来のオブジェクト１０３は、将来利用可能になるオブジェクト、例えばServer、Member、Connection、Mbean、ValueおよびConditionであり得る。
【００１１】
ＯＯＰ環境１００において、呼び出し側１０２は、遅延参照１０１に基づいて将来のオブジェクト１０３を得るように要求、例えばgetメソッドを送り得る。指示対象または将来のオブジェクト１０２を決定するための計算は、getメソッドが呼び出されるまでは開始しないであろう。一方、呼び出し側１０２に遅延参照１０１を返すことは、直ちに行われる。
【００１２】
本発明のさまざまな実施の形態によれば、呼び出し側１０２は、プロセッサ、メモリおよび通信インターフェースなどの周知のハードウェア素子を含む汎用コンピュータ上に実装され得る。呼び出し側１０２は、ソフトウェアプログラムの命令がプロセッサによって実行されると実現される。
【００１３】
呼び出し側１０２から要求を受取った後、ＯＯＰ環境１００は、将来のオブジェクト１０３が現在のところ利用可能でないことを呼び出し側１０２に通知し得る。代替的に、ＯＯＰ環境は、将来のオブジェクト１０３が利用可能になるとすぐに、将来のオブジェクト１０３を呼び出し側１０２に返し得る。
【００１４】
本発明のさまざまな実施の形態によれば、ＯＯＰ環境は、将来のオブジェクト１０２が利用可能になるのを待っている間は、将来のオブジェクト１０２を要求するために呼び出し側１０２が用いる呼び出しスレッド１０４をブロックすることを回避し得る。呼び出しスレッド１０４が他の重要なタスクに関与し得るので、このような非同期モデルは有益であり得る。
【００１５】
さらに、ＯＯＰ環境１００は、遅延参照１０１の機能を拡張するために１つ以上のヘルパー１２０を使用し得る。また、ＯＯＰ環境１００は、別の遅延参照を遅延参照１０１にネスティングすることができる。
【００１６】
本発明のさまざまな実施の形態によれば、ＯＯＰ環境は、要求された非同期動作の結果を表わし得る将来のクラスの定義、例えばJAVA Futureクラスを提供し得る。
【００１７】
将来のオブジェクト１０２の遅延参照１０１を用いて、ＯＯＰ環境は、JAVA Futureクラスに関連するさまざまな問題を回避することができる。例えば、値を決定するための計算は、将来のクラスが作成されると開始し得る。さらに、将来のクラスは、呼び出しスレッドを強制的に待機させ得る。例えば、JAVA Futureクラスは、値が生成されるまでは永久に待機するように呼び出しスレッドをブロックしなければならないFuture.get()メソッド、または、呼び出しスレッドを特定の時間ブロックするFuture.get(time)メソッドを提供し得る。これらのメソッドは両方とも、非同期でないブロッキングアルゴリズムを開発者に書かせる。
【００１８】
本発明のさまざまな実施の形態によれば、遅延参照１０２は、オラクル・コヒーレンス・インキュベータ・コモンにおけるcom.oracle.tools.deferredパッケージの一部としてなど、ソフトウェアパッケージの一部として有効にされるか、または、幅広く用いられるように別個のjarにおいて有効にされ得る。
【００１９】
また、ＯＯＰ環境１００は、遅延オブジェクトが利用可能になったときにアプリケーションが通知されるようにするためのメカニズムを提供し得る。これにより、開発者は、基本となるオブジェクトが利用可能になったときに通知されるように１つ以上の遅延参照をコールバックとともに定義することができる。このように、基本的なオブジェクト指向プログラミング言語は、いつオブジェクトが「遅延した」ものではなくなるかをアプリケーション開発者に知らせることができる。
【００２０】
図２は、本発明の実施の形態に係るＯＯＰ環境において遅延タイプを定義するための例示的なインターフェースの図である。図２に示されるように、将来利用可能になるオブジェクトに対して遅延参照を提供するために、インターフェースDeferredが使用可能または実装可能である（１行目）。インターフェースDeferredは、遅延参照を返し得るget()メソッド（３行目）と、実際に存在することなしに指示対象のクラスを判断し得るgetDeferredclass()メソッド（５行目）とを含む。
【００２１】
get()メソッドが呼び出し側によって呼び出されると、オブジェクト指向プログラミング言語環境は、将来のオブジェクトが利用可能になるのを待っている間は、呼び出しスレッドをブロックすることを回避し得る。結果値が生成されるのを待つJAVA Futureクラスとは異なって、インターフェースDeferredにおけるget()メソッドは、直ちに将来のオブジェクトに参照を返す。
【００２２】
さらに、ＯＯＰ環境は、オブジェクトが現在のところ利用可能でない場合に、ヌル値を返すか、またはランタイム例外を実行し得る。また、オブジェクト指向プログラミング言語環境は、オブジェクトが利用可能にならないかもしれない場合に、オブジェクト利用不可例外（例えばObjectNotAvailableException）を実行し得る。
【００２３】
本発明のさまざまな実施の形態によれば、ＯＯＰ環境は、遅延参照の機能を拡張するためのさまざまなタイプの遅延ヘルパーを提供し得る。
【００２４】
例えば、以下に示される遅延ヘルパーは、オブジェクトが利用可能になるのを呼び出し側が特定の期間だけ待つ、または、特定の期間の後で再試行することを確実にし得る。
【００２５】
【数１】
2015516098.tif 000003
【００２６】
ＯＯＰ環境においては、保証遅延（ensured Deferred）タイプは、遅延タイプ（Deferred type）においてオブジェクトが利用可能になるのを特定の時間だけ待つ、遅延されたインプリメンテーション（ラッパー）を使用し得る。ここで、いかなる遅延タイプも保証されることができる。保証遅延タイプは、ネスティングタイムアウトの必要なしに、ネスティングされた遅延タイプを可能にする。
【００２７】
さらに、遅延タイプはブロッキングセマンティックスを実装せず、保証タイプのみが実装する。保証遅延は、カスタマイズできるセマンティックスにより「待機する」ことを可能にするが、遅延タイプは、呼び出しスレッドをブロックしないであろう。例えば、遅延タイプは、指示対象が利用可能にならないと想定される場合に、（ランタイム）ObjectNotAvailableExceptionsを実行し得る。
【００２８】
以下に示されるように、ＯＯＰ環境は、最大（デフォルト）期間だけ待つ、または、デフォルト期間の後で再試行することによって、遅延値を決定し得る。
【００２９】
【数２】
2015516098.tif 000004
【００３０】
また、オブジェクト指向プログラミング言語環境は、呼び出し側が明確な最大タイムアウトを指定することを可能にする。
【００３１】
【数３】
2015516098.tif 000005
【００３２】
本発明の実施の形態によれば、ＯＯＰ環境は、遅延ヘルパーの概念に基づいて遅延方法の呼び出しをサポートし得る。
【００３３】
例えば、以下に示されるように、インターフェースおよび／またはオブジェクトの記録動的プロキシを作成し得る。
【００３４】
【数４】
2015516098.tif 000006
【００３５】
このように、ＯＯＰ環境は、遅延タイプdeferredの「記録（recording）」動的プロキシを得ることができる。
【００３６】
【数５】
2015516098.tif 000007
【００３７】
また、ＯＯＰ環境は、以下に示されるように、最後に記録された呼び出しコールを表わす遅延タイプを得ることができる。
【００３８】
【数６】
2015516098.tif 000008
【００３９】
最終的に、ＯＯＰ環境は、list.sizeに対する最後に記録された呼び出しコールを表わす遅延タイプDeferred<Integer>を得ることができる。
【００４０】
【数７】
2015516098.tif 000009
【００４１】
このように、オブジェクトの最後に記録された動的プロキシに関する値が、遅延値として呼び出し側に返されることができ、例えば遅延整数は、将来のリストのサイズを表わし得る。また、遅延参照は、別の遅延参照にネスティングされ得る。
【００４２】
また、以下に示されるように、ＯＯＰ環境は、連鎖法をサポートし得る。
【００４３】
【数８】
2015516098.tif 000010
【００４４】
また、オブジェクト指向プログラミング言語環境は、遅延タイプ上での遅延法の呼び出しをサポートし得る。
【００４５】
【数９】
2015516098.tif 000011
【００４６】
遅延参照は、分散データ環境において有益であり得る。例えば、複数回試行ブロックを用いる代わりに、簡易試験は、以下を単に呼び出して分散データ環境におけるバーチャルマシーンおよびMbeanサーバが利用可能であることを保証することによって、クラスタが特定のサイズに達することを保証し得る。
【００４７】
【数１０】
2015516098.tif 000012
【００４８】
さらに、ＯＯＰ環境は、さまざまな他の遅延ヘルパーを提供し得る。例えば、上手くいったget()要求の結果をキャッシュに格納し得る遅延ヘルパーがあり得る。
【００４９】
【数１１】
2015516098.tif 000013
【００５０】
また、遅延ヘルパーは、値ＴをDeferred<T>に変換し得る。
【００５１】
【数１２】
2015516098.tif 000014
【００５２】
また、ＯＯＰ環境は、遅延タイプのJava Future表現を得ることができる。
【００５３】
【数１３】
2015516098.tif 000015
【００５４】
実施例
図３は、本発明の実施の形態に係る、サーバから管理ビーン情報を取得するための例示的なソフトウェア疑似コードの図である。図３に示されるように、呼び出し側は、オブジェクトの名前objectName（６行目）に基づいて、関連の管理ビーン情報、例えばMBeanInfoインスタンスを検索する前に、サーバ、例えばJMX MBeanServerインスタンス（５行目）への接続を構築し得る。
【００５５】
ＯＯＰ環境は、サーバから管理ビーン情報を取得する前にさまざまな条件が満たされることを確実にする必要があるであろう。例えば、JMX MBeanServerインスタンスが起動しているバーチャルマシーン、例えばＪＡＶＡバーチャルマシーン（JAVA virtual machine：ＪＶＭ）は、JMX MBeanServerが作成され得る前に始動される必要があるであろう。さらに、サーバ接続、例えばMbeanServerConnectionは、MBeanが登録された状態で利用可能である必要があるであろう。また、オブジェクト指向プログラミング言語環境は、IOException、InstanceNotFoundException、ClassCastExceptionなどのさまざまな他の例外に対処する必要もあるであろう。
【００５６】
本発明のさまざまな実施の形態によれば、オブジェクト指向プログラミング言語環境は、これらの条件が満たされ得ることを確実にするために、以下に示されるtryブロックを使用し得る。
【００５７】
【数１４】
2015516098.tif 000016
【００５８】
tryブロックを用いる上記のアプローチは、例えばスレッドがどれぐらいの時間スリープすべきであるのか、およびどのようにtryブロックが失敗または成功をより早期に決定できるようにすればよいのかといったさまざまな問題を引起こす可能性がある。また、再試行ループが多すぎると、コードが過度に複雑になり、理解するのが難しくなる可能性がある。
【００５９】
図２に定義されるような保証遅延タイプを用いて、DeferredJMXConnectorインスタンスが以下に作成され得る。
【００６０】
【数１５】
2015516098.tif 000017
【００６１】
そして、遅延したMBeanInfoが作成され得る。
【００６２】
【数１６】
2015516098.tif 000018
【００６３】
したがって、サーバから管理ビーン情報を取得するためのコードは、以下のように単純に実現可能である。
【００６４】
【数１７】
2015516098.tif 000019
【００６５】
上記に示されるように、保証遅延タイプを用いて、保証遅延タイプは、遅延タイプをパラメータとみなす保証方法に「待機」ロジックを分離することができる。さらに、保証遅延タイプは、ネスティングタイムアウトなしに、ネスティングされた遅延タイプを可能にする。
【００６６】
以下に示される実施例では、ＯＯＰ環境は、サービスが起動していることをアサートし得る。
【００６７】
【数１８】
2015516098.tif 000020
【００６８】
また、ＯＯＰ環境は、キャッシュＡおよびキャッシュＢという名前の２つのキャッシュが同等のものであることをアサートし得る。
【００６９】
【数１９】
2015516098.tif 000021
【００７０】
図４は、本発明の実施の形態に係るＯＯＰ環境において遅延参照をサポートするための例示的なフローチャートである。図４に示されるように、ステップ４０１において、ＯＯＰ環境は、将来利用可能になるオブジェクトに対して遅延参照を提供し得る。さらに、ステップ４０２において、遅延参照に基づいてオブジェクトを得るように呼び出し側から要求を受取った後、ＯＯＰ環境は、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返し得て、または、オブジェクトが現在のところ利用可能でない場合および／またはオブジェクトが利用可能にならない場合には呼び出し側に通知し得る。
【００７１】
図５は、本発明の実施の形態に係るＯＯＰ環境において遅延参照をサポートするための例示的なシステムの図である。図５に示されるように、システム５００は、インターフェース５１０と呼び出し側５０２とを備えるように示されている。呼び出し側５０２呼び出し側は、遅延参照に基づいてオブジェクトを得るように要求をインターフェース５１０に送ることができる。インターフェース５１０は、将来利用可能になるオブジェクトに対して遅延参照を提供することができ、呼び出し側から要求を受取った後、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すこと、ならびに、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知すること、のうちの１つを実行することができる。
【００７２】
インターフェース５１０は、オブジェクトが利用可能になるのを待っている間は、遅延参照に基づいてオブジェクトを要求するために呼び出し側５０２が用いる呼び出しスレッドをブロックすることを回避できる。また、インターフェース５１０は、オブジェクトが利用可能になる前に、オブジェクトがどのクラスに関連付けられるかについて呼び出し側５０２に知らせることができる。さらに、インターフェース５１０は、オブジェクトが現在のところ利用可能でない場合に、ランタイム例外を実行するか、またはヌル値を返すことができる。さらに、インターフェース５１０は、オブジェクトが利用可能にならない場合に、オブジェクト利用不可例外を実行することができる。インターフェース５１０は、遅延参照を別の遅延参照にネスティングすることを可能にし得る。
【００７３】
システム５１０は、ヘルパー５２０をさらに備え得る。ヘルパー５２０は、オブジェクトが利用可能になるのを呼び出し側５０２が最大期間だけ待つことを確実にすることができる。また、ヘルパー５２０は、オブジェクトに関連付けられるクラス定義に基づいてオブジェクトに対する遅延参照を作成することができる。さらに、ヘルパー５２０は、オブジェクトの記録動的プロキシを得て、オブジェクトの記録動的プロキシによって、最後に記録された呼び出しの遅延表現を提供することができる。
【００７４】
一実施の形態によれば、１つ以上のマイクロプロセッサ上で動作するオブジェクト指向プログラミング言語環境において遅延参照をサポートするためのシステムが開示されている。当該システムは、将来利用可能になるオブジェクトに対して遅延参照を提供するための手段と、遅延参照に基づいてオブジェクトを得るように呼び出し側から要求を受取った後、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すこと、ならびに、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知すること、のうちの１つを実行するための手段とを備える。
【００７５】
好ましくは、当該システムは、オブジェクトが利用可能になるのを待っている間は、遅延参照に基づいてオブジェクトを要求するために呼び出し側が用いる呼び出しスレッドをブロックすることを回避するための手段をさらに備える。
【００７６】
好ましくは、当該システムは、オブジェクトが利用可能になる前に、オブジェクトがどのクラスに関連付けられるかについて呼び出し側に知らせるための手段をさらに備える。
【００７７】
好ましくは、当該システムは、オブジェクトが現在のところ利用可能でない場合に、ランタイム例外を実行するか、またはヌル値を返すための手段をさらに備える。
【００７８】
好ましくは、当該システムは、オブジェクトが利用可能にならない場合に、オブジェクト利用不可例外を実行するための手段をさらに備える。
【００７９】
好ましくは、当該システムは、オブジェクトが利用可能になるのを呼び出し側が最大期間だけ待つことを確実にするための手段をさらに備える。
【００８０】
好ましくは、当該システムは、オブジェクトに関連付けられるクラス定義に基づいてオブジェクトに対する遅延参照を作成するための手段をさらに備える。
【００８１】
好ましくは、当該システムは、遅延参照を別の遅延参照にネスティングするための手段をさらに備える。
【００８２】
好ましくは、当該システムは、オブジェクトの記録動的プロキシを得るための手段と、オブジェクトの記録動的プロキシによって、最後に記録された呼び出しの遅延表現を提供するための手段とをさらに備える。
【００８３】
好ましくは、当該システムは、遅延オブジェクトが利用可能になったときにアプリケーションが通知されるようにするためのメカニズムを提供するための手段をさらに備える。
【００８４】
一実施の形態によれば、オブジェクト指向プログラミング言語環境において遅延参照をサポートするためのシステムが開示されている。当該システムは、将来利用可能になるオブジェクトに対して遅延参照を提供するように構成されたインターフェースと、遅延参照に基づいてオブジェクトを得るようにインターフェースに要求を送るように構成された呼び出し側とを備える。インターフェースは、呼び出し側から要求を受取った後、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すこと、ならびに、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知すること、のうちの１つを実行するようにさらに構成される。
【００８５】
好ましくは、インターフェースは、オブジェクトが利用可能になるのを待っている間は、遅延参照に基づいてオブジェクトを要求するために呼び出し側が用いる呼び出しスレッドをブロックすることを回避することができる。
【００８６】
好ましくは、インターフェースは、オブジェクトが利用可能になる前に、オブジェクトがどのクラスに関連付けられるかについて呼び出し側に知らせることができる。
【００８７】
好ましくは、インターフェースは、オブジェクトが現在のところ利用可能でない場合に、ランタイム例外を実行するか、またはヌル値を返すことができる。
【００８８】
好ましくは、インターフェースは、オブジェクトが利用可能にならない場合に、オブジェクト利用不可例外を実行することができる。
【００８９】
好ましくは、当該システムは、オブジェクトが利用可能になるのを呼び出し側が最大期間だけ待つことを確実にすることができるヘルパーをさらに備える。
【００９０】
好ましくは、当該システムは、オブジェクトに関連付けられるクラス定義に基づいてオブジェクトに対する遅延参照を作成することができるヘルパーをさらに備える。
【００９１】
好ましくは、インターフェースは、遅延参照を別の遅延参照にネスティングすることができる。
【００９２】
好ましくは、当該システムは、オブジェクトの記録動的プロキシを得て、オブジェクトの記録動的プロキシによって、最後に記録された呼び出しの遅延表現を提供することができるヘルパーをさらに備える。
【００９３】
図６は、本特徴を示すための機能ブロック図である。本特徴は、オブジェクト指向プログラミング言語環境において遅延参照をサポートするためのシステム６００として実現され得る。システム６００は、１つ以上のマイクロプロセッサ６１０と、１つ以上のマイクロプロセッサ６１０上で起動するインターフェース１１０とを含む。１つ以上のマイクロプロセッサ６１０は、将来利用可能になるオブジェクトに対して遅延参照を提供するように構成された提供部６２０と、遅延参照に基づいてオブジェクトを得るように呼び出し側から要求を受取った後、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側に返すこと、ならびに、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知することのうちの１つを実行するように構成された実行部６３０とを含む。実行部６３０は、リターン部６３１と、通知部６３２とを含む。リターン部６３１は、オブジェクトが利用可能である場合にはオブジェクトを呼び出し側にリターンする（返す）ように構成される。通知部６３２は、オブジェクトが現在のところ利用可能でない場合およびオブジェクトが利用可能にならない場合のうちの少なくとも１つの場合には呼び出し側に通知するように構成される。
【００９４】
本発明は、１つ以上のプロセッサ、メモリ、および／または本開示の教示に従ってプログラムされたコンピュータ読取可能な記録媒体を含む１つ以上の従来の汎用もしくは専用デジタルコンピュータ、計算装置、機械、またはマイクロプロセッサを用いて好都合に実現され得る。ソフトウェアの技術分野における当業者に明らかであるように、本開示の教示に基づいて、熟練したプログラマによって適切なソフトウェアコーディングが容易に準備され得る。
【００９５】
いくつかの実施の形態では、本発明は、コンピュータをプログラムして本発明のプロセスのいずれかを実行するために使用可能な命令を格納させた記録媒体またはコンピュータ読取可能な媒体であるコンピュータプログラム製品を含む。記録媒体としては、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、（分子メモリＩＣを含む）ナノシステムを含む任意のタイプのディスク、または、命令および／もしくはデータの格納に好適な任意のタイプの媒体もしくはデバイスを挙げることができるが、これらに限定されるものではない。
【００９６】
本発明の上記の説明は、例示および説明の目的で行われた。本発明の上記の説明は、網羅的であるよう意図したものではなく、開示されている厳密な形態に本発明を限定することを意図したものではない。多くの変形例および変更例が当業者に明らかであろう。本発明の原理およびその実際の適用を最もよく説明することによって、さまざまな実施の形態について、および意図される特定の用途に適したさまざまな変形例によって、本発明を当業者が理解できるようにするために、実施の形態は選択および説明された。本発明の範囲は、以下の特許請求の範囲およびそれらの等価物によって規定されることが意図されている。
【図２】
2015516098.tif 000022
【図３】
2015516098.tif 000023
【図４】
2015516098.tif 000024
【図５】
2015516098.tif 000025
【図６】
2015516098.tif 000026
【図１】
2015516098.tif 000027
【国際調査報告】
2015516098.tif 000028
2015516098.tif 000029
2015516098.tif 000030