JP2005209173A - 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法 - Google Patents

非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法 Download PDF

Info

Publication number
JP2005209173A
JP2005209173A JP2004370293A JP2004370293A JP2005209173A JP 2005209173 A JP2005209173 A JP 2005209173A JP 2004370293 A JP2004370293 A JP 2004370293A JP 2004370293 A JP2004370293 A JP 2004370293A JP 2005209173 A JP2005209173 A JP 2005209173A
Authority
JP
Japan
Prior art keywords
application
managed
change
application process
listener
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.)
Granted
Application number
JP2004370293A
Other languages
English (en)
Other versions
JP4000327B2 (ja
Inventor
Nedim Fresko
フレスコ ネディム
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 JP2005209173A publication Critical patent/JP2005209173A/ja
Application granted granted Critical
Publication of JP4000327B2 publication Critical patent/JP4000327B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

【課題】分離されたアプリケーションプロセスに対する動的集中制御を提供する。
【解決手段】本システム30は、マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも1つのアプリケーション33と、実行アプリケーションマネージャ31と論理的に通信するハンドラ36と、オブジェクト指向プログラムコードとして提供される通知可能オブジェクトに対応する1つ以上のコンストラクタ43を識別するためのローカルリスト46と、該マネージドアプリケーションプロセス32に変更リクエストをブロードキャストするための少なくとも1つの制御スレッドと、各識別されたコンストラクタ43によって追跡された該通知可能オブジェクト35にわたって繰り返され、該マネージドアプリケーションプロセス32中に挙動変更を生成するためのリスナ34とを備える。
【選択図】図2

Description

本発明は、一般に非同期挙動変更に関する。より詳細には、本発明は、非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法に関する。
マイクロプロセッサ設計および構成要素の集積化における最近の発展によって、広範囲のデバイスがますます複雑な機能および「ソフト」特徴を提供できるようになってきた。ソフト特徴は、デバイスの動作を強化およびカスタマイズするソフトウェアアプリケーションを含む。これらのデバイスは、デスクトップおよびラップトップコンピュータなどの標準の計算デバイス、情報携帯端末などの携帯計算デバイス、および携帯電話、ポケットベル、ゲーム機およびセットトップボックスなどの一般消費者向けデバイスを含む。大半のデバイスは、現在、ソフト特徴および他の拡張機能に対応するためのオペレーティングシステムを備える。
また、ソフトウェアのアップグレードが可能なこれらのデバイスによって提供される能力が増大されることで、ユーザはある種の期待をもつようになってきた。ユーザは、技術をよく知らず、そして遅かったりまたは一貫しないアプリケーション性能などの構造的問題によって起こされる性能の妥協に我慢できないことが多い。同様に、ユーザは、マルチタスクを介してシステムレベルで実装された別々のアプリケーションのホストにアクセスできることを一般に期待する。ユーザにとっては、広範囲に入手可能なソフトウェアアプリケーションが複数のマルチプラットホームにわたって一貫し、かつより多く利用できることで満足が得られる。しかし、ソフトウェア開発者にとっては、異なるコンピューティングプラットフォーム対する技術ソフトウェアアプリケーションは、開発コストが増大し、ならびに各対応アーキテクチャに対する常時対応およびアップグレード確約が必要となる。
マネージドコードプラットフォームは、マシンに依存せず、かつアーキテクチャ中立の動作環境を与えることによって、複数のプラットフォームへの対応を求めるソフトウェア開発者に1つの解決手段を提供する。マネージドコードプラットフォームは、ユーザアプリケーションとしてオペレーティングシステムによって実行されるプログラミング言語コンパイラおよびインタプリタを含む。しかし、これらは、互換アプリケーションが動作し得る仮想ランタイム環境を提供する。例えば、Java(登録商標)プログラミング言語によって書かれたアプリケーションは、Java(登録商標)仮想マシン(JVM)ランタイム環境と組み合わせられる場合に、マシン別環境およびコンフィグレーション設定に依存せず異種のコンピュータシステム上で動作し得る。Java(登録商標)プログラミング言語の概説は、非特許文献1に記載され、その開示は参考として援用される。JVMは、Java(登録商標)動作環境に対して重要な要素であり、メモリに制約のある一般消費者デバイスを含む計算デバイスの全範囲に移植され得る。
マネージドコードプラットフォームは、一般に1つのアプリケーションインスタンスの単調な実行のために設計される。マネージドコードプラットフォームおよびアプリケーションインスタンスの組み合わせは、アプリケーションプロセスを形成する。したがって、複数のアプリケーションプロセスは、複数の個々のアプリケーションに対してマルチタスク挙動をシミュレートするように実行され得る。各「マルチタスクされた」アプリケーションは、異なる仮想ランタイム環境を提供する別々のマネージドコードプラットフォームの下で実行する。次いで、各マネージドコードプラットフォームは、別々のプロセス空間において下層のオペレーティングシステムの制御下に実行する。マネージドコードプラットフォーム上の制限された制御は、プロセス間通信(IPC)などのオペレーティングシステムによって提供される機能および信号ハンドラなどの関連機構を使用して達成され得るが、同様の機能は、マネージドコードプラットフォーム下に実行する制御アプリケーションに対しては一般に利用可能でない。
アプリケーション制御はいくつかの理由のために利用可能でない。第1に、各アプリケーションは異なるソースから生成され得、かつ異なるアプリケーションモデル、プログラミング言語および動作仮定を使用してプログラミングされ得る。同様に、各アプリケーションは、マネージドコードプラットフォームによって提供される仮想ランタイム環境内で分離されており、かつプロセス間制御は、ランタイム環境内で動作する拡張ライブラリ機能を使用してアプリケーションに明示的にプログラムされなければならない。そのようなプログラム拡張は遅いことが多く、かつ互換性および相互運用性問題を起こす可能性がある。さらに、分離されたアプリケーションの実行は、一般に単純性、頑強性および効率性のために協調アプリケーション実行よりも好ましい。
それにもかかわらず、アプリケーションマネージャをしばしば使用して、ユーザリクエストに基づいてデバイス(特に一般消費者デバイス)上で実行する複数のアプリケーションプロセスに対して最低限の集中制御を提供する。しかし、その制御は、一般にアプリケーションの起動および終了に対して提供されるおおざっぱな制御に制限される。アプリケーションレベルの挙動特性に対するきめ細かな制御は、アプリケーション制御機能が利用可能でないので対応されない。例えば、アプリケーションのプロパティまたはユーザインタフェースの見た目や感じは、ランタイム環境によって動的に変更されるか、または一貫した体裁およびユーザの体験を確実にする必要があり得る。しかし、アプリケーション間制御機能がないとそのようなランタイム変更が可能でない。
したがって、分離されたアプリケーションプロセスに対する動的集中制御を提供するアプローチが求められる。好ましくは、そのようなアプローチは異なるアプリケーション実行を生成することなく各アプリケーションプロセスに対して非同期変更を生成し得る。さらに、そのようなアプリケーションはさらに、各アプリケーションプロセスが明示的な協調なしに進行することが可能なようにしながら挙動変更を通信するフレキシブルな機構を提供し得る。
P.van der Linden、「Just Java(登録商標)」、第1章、Sun Microsystems社(第2版、1997)
アプリケーションマネージャおよびマネージドコードプラットフォームは、複数かつ独立の分離ユーザアプリケーションの生成をサポートするアプリケーションフレームワークにおいて実行される。マネージドコードプラットフォームは、マシン移植可能コード定義互換アプリケーションをインタープリットするための仮想マシンなどのランタイムシステムプロセスを含む。各実行アプリケーションおよびランタイムシステムプロセス対は、マネージドアプリケーションプロセスを構成する。アプリケーションマネージャは、専用制御スレッドなどのプロセス間通信(IPC)機構を実装するリスナを介してランタイムシステムプロセスに非同期にアクセスする。このリスナのインスタンスは、各マネージドアプリケーションプロセスにアドレス空間に存在する。リスナは、「ハンドル」を介してアプリケーションマネージャによってアクセス可能である。例えば、TCP/IPは、アプリケーションマネージャとマネージドアプリケーションプロセスとの間のIPC機構として使用され得、かつハンドルは、TCPポート番号として指定される。ランタイムシステムプロセスコンテクストは、1セットの通知オブジェクトを含む。これらは、ランタイムシステムプロセスにおいて実行するアプリケーションに挙動変更をトランスペアレントに課すために使用される。適切なマネージドコードプラットフォームおよびマネージドアプリケーションプロセスの一例は、サンマイクロシステムズ(Palo Alto、CA)によってライセンスされるJava(登録商標)オペレーティング環境およびJava(登録商標)仮想マシン(JVM)アーキテクチャである。
一つの実施形態は、マネージドアプリケーションプロセスに非同期挙動変更を誘導するためのシステムおよび方法を提供する。アプリケーションマネージャが実行される。マネージドアプリケーションプロセスが実行される。マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも1つのアプケーションが実行される。マネージドアプリケーションプロセスは、アプリケーションマネージャプロセスと論理的に通信する。通知オブジェクトのクラスに対応する1以上のコンストラクタが識別される。各そのようなコンストラクタは、実行時に、新しく構築した対象通知オブジェクトをリストに載せる。変更リクエストは、マネージドアプリケーションプロセスにブロードキャストされる。コンストラクタによってトランスペアレントにトラッキングされた通知オブジェクトは繰り返され、マネージドアプリケーションプロセスにおける挙動変更を生成する。
挙動変更は、マネージドアプリケーションプロセスの一部としてランタイムシステムプロセスにおいて実行する非協調アプリケーションに対してトランスペアレントに実行される。リスナおよびトランスペアレントにトラッキング通知オブジェクトを使用して、挙動変更は、個別の実行アプリケーションの表現協調(express cooperation)に独立かつそれなしにマネージドアプリケーションプロセスを実行する際にアプリケーションマネージャによって生成され得る。
本発明のさらに別の実施形態は、以下の詳細な説明から当業者に容易に理解される。以下においては、本発明を実施するために最も好適な実施形態を例示する。本発明はそのすべてが、本発明の意図および範囲から逸脱せずに、他の異なる実施形態が可能であり、かつその詳細は種々の自明な点において変更可能であることが理解される。したがって、図面および詳細な説明は本質的に例示とみなされ、限定を意図しない。
したがって、本発明は以下を提供する。
1.マネージドアプケーションプロセス中に非同期挙動変更を誘導するためのシステムであって、マネージドアプリケーションプロセスは、マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも1つのアプリケーションと、実行アプリケーションマネージャと論理的に通信するハンドラと、オブジェクト指向プログラムコードとして提供される通知可能オブジェクトに対応する1つ以上のコンストラクタを識別するためのローカルリストと、該マネージドアプリケーションプロセスに変更リクエストをブロードキャストするための少なくとも1つの制御スレッドと、各識別されたコンストラクタによって追跡された該通知可能オブジェクトにわたって繰り返され、該マネージドアプリケーションプロセス中に挙動変更を生成するためのリスナとを備える、システム。
2.前記リスナを特定するための制御スレッドであって、該制御スレッドが前記変更リクエストの受信に対してスリープ状態にされる、制御スレッドをさらに備える、項目1に記載のシステム。
3.前記制御スレッド上に定義されたシステム中の前記アプリケーションマネージャから情報が通信される、項目2に記載のシステム。
4.前記ハンドラはTCPソケットを備え、かつそのストリームはTCPストリームを備える、項目3に記載のシステム。
5.前記通知可能オブジェクトに対応し、かつガービッジコレクションに対して該通知可能オブジェクトの適格性を特定する1つ以上のコンストラクタをさらに備える、項目1に記載のシステム。
6.少なくとも1つの前記通知可能オブジェクトを介して変更された前記少なくとも1つのアプリケーションと関連づけられた少なくとも1つのプロパティをさらに備える、項目1に記載のシステム。
7.前記少なくとも1つのプロパティ変更を特定するための少なくとも1つのプロパティ変更リスナをさらに備える、項目6に記載のシステム。
8.前記変更リクエストの受信に対して通知される前記少なくとも1つのプロパティ変更リスナをさらに備える、項目7に記載のシステム。
9.前記少なくとも1つの通知可能オブジェクトを介して変更される前記少なくとも1つのアプリケーションと関連付けられた少なくとも1つの見た目および感じ特性を備える、項目6に記載のシステム。
10.前記少なくとも1つの見た目および感じ特性変更を特定するための少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントをさらに備える、項目9に記載のシステム。
11.前記変更リクエストの受信に対して少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントをさらに備える、項目10に記載のシステム。
12.前記少なくとも1つの見た目および感じ特性変更の完了し、前記変更リクエストの受信に対して前記少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントを待ち行列にいれて一時的に実行を遅らせる行列、および該変更リクエストの受信に対して該少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントを直ちに実行するプロセススレッドのうちの少なくとも1つを備える、項目11に記載のシステム。
13.前記オブジェクト指向プログラムコードは、Java(登録商標)プログラミング言語で書かれる、項目1に記載のシステム。
14.前記マネージドコードプラットフォームは、Java(登録商標)仮想マシンである、項目1に記載のシステム。
マネージドアプリケーションプロセスにおいて非同期挙動変更を誘導するためのシステムおよび方法が提供される。アプリケーションマネージャプロセスが実行される。マネージドアプリケーションプロセスが実行される。マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも1つのアプリケーションが実行される。マネージドアプリケーションプロセスは、アプリケーションマネージャプロセスと論理的に通信する。オブジェクト指向プログラムコードとして提供される通知可能オブジェクトに対応する1つ以上のコンストラクタが識別される。各コンストラクタは、マネージドアプリケーションプロセスにおいてリスト中のインスタンス化された通知可能オブジェクトを追跡する。変更リクエストがマネージドアプリケーションプロセスにブロードキャストされる。各識別されたコンストラクタによって追跡された通知可能オブジェクトは繰り返されてマネージドアプリケーションプロセスにおける挙動変更を生成する。
(システム概要)
図1は、例として、複数の異種デバイス上に実施されるランタイム環境(RTE)14、22、24、26を示す機能ブロック図10である。各異種デバイス11は、ランタイム環境14、22、24、26において実行するJava(登録商標)動作環境などのマネージドコードプラットフォームを提供する。1つ以上のアプリケーション27は、ランタイム環境14、22、24、26において実行し得、かつ各実行アプリケーション27およびランタイム環境14、22、24、26の対はマネージドアプリケーションプロセス28を構成する。これらは以下に図2を参照してさらに説明する。異種デバイス11は、非排他的に、デスクトップまたはラップトップコンピュータシステムなどのクライアントコンピュータシステム13を含む。各クライアント13は、格納デバイス15に動作可能に結合され、かつデータ構造およびデータ上で動作する数セットの方法を特定するコードモジュールをそれぞれ定義する1セットのクラス16およびクラスライブラリ17、およびシェア可能なモジュールの集まりを維持する。異種デバイス11はまた、個人データアシスタント21、および一般消費者デバイス(携帯電話23およびセットトップボックス(STB)25など)を含む携帯コンピューティングデバイスを含む。最後に、サーバ18は、グローバルにシェア可能なクラスライブラリ20が維持される格納デバイス19に動作可能に結合される。異種デバイス11のそれぞれは、従来のハードウェアに組み込まれたワイヤレスネットワークコンフィギュレーションを含むネットワーク12を介してインタフェースをとり得る。他のタイプの異種デバイス11および種々のネットワークコンフィギュレーション、構成、およびトポロジーが可能である。
各異種デバイス11は、リソースを管理し、周辺デバイスへのアクセスを提供し、メモリリソースを割り当て、かつプログラムの実行および終了を制御するためのオペレーティングシステムを含む。1つの実施形態において、各オペレーティングシステムは、特定可能プロセスのメモリ空間をクローン化することによって複数かつ独立な個別ユーザアプリケーションを生成するプロセスクローン化機構に対応する。このことは、同一人に譲渡された米国特許出願シリアル番号10/745,023、発明の名称「System And Method For Dynamic Preloading Of Classes Through Memory Space Cloning Of A Master Runtime System Process」(2003年12月22日出願、係属中)、シリアル番号10/745,020、発明の名称「System And Method For Providing Precompiled Code Through Memory Space Cloning Of A Master Runtime System Process」(2003年12月22日出願、係属中)、およびシリアル番号10/745,021、発明の名称「System And Method For Eliminating Static Initialization Overhead By Memory Space Cloning Of A Master Runtime System Process」(2003年12月22日出願、係属中)に記載される。これらの開示は本明細書中において参考として援用される。本発明の使用に適切なプロセスクローン化機構の例は、Unix(登録商標)またはLinuxオペレーティングシステムによって提供されるfork()システムコールである。これは、M.J. Bach,「The Design Of The Unix(登録商標) Operating System」 Ch. 7, Bell Tele. Labs., Inc. (1986)などに記載され、その開示は本明細書中において参考として援用される。fork()を呼び出すプロセスは親プロセスとして知られ、かつ新たに生成されたプロセスは子プロセスと呼ばれる。オペレーティングシステムは、個別のプロセス識別子を子プロセスに割当てる。子プロセスは個別のプロセスとして実行する。オペレーティングシステムはまた、親プロセスのメモリ空間を子プロセスのメモリ空間にコピーすることによって親プロセスのコンテクストの論理コピーを生成する。fork()システムコールのコピーオンライト変形例において、オペレーティングシステムは、メモリ空間への参照をコピーするだけであり、そして子プロセスが親プロセスコンテクストの参照されたデータの変更を試みるまで、および試みたならば、個々のメモリ空間セグメントの実際のコピーを遅らせる。コピーオンライトfork()システムコールは、非コピーオンライトfork()システムコールより速く、かつ親および子プロセスの間に書き込まれないいずれのデータも暗黙的に共有する。
(非同期挙動変更を誘導するためのシステム)
図2は、本発明による、マネージドアプリケーションプロセス34において非同期挙動変更を誘導するためのシステム30を示すブロック図である。システム30は、アプリケーションマネージャ31および1つ以上のマネージドアプリケーションプロセス32を実行するランタイム環境を含む。マネージドアプリケーションプロセス32は、マシン移植可能コード定義互換アプリケーションおよび1つ以上の実行アプリケーション33をインタープリットするJava(登録商標)仮想マシンなどのマネージドコードプラットフォームを含む。格納デバイス30は、全コアマネージドコードプラットフォームを形成する個別のクラス40およびクラスライブラリ42を常に格納する。例として、Java(登録商標)動作環境を参照してシステムを記載したが、Java(登録商標)プログラミング言語などのオブジェクト指向プログラミング言語で好ましきくは書かれたアプリケーションを実行する他の形態のマネージドコードプラットフォームもまた使用され得る。
アプリケーションマネージャ31は、ユーザインタフェースを提供し、それを介して個別のアプリケーションがユーザによって選択および実行され得る。ランタイム時に、アプリケーションマネージャ31は、リスナ34を介してマネージドアプリケーションプロセス32に対して通信可能にインタフェースをとられる。アプリケーションマネージャ31は、リスナ34、およびマネージドアプリケーションプロセスコンテクストにおいてインスタンス化されかつそのコンストラクタによってリスト中をトランスペアレントに追跡された1つ以上の通知可能オブジェクト35の組み合わせを介して間接的にアプリケーション33において挙動変更を誘導する。
リスナ34は、アプリケーションマネージャ31から論理通信チャネルを提供する。論理通信チャネルを介して挙動変更はメッセージ(「Msg」)において1つ以上のマネージドアプリケーションプロセス32に非同期的に「ブロードキャスト」され得る。アプリケーションマネージャ31は、アプリケーション起動リスト44において起動されたマネージドアプリケーションプロセス32を記録する。挙動変更を開始する際、アプリケーションマネージャ32は、アプリケーション起動リスト44上で繰り返し、そしてすべての生成されたマネージドアプリケーションプロセス32のリスナ34に同じメッセージ38を送信する。メッセージ38は、アプリケーションの特性またはユーザインタフェースの見た目および感じの変更などの変更リクエストの性質を識別する。変更リクエストの他のタイプも可能である。
アプリケーションマネージャ31は、リスナ34上に定義されたハンドル36を介して各マネージドアプリケーションプロセス32にアクセスする。アプリケーションマネージャ31は、リスナハンドルリスト45中にリスナハンドル36を記録する。リスナ34は、マネージドアプリケーションのアドレス空間中に存在し、かつ変更がアプリケーションマネージャ34によってリクエストされるまでイナクティブにとどまる専用コントロールスレッドを含む。このことは以下に図5を参照して説明する。上記の実施形態において、リスナ34は、TCPなどのIPC機構を介して提供され、かつTCPソケットなどのソケットとして定義されるハンドル36を含む。ハンドル36は、マネージドアプリケーションプロセス32上の専用ポート番号として特定され得る。
通知可能オブジェクト35は、マネージドアプリケーションプロセス32のマネージドプラットフォームのコンテクストにおいてインスタンス化される。通知可能オブジェクト35に対するコンストラクタ41、43は、クラス40およびクラスライブラリ42において定義されるクラスにおいて定義される。マネージドアプリケーションプロセス32は、通知可能オブジェクト35のタイプに対してコンストラクタ41、43を使用して各インスタンス化通知可能オブジェクト35をマネージドアプリケーションプロセス31中のローカルリスト46に入れる。これらのコンストラクタ41、43は、クラス40、42中にアーキテクトされ、上記の追跡に対応するために必要な機能を含む。クラス40、42は、引き続きプログラミングモデル予想を満足するが、さらなる追跡および変更機能を補填される。例えば、ある周知のライブラリがしばしばアプリケーション33によって使用され、かつライブラリを定義するために必要なソースコードの実装がアプリケーションクラスではなくシステムクラスとして一般に特定される。したがって、ライブラリは予想される機能を提供し、かつリスト46中の通知オブジェクト35を追跡するための機能をまた含むために書かれるので、挙動変更がアプリケーション実行に対してトランスペアレントに生じることが可能となる。さらなる実施形態において、各クラス40、42はまた、ガーベッジコレクションのために通知可能オブジェクトの適格性を検出し得るファイナライザを定義する。次いで、ファイナライザ方法は、通知可能オブジェクト35がガーベッジコレクタによって取り戻されるところなので、それぞれの追跡リストから通知可能オブジェクト35を除去し得る。
挙動変更を初期化するために、アプリケーションマネージャ31は、挙動変更を生成するために必要な通知可能オブジェクト35のタイプを識別するメッセージ38を送信する。次いで、リスナ34は、ローカルリスト46において追跡されるように識別されたタイプの割り当てられた通知可能オブジェクト35にわたって繰り返えされ、かつアプリケーションマネージャ31に代わって挙動変更をトランスペアレントに生成する。
(非同期制御およびデータ交換)
図3A〜Cは、例として、アプリケーションマネージャ62と複数のマネージドアプリケーションプロセス63、65、67との間の非同期制御およびデータ交換を示す機能ブロック図である。アプリケーションマネージャ62およびマネージドアプリケーションプロセス63、65、67はすべて、ランタイム環境61において実行する。まず図3Aを参照すると、各マネージドアプリケーションプロセス63、65、67は、通知可能オブジェクトのタイプに対応するコンストラクタ69を使用して、通知可能オブジェクトをローカルリスト中に追跡する。
次に図3Bを参照すると、アプリケーションマネージャ62は、メッセージ38をマネージドアプリケーションプロセス63、65、67のそれぞれに非同期「ブロードキャスト」71を介して転送することによって挙動変更を誘導することを開始する。非同期ブロードキャスト71は、各マネージドアプリケーションプロセス63、65、67中に実装されたリスナ(「L」)64、66、68によって受信される。ブロードキャスト71は2つの機能を提供する。1つ目は、ブロードキャスト71が各マネージドアプリケーションプロセス63、65、67にアプリケーションマネージャ62が挙動変更をリクエストしていることを通知することである。2つ目は、ブロードキャスト71がリクエストされた挙動変更のタイプを識別することである。例として、変更は各マネージドアプリケーションの性質または見た目や感じ特性を生成し得る。他のタイプの変更も可能である。
最後に図3Cを参照すると、個別のマネージドアプリケーションプロセス63、65、67はリクエストされた挙動変更を実施する。各マネージドアプリケーションプロセス63、65、67によるアクションのタイプは、各通知可能オブジェクト69を定義するコードに左右される。リスナ64、66、68は、各セットの追跡された通知可能オブジェクトを各マネージドアプリケーションプロセス63、65、67の対応のアドレス空間において見出し、そして通知可能オブジェクトにわたって繰り返して挙動変更を生成する役割を果たす。他のタイプのアクションが可能である。
(非同期挙動変更を誘導するための方法)
図4は、本発明にしたがってマネージドアプリケーションプロセス中に非同期挙動変更を誘導するための方法90を示す。方法100は、例えば図2のランタイム環境31および他のコンポーネントによって実行され得る一シーケンスのプロセス動作またはステップとして記載される。
まず、アプリケーションマネージャ31がロードされる(ブロック91)。誘導された挙動変更を開始する際、アプリケーションマネージャ31は、挙動変更を生成するために必要な通知可能オブジェクト35のタイプを識別する(ブロック92)。次いで、アプリケーションマネージャ31は、生成されたマネージドアプリケーションプロセス32のすべてのリスナ34を各マネージドアプリケーションプロセス32上にそれぞれ定義されたハンドル36を介して呼び出す(ブロック96)。次いで、挙動変更を記載するメッセージ38は、マネージドアプリケーションプロセス32にブロードキャストされる(ブロック94)。処理は、アプリケーションマネージャ31が終了するまでいつまでも続く。
(マネージドアプリケーションプロセスを実行するためのルーチン)
図5は、図4の方法90において使用するためのマネージドアプリケーションプロセス32を実行するためのルーチン100を示す。このルーチンの方法は、アプリケーションマネージャ31から受信された変更リクエストに応答して非同期挙動変更を開始することである。
まず、アプリケーション33は、マネージドアプリケーションプロセス32のマネージドコードプラットフォームによって実行される(ブロック101)。ハンドル36が生成され、そして専用制御スレッドがハンドル31をリッスンするマネージドアプリケーションプロセス32において開始される(ブロック102)。マネージドスレッドは、イナクティブスリープモードに入る(ブロック103)。アプリケーションマネージャ32から変更リクエストを受信すると(ブロック104)、制御スレッドは起動し(ブロック105)、そして誘導された挙動変更を処理する(ブロック106)。このことは以下に図16を参照して説明する。処理は、マネージドアプリケーションプロセス32が終了するまでいつまでも続く。
(変更を処理するためのルーチン)
図6は、例として、図5のルーチン100において使用するための誘導された非同期挙動変更を処理するためのルーチン100を示すフロー図である。このルーチンの1つの目的は、通知可能オブジェクト110、111の実行を介してマネージドアプリケーションプロセス102上に挙動変更を生成することである。実行は、リスナ34がアプリケーションマネージャ31からブロードキャストされたメッセージ38を受信した場合に、リスナ34によって引き起こされる。次いで、リスナ34は、各セットの通知可能オブジェクトをマネージドアプリケーションプロセス32の対応のアドレス空間において見出し、そして通知可能オブジェクトにわたって繰り返して挙動変更を生成する役割を果たす。
まず、リクエストされた挙動変更のタイプが識別される(ブロック101)。一実施形態において、1つ以上の登録されたプロパティ変更リスナ(ブロック114)を識別(ブロック113)しそして通知することによってマネージドアプリケーションプロセス32のプロパティへの変更が生成され得る(ブロック112)。
さらなる実施形態において、マネージドアプリケーションプロセス32のユーザインタフェースの見た目および感じ特性への変更が生成され得る(ブロック116)。リクエストされた変更が有効な見た目および感じクラス(ブロック116)を識別し、かつそのクラスが現在の見た目および感じクラスと異なる(ブロック117)ならば、見た目および感じ挙動変更が必要である。マネージドアプリケーションプロセス32は、各登録されたトップレベルユーザインタフェースコンポーネントにわたって繰り返され(ブロック118〜120)、そして見た目および感じ変更メッセージを送信する(ブロック119)。次いで、変更は、使用されるツールキットに適切なように生成される。例えば、変更は、実行を一時的に遅らせるために待ち行列に入れられるか、または直ちに実行される。変更の生成に続いて、次いでルーチンが戻る。
例として、アプリケーションマネージャ32によって送信されたメッセージ38が「PROPERTY_CHANGE propertyName=値」を含むならば、リスナ34は<propertyName>に対して登録されたこれらの変更リスナを識別し、そしてpropertyChanged()コールを使用して各プロパティ変更リスナを通知する。
さらなる例として、アプリケーションマネージャ32によって送信されたメッセージ38が「LANDF_CHANGE lookAndFeelClassName」を含むならば、リスナ34は、<lookAndFeelClassName>が有効であり、かつ現在の見た目および感じと異なるかどうかを判断する。変更が必要ならば、リスナ34は、すべての登録されたトップレベルユーザインタフェースコンポーネントにわたって繰り返えされ、そして見た目および感じ変更メッセージを送信する。他のタイプの挙動変更が可能である。
本発明を実施の形態を参照して詳細に記載したが、形態や詳細における前記およびその他の変更は本発明の意図および範囲を逸脱せずになされ得ることが当業者には理解される。
例として、複数の異種デバイス上に実装されたランタイム環境を示す機能ブロック図である。 本発明による、マネージドアプリケーションプロセスにおいて非同期挙動変更を誘導するためのシステムを示すブロック図である。 例として、アプリケーションマネージャと複数のマネージドアプリケーションプロセスとの間の非同期制御およびデータ交換を示す機能ブロック図である。 例として、アプリケーションマネージャと複数のマネージドアプリケーションプロセスとの間の非同期制御およびデータ交換を示す機能ブロック図である。 例として、アプリケーションマネージャと複数のマネージドアプリケーションプロセスとの間の非同期制御およびデータ交換を示す機能ブロック図である。 本発明にしたがってマネージドアプリケーションプロセス中に非同期挙動変更を誘導するための方法を示す。 図4の方法において使用するためのマネージドアプリケーションプロセスを実行するためのルーチンを示す。 例として、図5のルーチンにおいて使用するための誘導された非同期挙動変更を処理するためのルーチンを示すフロー図である。

Claims (14)

  1. マネージドアプケーションプロセス中に非同期挙動変更を誘導するためのシステムであって、
    マネージドアプリケーションプロセスは、
    マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも1つのアプリケーションと、
    実行アプリケーションマネージャと論理的に通信するハンドラと、
    オブジェクト指向プログラムコードとして提供される通知可能オブジェクトに対応する1つ以上のコンストラクタを識別するためのローカルリストと、
    該マネージドアプリケーションプロセスに変更リクエストをブロードキャストするための少なくとも1つの制御スレッドと、
    各識別されたコンストラクタによって追跡された該通知可能オブジェクトにわたって繰り返され、該マネージドアプリケーションプロセス中に挙動変更を生成するためのリスナと
    を備える、システム。
  2. 前記リスナを特定するための制御スレッドであって、該制御スレッドが前記変更リクエストの受信に対してスリープ状態にされる、制御スレッドをさらに備える、請求項1に記載のシステム。
  3. 前記制御スレッド上に定義されたシステム中の前記アプリケーションマネージャから情報が通信される、請求項2に記載のシステム。
  4. 前記ハンドラはTCPソケットを備え、かつそのストリームはTCPストリームを備える、請求項3に記載のシステム。
  5. 前記通知可能オブジェクトに対応し、かつガービッジコレクションに対して該通知可能オブジェクトの適格性を特定する1つ以上のコンストラクタをさらに備える、請求項1に記載のシステム。
  6. 少なくとも1つの前記通知可能オブジェクトを介して変更された前記少なくとも1つのアプリケーションと関連づけられた少なくとも1つのプロパティをさらに備える、請求項1に記載のシステム。
  7. 前記少なくとも1つのプロパティ変更を特定するための少なくとも1つのプロパティ変更リスナをさらに備える、請求項6に記載のシステム。
  8. 前記変更リクエストの受信に対して通知される前記少なくとも1つのプロパティ変更リスナをさらに備える、請求項7に記載のシステム。
  9. 前記少なくとも1つの通知可能オブジェクトを介して変更される前記少なくとも1つのアプリケーションと関連付けられた少なくとも1つの見た目および感じ特性を備える、請求項6に記載のシステム。
  10. 前記少なくとも1つの見た目および感じ特性変更を特定するための少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントをさらに備える、請求項9に記載のシステム。
  11. 前記変更リクエストの受信に対して少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントをさらに備える、請求項10に記載のシステム。
  12. 前記少なくとも1つの見た目および感じ特性変更の完了し、
    前記変更リクエストの受信に対して前記少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントを待ち行列にいれて一時的に実行を遅らせる行列、および
    該変更リクエストの受信に対して該少なくとも1つの登録されたトップレベルユーザインタフェースコンポーネントを直ちに実行するプロセススレッド
    のうちの少なくとも1つを備える、請求項11に記載のシステム。
  13. 前記オブジェクト指向プログラムコードは、Java(登録商標)プログラミング言語で書かれる、請求項1に記載のシステム。
  14. 前記マネージドコードプラットフォームは、Java(登録商標)仮想マシンである、請求項1に記載のシステム。
JP2004370293A 2003-12-22 2004-12-21 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法 Active JP4000327B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/745,019 US7421707B2 (en) 2003-12-22 2003-12-22 System and method for inducing asynchronous behavioral changes in a managed application process

Publications (2)

Publication Number Publication Date
JP2005209173A true JP2005209173A (ja) 2005-08-04
JP4000327B2 JP4000327B2 (ja) 2007-10-31

Family

ID=34634526

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004370293A Active JP4000327B2 (ja) 2003-12-22 2004-12-21 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法

Country Status (4)

Country Link
US (1) US7421707B2 (ja)
EP (1) EP1557757A3 (ja)
JP (1) JP4000327B2 (ja)
CN (1) CN100343811C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007058241A1 (ja) * 2005-11-21 2007-05-24 Nec Corporation サーバモードにおける(u)simカードとクライアントとの通信方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100587563B1 (ko) * 2004-07-26 2006-06-08 삼성전자주식회사 상황인지 서비스를 제공하는 장치 및 방법
US7457671B2 (en) * 2004-09-30 2008-11-25 Rockwell Automation Technologies, Inc. Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution
US7979405B2 (en) 2005-01-14 2011-07-12 Microsoft Corporation Method for automatically associating data with a document based on a prescribed type of the document
US7966286B2 (en) 2005-02-14 2011-06-21 Microsoft Corporation Hierarchical management of object schema and behavior
US20070136201A1 (en) * 2005-12-12 2007-06-14 Google Inc. Customized container document modules using preferences
US8185819B2 (en) 2005-12-12 2012-05-22 Google Inc. Module specification for a module to be incorporated into a container document
US8677319B2 (en) * 2006-07-25 2014-03-18 International Business Machines Corporation Computer method and system for composite state management of software change requests
US20090006996A1 (en) * 2006-08-07 2009-01-01 Shoumen Saha Updating Content Within A Container Document For User Groups
US8407250B2 (en) 2006-08-07 2013-03-26 Google Inc. Distribution of content document to varying users with security customization and scalability
US8185830B2 (en) * 2006-08-07 2012-05-22 Google Inc. Configuring a content document for users and user groups
US8954861B1 (en) 2006-08-07 2015-02-10 Google Inc. Administrator configurable gadget directory for personalized start pages
US8261263B2 (en) * 2006-11-30 2012-09-04 International Business Machines Corporation JVM system scope initializer
US20080282205A1 (en) * 2007-02-06 2008-11-13 Access Systems Americas, Inc. Unified launcher user interface system and method for integrating multiple disparate environments on an electronic device
US8073882B2 (en) 2007-07-11 2011-12-06 Mats Stefan Persson Method, system and computer-readable media for managing software object handles in a dual threaded environment
US20090210882A1 (en) * 2008-02-18 2009-08-20 International Business Machines Corporation System and methods for asynchronously updating interdependent tasks provided by disparate applications in a multi-task environment
CN101882067B (zh) * 2009-05-08 2014-02-19 上海科泰世纪科技有限公司 实现函数托管的方法和装置
US10270671B2 (en) * 2015-09-22 2019-04-23 Microsoft Technology Licensing, Llc External process user interface isolation and monitoring
CN108595220B (zh) * 2018-04-25 2021-04-16 上海掌门科技有限公司 应用组件的处理方法、设备及计算机可读存储介质
US12001391B2 (en) 2021-09-16 2024-06-04 Cohesity, Inc. Managing objects stored at a remote storage
US20230244633A1 (en) * 2022-01-31 2023-08-03 Cohesity, Inc. Extending an expiration time of an object associated with an archive

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266716B1 (en) * 1998-01-26 2001-07-24 International Business Machines Corporation Method and system for controlling data acquisition over an information bus
US6154681A (en) * 1998-04-03 2000-11-28 Johnson Controls Technology Company Asynchronous distributed-object building automation system with support for synchronous object execution
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
EP0967549A3 (en) * 1998-06-24 2002-02-13 Intellution Inc. Processing asynchronously called operations of objects
US7194743B2 (en) * 2000-12-12 2007-03-20 Citrix Systems, Inc. Methods and apparatus for communicating changes between a user interface and an executing application using property paths

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007058241A1 (ja) * 2005-11-21 2007-05-24 Nec Corporation サーバモードにおける(u)simカードとクライアントとの通信方法

Also Published As

Publication number Publication date
US7421707B2 (en) 2008-09-02
EP1557757A2 (en) 2005-07-27
JP4000327B2 (ja) 2007-10-31
CN100343811C (zh) 2007-10-17
CN1797346A (zh) 2006-07-05
US20050138640A1 (en) 2005-06-23
EP1557757A3 (en) 2005-11-30

Similar Documents

Publication Publication Date Title
JP4000327B2 (ja) 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法
JP5496683B2 (ja) カスタマイズ方法及びコンピュータシステム
US6519594B1 (en) Computer-implemented sharing of java classes for increased memory efficiency and communication method
Yokote et al. A Reflective Architecture for an Object-Oriented Distributed Operating System.
US7421698B2 (en) System and method for dynamically and persistently tracking incremental profiling data in a process cloning application environment
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
US6996829B2 (en) Handling callouts made by a multi-threaded virtual machine to a single threaded environment
US7293267B1 (en) System and method for performing speculative initialization of application models for a cloned runtime system process
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
US20210224100A1 (en) Virtual machine migration using multiple, synchronized streams of state data
JP5969610B2 (ja) ポータブルコンピューティングデバイスにおける分散リソース管理
KR20060117869A (ko) 파티션 버스
CA2577493A1 (en) Operating systems
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
JP2010288301A (ja) ポータブルデバイスにおけるマルチメディアレンダリングのためのシステム
US7426720B1 (en) System and method for dynamic preloading of classes through memory space cloning of a master runtime system process
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US7343603B1 (en) System and method for performing incremental initialization of a master runtime system process
KR20060063643A (ko) 운영 체제의 성능을 향상시키는 방법 및 시스템
US20040117568A1 (en) Bridging memory access across pre-boot and runtime phases
JP2009506467A (ja) 仮想マシンにおける並行タスクのためのイベント処理
JP2007507779A (ja) オペレーティングシステム
JPH11224203A (ja) リモートオブジェクトコール方法、コンピュータ読み取り可能な記憶媒体、リモートオブジェクトコール処理方法、及び分散型コンピュータネットワークシステム
US7124291B1 (en) System and method for eliminating static initialization overhead by memory space cloning of a master runtime system process
US7254817B2 (en) Apparatus and methods for integrating APIs for program execution management

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070627

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070813

R150 Certificate of patent or registration of utility model

Ref document number: 4000327

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110817

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110817

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120817

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130817

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250