(57)【特許請求の範囲】
【請求項１】
マネージドアプリケーションプロセスの動作を変更するシステムであって、
アプリケーションマネージャ（３１）と、
複数のマネージドアプリケーションプロセス（３２）であって、該複数のマネージドアプリケーションプロセス（３２）の各々は、
オブジェクト指向プログラムコードとして提供される少なくとも１つのアプリケーション（３３）と、
該少なくとも１つのアプリケーションを実行するマネージドコードプラットフォームと、
該アプリケーションマネージャと論理的に通信するためのハンドル（３６）を含んでいるリスナ（３４）と、
オブジェクト指向プログラムコードとして提供される１つ以上の通知可能オブジェクト（３５）と
を備え、該アプリケーションマネージャは、該マネージドアプリケーションプロセスに変更リクエストをブロードキャストし、各リスナは、自身のローカルリストにおいて該通知可能オブジェクトにわたって繰り返されて、該マネージドアプリケーションプロセスの動作を変更する、複数のマネージドアプリケーションプロセス（３２）と、
該１つ以上の通知可能オブジェクトに対応する１つ以上のコンストラクタを識別するローカルリスト（４６）と、
該１つ以上の通知可能オブジェクトを介して変更される該少なくとも１つのアプリケーションと関連した少なくとも１つのプロパティと、
該１つ以上の通知可能オブジェクトを介して変更される該少なくとも１つのアプリケーションと関連した少なくとも１つの見た目および感じ特性と、
該少なくとも１つの見た目および感じ特性の変更を特定するインタフェースをユーザに提供する少なくとも１つの登録されたユーザインタフェースコンポーネントであって、該リスナは、該変更リクエストの受信に対して、該少なくとも１つの登録されたユーザインタフェースコンポーネントの各々にわたって繰り返される、少なくとも１つの登録されたユーザインタフェースコンポーネントと、
該変更リクエストの受信に対して該少なくとも１つの登録されたユーザインタフェースコンポーネントを待ち行列に入れて一時的に実行を遅らせる行列と、
該変更リクエストの受信に対して該少なくとも１つの登録されたユーザインタフェースコンポーネントを直ちに実行するプロセススレッドと
を備える、システム。
【請求項２】
前記リスナを特定するための制御スレッドであって、前記変更リクエストが前記アプリケーションマネージャから受信されるまでイナクティブにとどまる制御スレッドをさらに備える、請求項１に記載のシステム。
【請求項３】
前記制御スレッドを介して前記アプリケーションマネージャから情報が通信される、請求項２に記載のシステム。
【請求項４】
前記ハンドルはＴＣＰソケットを備え、前記情報はＴＣＰを用いて通信される、請求項３に記載のシステム。
【請求項５】
前記通知可能オブジェクトに対応する１つ以上のコンストラクタであって、実行時に、新しく構築した対象の通知可能オブジェクトをリストに載せる１つ以上のコンストラクタをさらに備える、請求項１〜４のいずれか一項に記載のシステム。
【請求項６】
前記少なくとも１つのプロパティの変更を特定するための少なくとも１つのプロパティ変更リスナをさらに備える、請求項１に記載のシステム。
【請求項７】
前記変更リクエストの受信に対して前記少なくとも１つのプロパティ変更リスナが通知される、請求項６に記載のシステム。
【請求項８】
前記オブジェクト指向プログラムコードは、Ｊａｖａ（登録商標）プログラミング言語で書かれる、請求項１〜７のいずれか一項に記載のシステム。
【請求項９】
前記マネージドコードプラットフォームは、Ｊａｖａ（登録商標）仮想マシンである、請求項１〜８のいずれか一項に記載のシステム。
【請求項１０】
マネージドアプリケーションプロセスの動作を変更するアプリケーションマネージャ（３１）のための方法であって、該方法は、
アプリケーションマネージャ（３１）を提供することと、
複数のマネージドアプリケーションプロセス（３２）を提供することであって、該複数のマネージドアプリケーションプロセス（３２）の各々は、
オブジェクト指向プログラムコードとして提供される少なくとも１つのアプリケーション（３３）と、
該少なくとも１つのアプリケーションを実行するマネージドコードプラットフォームと、
該アプリケーションマネージャと論理的に通信するためのハンドル（３６）を含んでいるリスナ（３４）と、
オブジェクト指向プログラムコードとして提供される１つ以上の通知可能オブジェクト（３５）と
を備える、ことと、
該アプリケーションマネージャから該マネージドアプリケーションプロセスに変更リクエストをブロードキャストすることと、
各リスナが、自身のローカルリストにおいて該通知可能オブジェクトにわたって繰り返されて、該マネージドアプリケーションプロセスの動作を変更することと、
ローカルリスト（４６）を使用して、該１つ以上の通知可能オブジェクトに対応する１つ以上のコンストラクタを識別することと、
該１つ以上の通知可能オブジェクトを介して該少なくとも１つのアプリケーションと関連した少なくとも１つのプロパティを変更することと、
該１つ以上の通知可能オブジェクトを介して該少なくとも１つのアプリケーションと関連した少なくとも１つの見た目および感じ特性を変更することと、
少なくとも１つの登録されたユーザインタフェースコンポーネントを用いて該少なくとも１つの見た目および感じ特性の変更を特定するインタフェースをユーザに提供することであって、該リスナは、該変更リクエストの受信に対して、該少なくとも１つの登録されたユーザインタフェースコンポーネントの各々にわたって繰り返される、ことと、
行列を使用して、該変更リクエストの受信に対して該少なくとも１つの登録されたユーザインタフェースコンポーネントを待ち行列に入れて一時的に実行を遅らせることと、
プロセススレッドを使用して、該変更リクエストの受信に対して該少なくとも１つの登録されたユーザインタフェースコンポーネントを直ちに実行することと
を包含する、方法。
【請求項１１】
請求項１０に記載の方法を実行するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に非同期挙動変更に関する。より詳細には、本発明は、非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法に関する。
【背景技術】
【０００２】
マイクロプロセッサ設計および構成要素の集積化における最近の発展によって、広範囲のデバイスがますます複雑な機能および「ソフト」特徴を提供できるようになってきた。ソフト特徴は、デバイスの動作を強化およびカスタマイズするソフトウェアアプリケーションを含む。これらのデバイスは、デスクトップおよびラップトップコンピュータなどの標準の計算デバイス、情報携帯端末などの携帯計算デバイス、および携帯電話、ポケットベル、ゲーム機およびセットトップボックスなどの一般消費者向けデバイスを含む。大半のデバイスは、現在、ソフト特徴および他の拡張機能に対応するためのオペレーティングシステムを備える。
【０００３】
また、ソフトウェアのアップグレードが可能なこれらのデバイスによって提供される能力が増大されることで、ユーザはある種の期待をもつようになってきた。ユーザは、技術をよく知らず、そして遅かったりまたは一貫しないアプリケーション性能などの構造的問題によって起こされる性能の妥協に我慢できないことが多い。同様に、ユーザは、マルチタスクを介してシステムレベルで実装された別々のアプリケーションのホストにアクセスできることを一般に期待する。ユーザにとっては、広範囲に入手可能なソフトウェアアプリケーションが複数のマルチプラットホームにわたって一貫し、かつより多く利用できることで満足が得られる。しかし、ソフトウェア開発者にとっては、異なるコンピューティングプラットフォーム対する技術ソフトウェアアプリケーションは、開発コストが増大し、ならびに各対応アーキテクチャに対する常時対応およびアップグレード確約が必要となる。
【０００４】
マネージドコードプラットフォームは、マシンに依存せず、かつアーキテクチャ中立の動作環境を与えることによって、複数のプラットフォームへの対応を求めるソフトウェア開発者に１つの解決手段を提供する。マネージドコードプラットフォームは、ユーザアプリケーションとしてオペレーティングシステムによって実行されるプログラミング言語コンパイラおよびインタプリタを含む。しかし、これらは、互換アプリケーションが動作し得る仮想ランタイム環境を提供する。例えば、Ｊａｖａ（登録商標）プログラミング言語によって書かれたアプリケーションは、Ｊａｖａ（登録商標）仮想マシン（ＪＶＭ）ランタイム環境と組み合わせられる場合に、マシン別環境およびコンフィグレーション設定に依存せず異種のコンピュータシステム上で動作し得る。Ｊａｖａ（登録商標）プログラミング言語の概説は、非特許文献１に記載され、その開示は参考として援用される。ＪＶＭは、Ｊａｖａ（登録商標）動作環境に対して重要な要素であり、メモリに制約のある一般消費者デバイスを含む計算デバイスの全範囲に移植され得る。
【０００５】
マネージドコードプラットフォームは、一般に１つのアプリケーションインスタンスの単調な実行のために設計される。マネージドコードプラットフォームおよびアプリケーションインスタンスの組み合わせは、アプリケーションプロセスを形成する。したがって、複数のアプリケーションプロセスは、複数の個々のアプリケーションに対してマルチタスク挙動をシミュレートするように実行され得る。各「マルチタスクされた」アプリケーションは、異なる仮想ランタイム環境を提供する別々のマネージドコードプラットフォームの下で実行する。次いで、各マネージドコードプラットフォームは、別々のプロセス空間において下層のオペレーティングシステムの制御下に実行する。マネージドコードプラットフォーム上の制限された制御は、プロセス間通信（ＩＰＣ）などのオペレーティングシステムによって提供される機能および信号ハンドラなどの関連機構を使用して達成され得るが、同様の機能は、マネージドコードプラットフォーム下に実行する制御アプリケーションに対しては一般に利用可能でない。
【０００６】
アプリケーション制御はいくつかの理由のために利用可能でない。第１に、各アプリケーションは異なるソースから生成され得、かつ異なるアプリケーションモデル、プログラミング言語および動作仮定を使用してプログラミングされ得る。同様に、各アプリケーションは、マネージドコードプラットフォームによって提供される仮想ランタイム環境内で分離されており、かつプロセス間制御は、ランタイム環境内で動作する拡張ライブラリ機能を使用してアプリケーションに明示的にプログラムされなければならない。そのようなプログラム拡張は遅いことが多く、かつ互換性および相互運用性問題を起こす可能性がある。さらに、分離されたアプリケーションの実行は、一般に単純性、頑強性および効率性のために協調アプリケーション実行よりも好ましい。
【０００７】
それにもかかわらず、アプリケーションマネージャをしばしば使用して、ユーザリクエストに基づいてデバイス（特に一般消費者デバイス）上で実行する複数のアプリケーションプロセスに対して最低限の集中制御を提供する。しかし、その制御は、一般にアプリケーションの起動および終了に対して提供されるおおざっぱな制御に制限される。アプリケーションレベルの挙動特性に対するきめ細かな制御は、アプリケーション制御機能が利用可能でないので対応されない。例えば、アプリケーションのプロパティまたはユーザインタフェースの見た目や感じは、ランタイム環境によって動的に変更されるか、または一貫した体裁およびユーザの体験を確実にする必要があり得る。しかし、アプリケーション間制御機能がないとそのようなランタイム変更が可能でない。
【０００８】
したがって、分離されたアプリケーションプロセスに対する動的集中制御を提供するアプローチが求められる。好ましくは、そのようなアプローチは異なるアプリケーション実行を生成することなく各アプリケーションプロセスに対して非同期変更を生成し得る。さらに、そのようなアプリケーションはさらに、各アプリケーションプロセスが明示的な協調なしに進行することが可能なようにしながら挙動変更を通信するフレキシブルな機構を提供し得る。
【非特許文献１】Ｐ．ｖａｎ  ｄｅｒ  Ｌｉｎｄｅｎ、「Ｊｕｓｔ  Ｊａｖａ（登録商標）」、第１章、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社（第２版、１９９７）
【発明の開示】
【課題を解決するための手段】
【０００９】
アプリケーションマネージャおよびマネージドコードプラットフォームは、複数かつ独立の分離ユーザアプリケーションの生成をサポートするアプリケーションフレームワークにおいて実行される。マネージドコードプラットフォームは、マシン移植可能コード定義互換アプリケーションをインタープリットするための仮想マシンなどのランタイムシステムプロセスを含む。各実行アプリケーションおよびランタイムシステムプロセス対は、マネージドアプリケーションプロセスを構成する。アプリケーションマネージャは、専用制御スレッドなどのプロセス間通信（ＩＰＣ）機構を実装するリスナを介してランタイムシステムプロセスに非同期にアクセスする。このリスナのインスタンスは、各マネージドアプリケーションプロセスにアドレス空間に存在する。リスナは、「ハンドル」を介してアプリケーションマネージャによってアクセス可能である。例えば、ＴＣＰ／ＩＰは、アプリケーションマネージャとマネージドアプリケーションプロセスとの間のＩＰＣ機構として使用され得、かつハンドルは、ＴＣＰポート番号として指定される。ランタイムシステムプロセスコンテクストは、１セットの通知オブジェクトを含む。これらは、ランタイムシステムプロセスにおいて実行するアプリケーションに挙動変更をトランスペアレントに課すために使用される。適切なマネージドコードプラットフォームおよびマネージドアプリケーションプロセスの一例は、サンマイクロシステムズ（Ｐａｌｏ  Ａｌｔｏ、ＣＡ）によってライセンスされるＪａｖａ（登録商標）オペレーティング環境およびＪａｖａ（登録商標）仮想マシン（ＪＶＭ）アーキテクチャである。
【００１０】
一つの実施形態は、マネージドアプリケーションプロセスに非同期挙動変更を誘導するためのシステムおよび方法を提供する。アプリケーションマネージャが実行される。マネージドアプリケーションプロセスが実行される。マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも１つのアプケーションが実行される。マネージドアプリケーションプロセスは、アプリケーションマネージャプロセスと論理的に通信する。通知オブジェクトのクラスに対応する１以上のコンストラクタが識別される。各そのようなコンストラクタは、実行時に、新しく構築した対象通知オブジェクトをリストに載せる。変更リクエストは、マネージドアプリケーションプロセスにブロードキャストされる。コンストラクタによってトランスペアレントにトラッキングされた通知オブジェクトは繰り返され、マネージドアプリケーションプロセスにおける挙動変更を生成する。
【００１１】
挙動変更は、マネージドアプリケーションプロセスの一部としてランタイムシステムプロセスにおいて実行する非協調アプリケーションに対してトランスペアレントに実行される。リスナおよびトランスペアレントにトラッキング通知オブジェクトを使用して、挙動変更は、個別の実行アプリケーションの表現協調（ｅｘｐｒｅｓｓ  ｃｏｏｐｅｒａｔｉｏｎ）に独立かつそれなしにマネージドアプリケーションプロセスを実行する際にアプリケーションマネージャによって生成され得る。
【００１２】
本発明のさらに別の実施形態は、以下の詳細な説明から当業者に容易に理解される。以下においては、本発明を実施するために最も好適な実施形態を例示する。本発明はそのすべてが、本発明の意図および範囲から逸脱せずに、他の異なる実施形態が可能であり、かつその詳細は種々の自明な点において変更可能であることが理解される。したがって、図面および詳細な説明は本質的に例示とみなされ、限定を意図しない。
【００１３】
したがって、本発明は以下を提供する。
【００１４】
１．マネージドアプケーションプロセス中に非同期挙動変更を誘導するためのシステムであって、マネージドアプリケーションプロセスは、マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも１つのアプリケーションと、実行アプリケーションマネージャと論理的に通信するハンドラと、オブジェクト指向プログラムコードとして提供される通知可能オブジェクトに対応する１つ以上のコンストラクタを識別するためのローカルリストと、該マネージドアプリケーションプロセスに変更リクエストをブロードキャストするための少なくとも１つの制御スレッドと、各識別されたコンストラクタによって追跡された該通知可能オブジェクトにわたって繰り返され、該マネージドアプリケーションプロセス中に挙動変更を生成するためのリスナとを備える、システム。
【００１５】
２．前記リスナを特定するための制御スレッドであって、該制御スレッドが前記変更リクエストの受信に対してスリープ状態にされる、制御スレッドをさらに備える、項目１に記載のシステム。
【００１６】
３．前記制御スレッド上に定義されたシステム中の前記アプリケーションマネージャから情報が通信される、項目２に記載のシステム。
【００１７】
４．前記ハンドラはＴＣＰソケットを備え、かつそのストリームはＴＣＰストリームを備える、項目３に記載のシステム。
【００１８】
５．前記通知可能オブジェクトに対応し、かつガービッジコレクションに対して該通知可能オブジェクトの適格性を特定する１つ以上のコンストラクタをさらに備える、項目１に記載のシステム。
【００１９】
６．少なくとも１つの前記通知可能オブジェクトを介して変更された前記少なくとも１つのアプリケーションと関連づけられた少なくとも１つのプロパティをさらに備える、項目１に記載のシステム。
【００２０】
７．前記少なくとも１つのプロパティ変更を特定するための少なくとも１つのプロパティ変更リスナをさらに備える、項目６に記載のシステム。
【００２１】
８．前記変更リクエストの受信に対して通知される前記少なくとも１つのプロパティ変更リスナをさらに備える、項目７に記載のシステム。
【００２２】
９．前記少なくとも１つの通知可能オブジェクトを介して変更される前記少なくとも１つのアプリケーションと関連付けられた少なくとも１つの見た目および感じ特性を備える、項目６に記載のシステム。
【００２３】
１０．前記少なくとも１つの見た目および感じ特性変更を特定するための少なくとも１つの登録されたトップレベルユーザインタフェースコンポーネントをさらに備える、項目９に記載のシステム。
【００２４】
１１．前記変更リクエストの受信に対して少なくとも１つの登録されたトップレベルユーザインタフェースコンポーネントをさらに備える、項目１０に記載のシステム。
【００２５】
１２．前記少なくとも１つの見た目および感じ特性変更の完了し、前記変更リクエストの受信に対して前記少なくとも１つの登録されたトップレベルユーザインタフェースコンポーネントを待ち行列にいれて一時的に実行を遅らせる行列、および該変更リクエストの受信に対して該少なくとも１つの登録されたトップレベルユーザインタフェースコンポーネントを直ちに実行するプロセススレッドのうちの少なくとも１つを備える、項目１１に記載のシステム。
【００２６】
１３．前記オブジェクト指向プログラムコードは、Ｊａｖａ（登録商標）プログラミング言語で書かれる、項目１に記載のシステム。
【００２７】
１４．前記マネージドコードプラットフォームは、Ｊａｖａ（登録商標）仮想マシンである、項目１に記載のシステム。
【発明を実施するための最良の形態】
【００２８】
マネージドアプリケーションプロセスにおいて非同期挙動変更を誘導するためのシステムおよび方法が提供される。アプリケーションマネージャプロセスが実行される。マネージドアプリケーションプロセスが実行される。マネージドコードプラットフォームの制御下にオブジェクト指向プログラムコードとして提供される少なくとも１つのアプリケーションが実行される。マネージドアプリケーションプロセスは、アプリケーションマネージャプロセスと論理的に通信する。オブジェクト指向プログラムコードとして提供される通知可能オブジェクトに対応する１つ以上のコンストラクタが識別される。各コンストラクタは、マネージドアプリケーションプロセスにおいてリスト中のインスタンス化された通知可能オブジェクトを追跡する。変更リクエストがマネージドアプリケーションプロセスにブロードキャストされる。各識別されたコンストラクタによって追跡された通知可能オブジェクトは繰り返されてマネージドアプリケーションプロセスにおける挙動変更を生成する。
【００２９】
（システム概要）
図１は、例として、複数の異種デバイス上に実施されるランタイム環境（ＲＴＥ）１４、２２、２４、２６を示す機能ブロック図１０である。各異種デバイス１１は、ランタイム環境１４、２２、２４、２６において実行するＪａｖａ（登録商標）動作環境などのマネージドコードプラットフォームを提供する。１つ以上のアプリケーション２７は、ランタイム環境１４、２２、２４、２６において実行し得、かつ各実行アプリケーション２７およびランタイム環境１４、２２、２４、２６の対はマネージドアプリケーションプロセス２８を構成する。これらは以下に図２を参照してさらに説明する。異種デバイス１１は、非排他的に、デスクトップまたはラップトップコンピュータシステムなどのクライアントコンピュータシステム１３を含む。各クライアント１３は、格納デバイス１５に動作可能に結合され、かつデータ構造およびデータ上で動作する数セットの方法を特定するコードモジュールをそれぞれ定義する１セットのクラス１６およびクラスライブラリ１７、およびシェア可能なモジュールの集まりを維持する。異種デバイス１１はまた、個人データアシスタント２１、および一般消費者デバイス（携帯電話２３およびセットトップボックス（ＳＴＢ）２５など）を含む携帯コンピューティングデバイスを含む。最後に、サーバ１８は、グローバルにシェア可能なクラスライブラリ２０が維持される格納デバイス１９に動作可能に結合される。異種デバイス１１のそれぞれは、従来のハードウェアに組み込まれたワイヤレスネットワークコンフィギュレーションを含むネットワーク１２を介してインタフェースをとり得る。他のタイプの異種デバイス１１および種々のネットワークコンフィギュレーション、構成、およびトポロジーが可能である。
【００３０】
各異種デバイス１１は、リソースを管理し、周辺デバイスへのアクセスを提供し、メモリリソースを割り当て、かつプログラムの実行および終了を制御するためのオペレーティングシステムを含む。１つの実施形態において、各オペレーティングシステムは、特定可能プロセスのメモリ空間をクローン化することによって複数かつ独立な個別ユーザアプリケーションを生成するプロセスクローン化機構に対応する。このことは、同一人に譲渡された米国特許出願シリアル番号１０／７４５，０２３、発明の名称「Ｓｙｓｔｅｍ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ｄｙｎａｍｉｃ  Ｐｒｅｌｏａｄｉｎｇ  Ｏｆ  Ｃｌａｓｓｅｓ  Ｔｈｒｏｕｇｈ  Ｍｅｍｏｒｙ  Ｓｐａｃｅ  Ｃｌｏｎｉｎｇ  Ｏｆ  Ａ  Ｍａｓｔｅｒ  Ｒｕｎｔｉｍｅ  Ｓｙｓｔｅｍ  Ｐｒｏｃｅｓｓ」（２００３年１２月２２日出願、係属中）、シリアル番号１０／７４５，０２０、発明の名称「Ｓｙｓｔｅｍ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｐｒｅｃｏｍｐｉｌｅｄ  Ｃｏｄｅ  Ｔｈｒｏｕｇｈ  Ｍｅｍｏｒｙ  Ｓｐａｃｅ  Ｃｌｏｎｉｎｇ  Ｏｆ  Ａ  Ｍａｓｔｅｒ  Ｒｕｎｔｉｍｅ  Ｓｙｓｔｅｍ  Ｐｒｏｃｅｓｓ」（２００３年１２月２２日出願、係属中）、およびシリアル番号１０／７４５，０２１、発明の名称「Ｓｙｓｔｅｍ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ｅｌｉｍｉｎａｔｉｎｇ  Ｓｔａｔｉｃ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｏｖｅｒｈｅａｄ  Ｂｙ  Ｍｅｍｏｒｙ  Ｓｐａｃｅ  Ｃｌｏｎｉｎｇ  Ｏｆ  Ａ  Ｍａｓｔｅｒ  Ｒｕｎｔｉｍｅ  Ｓｙｓｔｅｍ  Ｐｒｏｃｅｓｓ」（２００３年１２月２２日出願、係属中）に記載される。これらの開示は本明細書中において参考として援用される。本発明の使用に適切なプロセスクローン化機構の例は、Ｕｎｉｘ（登録商標）またはＬｉｎｕｘオペレーティングシステムによって提供されるｆｏｒｋ（）システムコールである。これは、Ｍ．Ｊ．  Ｂａｃｈ，「Ｔｈｅ  Ｄｅｓｉｇｎ  Ｏｆ  Ｔｈｅ  Ｕｎｉｘ（登録商標）  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ」  Ｃｈ．  ７，  Ｂｅｌｌ  Ｔｅｌｅ．  Ｌａｂｓ．，  Ｉｎｃ．  （１９８６）などに記載され、その開示は本明細書中において参考として援用される。ｆｏｒｋ（）を呼び出すプロセスは親プロセスとして知られ、かつ新たに生成されたプロセスは子プロセスと呼ばれる。オペレーティングシステムは、個別のプロセス識別子を子プロセスに割当てる。子プロセスは個別のプロセスとして実行する。オペレーティングシステムはまた、親プロセスのメモリ空間を子プロセスのメモリ空間にコピーすることによって親プロセスのコンテクストの論理コピーを生成する。ｆｏｒｋ（）システムコールのコピーオンライト変形例において、オペレーティングシステムは、メモリ空間への参照をコピーするだけであり、そして子プロセスが親プロセスコンテクストの参照されたデータの変更を試みるまで、および試みたならば、個々のメモリ空間セグメントの実際のコピーを遅らせる。コピーオンライトｆｏｒｋ（）システムコールは、非コピーオンライトｆｏｒｋ（）システムコールより速く、かつ親および子プロセスの間に書き込まれないいずれのデータも暗黙的に共有する。
【００３１】
（非同期挙動変更を誘導するためのシステム）
図２は、本発明による、マネージドアプリケーションプロセス３４において非同期挙動変更を誘導するためのシステム３０を示すブロック図である。システム３０は、アプリケーションマネージャ３１および１つ以上のマネージドアプリケーションプロセス３２を実行するランタイム環境を含む。マネージドアプリケーションプロセス３２は、マシン移植可能コード定義互換アプリケーションおよび１つ以上の実行アプリケーション３３をインタープリットするＪａｖａ（登録商標）仮想マシンなどのマネージドコードプラットフォームを含む。格納デバイス３０は、全コアマネージドコードプラットフォームを形成する個別のクラス４０およびクラスライブラリ４２を常に格納する。例として、Ｊａｖａ（登録商標）動作環境を参照してシステムを記載したが、Ｊａｖａ（登録商標）プログラミング言語などのオブジェクト指向プログラミング言語で好ましきくは書かれたアプリケーションを実行する他の形態のマネージドコードプラットフォームもまた使用され得る。
【００３２】
アプリケーションマネージャ３１は、ユーザインタフェースを提供し、それを介して個別のアプリケーションがユーザによって選択および実行され得る。ランタイム時に、アプリケーションマネージャ３１は、リスナ３４を介してマネージドアプリケーションプロセス３２に対して通信可能にインタフェースをとられる。アプリケーションマネージャ３１は、リスナ３４、およびマネージドアプリケーションプロセスコンテクストにおいてインスタンス化されかつそのコンストラクタによってリスト中をトランスペアレントに追跡された１つ以上の通知可能オブジェクト３５の組み合わせを介して間接的にアプリケーション３３において挙動変更を誘導する。
【００３３】
リスナ３４は、アプリケーションマネージャ３１から論理通信チャネルを提供する。論理通信チャネルを介して挙動変更はメッセージ（「Ｍｓｇ」）において１つ以上のマネージドアプリケーションプロセス３２に非同期的に「ブロードキャスト」され得る。アプリケーションマネージャ３１は、アプリケーション起動リスト４４において起動されたマネージドアプリケーションプロセス３２を記録する。挙動変更を開始する際、アプリケーションマネージャ３２は、アプリケーション起動リスト４４上で繰り返し、そしてすべての生成されたマネージドアプリケーションプロセス３２のリスナ３４に同じメッセージ３８を送信する。メッセージ３８は、アプリケーションの特性またはユーザインタフェースの見た目および感じの変更などの変更リクエストの性質を識別する。変更リクエストの他のタイプも可能である。
【００３４】
アプリケーションマネージャ３１は、リスナ３４上に定義されたハンドル３６を介して各マネージドアプリケーションプロセス３２にアクセスする。アプリケーションマネージャ３１は、リスナハンドルリスト４５中にリスナハンドル３６を記録する。リスナ３４は、マネージドアプリケーションのアドレス空間中に存在し、かつ変更がアプリケーションマネージャ３４によってリクエストされるまでイナクティブにとどまる専用コントロールスレッドを含む。このことは以下に図５を参照して説明する。上記の実施形態において、リスナ３４は、ＴＣＰなどのＩＰＣ機構を介して提供され、かつＴＣＰソケットなどのソケットとして定義されるハンドル３６を含む。ハンドル３６は、マネージドアプリケーションプロセス３２上の専用ポート番号として特定され得る。
【００３５】
通知可能オブジェクト３５は、マネージドアプリケーションプロセス３２のマネージドプラットフォームのコンテクストにおいてインスタンス化される。通知可能オブジェクト３５に対するコンストラクタ４１、４３は、クラス４０およびクラスライブラリ４２において定義されるクラスにおいて定義される。マネージドアプリケーションプロセス３２は、通知可能オブジェクト３５のタイプに対してコンストラクタ４１、４３を使用して各インスタンス化通知可能オブジェクト３５をマネージドアプリケーションプロセス３１中のローカルリスト４６に入れる。これらのコンストラクタ４１、４３は、クラス４０、４２中にアーキテクトされ、上記の追跡に対応するために必要な機能を含む。クラス４０、４２は、引き続きプログラミングモデル予想を満足するが、さらなる追跡および変更機能を補填される。例えば、ある周知のライブラリがしばしばアプリケーション３３によって使用され、かつライブラリを定義するために必要なソースコードの実装がアプリケーションクラスではなくシステムクラスとして一般に特定される。したがって、ライブラリは予想される機能を提供し、かつリスト４６中の通知オブジェクト３５を追跡するための機能をまた含むために書かれるので、挙動変更がアプリケーション実行に対してトランスペアレントに生じることが可能となる。さらなる実施形態において、各クラス４０、４２はまた、ガーベッジコレクションのために通知可能オブジェクトの適格性を検出し得るファイナライザを定義する。次いで、ファイナライザ方法は、通知可能オブジェクト３５がガーベッジコレクタによって取り戻されるところなので、それぞれの追跡リストから通知可能オブジェクト３５を除去し得る。
【００３６】
挙動変更を初期化するために、アプリケーションマネージャ３１は、挙動変更を生成するために必要な通知可能オブジェクト３５のタイプを識別するメッセージ３８を送信する。次いで、リスナ３４は、ローカルリスト４６において追跡されるように識別されたタイプの割り当てられた通知可能オブジェクト３５にわたって繰り返えされ、かつアプリケーションマネージャ３１に代わって挙動変更をトランスペアレントに生成する。
【００３７】
（非同期制御およびデータ交換）
図３Ａ〜Ｃは、例として、アプリケーションマネージャ６２と複数のマネージドアプリケーションプロセス６３、６５、６７との間の非同期制御およびデータ交換を示す機能ブロック図である。アプリケーションマネージャ６２およびマネージドアプリケーションプロセス６３、６５、６７はすべて、ランタイム環境６１において実行する。まず図３Ａを参照すると、各マネージドアプリケーションプロセス６３、６５、６７は、通知可能オブジェクトのタイプに対応するコンストラクタ６９を使用して、通知可能オブジェクトをローカルリスト中に追跡する。
【００３８】
次に図３Ｂを参照すると、アプリケーションマネージャ６２は、メッセージ３８をマネージドアプリケーションプロセス６３、６５、６７のそれぞれに非同期「ブロードキャスト」７１を介して転送することによって挙動変更を誘導することを開始する。非同期ブロードキャスト７１は、各マネージドアプリケーションプロセス６３、６５、６７中に実装されたリスナ（「Ｌ」）６４、６６、６８によって受信される。ブロードキャスト７１は２つの機能を提供する。１つ目は、ブロードキャスト７１が各マネージドアプリケーションプロセス６３、６５、６７にアプリケーションマネージャ６２が挙動変更をリクエストしていることを通知することである。２つ目は、ブロードキャスト７１がリクエストされた挙動変更のタイプを識別することである。例として、変更は各マネージドアプリケーションの性質または見た目や感じ特性を生成し得る。他のタイプの変更も可能である。
【００３９】
最後に図３Ｃを参照すると、個別のマネージドアプリケーションプロセス６３、６５、６７はリクエストされた挙動変更を実施する。各マネージドアプリケーションプロセス６３、６５、６７によるアクションのタイプは、各通知可能オブジェクト６９を定義するコードに左右される。リスナ６４、６６、６８は、各セットの追跡された通知可能オブジェクトを各マネージドアプリケーションプロセス６３、６５、６７の対応のアドレス空間において見出し、そして通知可能オブジェクトにわたって繰り返して挙動変更を生成する役割を果たす。他のタイプのアクションが可能である。
【００４０】
（非同期挙動変更を誘導するための方法）
図４は、本発明にしたがってマネージドアプリケーションプロセス中に非同期挙動変更を誘導するための方法９０を示す。方法１００は、例えば図２のランタイム環境３１および他のコンポーネントによって実行され得る一シーケンスのプロセス動作またはステップとして記載される。
【００４１】
まず、アプリケーションマネージャ３１がロードされる（ブロック９１）。誘導された挙動変更を開始する際、アプリケーションマネージャ３１は、挙動変更を生成するために必要な通知可能オブジェクト３５のタイプを識別する（ブロック９２）。次いで、アプリケーションマネージャ３１は、生成されたマネージドアプリケーションプロセス３２のすべてのリスナ３４を各マネージドアプリケーションプロセス３２上にそれぞれ定義されたハンドル３６を介して呼び出す（ブロック９６）。次いで、挙動変更を記載するメッセージ３８は、マネージドアプリケーションプロセス３２にブロードキャストされる（ブロック９４）。処理は、アプリケーションマネージャ３１が終了するまでいつまでも続く。
【００４２】
（マネージドアプリケーションプロセスを実行するためのルーチン）
図５は、図４の方法９０において使用するためのマネージドアプリケーションプロセス３２を実行するためのルーチン１００を示す。このルーチンの方法は、アプリケーションマネージャ３１から受信された変更リクエストに応答して非同期挙動変更を開始することである。
【００４３】
まず、アプリケーション３３は、マネージドアプリケーションプロセス３２のマネージドコードプラットフォームによって実行される（ブロック１０１）。ハンドル３６が生成され、そして専用制御スレッドがハンドル３１をリッスンするマネージドアプリケーションプロセス３２において開始される（ブロック１０２）。マネージドスレッドは、イナクティブスリープモードに入る（ブロック１０３）。アプリケーションマネージャ３２から変更リクエストを受信すると（ブロック１０４）、制御スレッドは起動し（ブロック１０５）、そして誘導された挙動変更を処理する（ブロック１０６）。このことは以下に図１６を参照して説明する。処理は、マネージドアプリケーションプロセス３２が終了するまでいつまでも続く。
【００４４】
（変更を処理するためのルーチン）
図６は、例として、図５のルーチン１００において使用するための誘導された非同期挙動変更を処理するためのルーチン１００を示すフロー図である。このルーチンの１つの目的は、通知可能オブジェクト１１０、１１１の実行を介してマネージドアプリケーションプロセス１０２上に挙動変更を生成することである。実行は、リスナ３４がアプリケーションマネージャ３１からブロードキャストされたメッセージ３８を受信した場合に、リスナ３４によって引き起こされる。次いで、リスナ３４は、各セットの通知可能オブジェクトをマネージドアプリケーションプロセス３２の対応のアドレス空間において見出し、そして通知可能オブジェクトにわたって繰り返して挙動変更を生成する役割を果たす。
【００４５】
まず、リクエストされた挙動変更のタイプが識別される（ブロック１０１）。一実施形態において、１つ以上の登録されたプロパティ変更リスナ（ブロック１１４）を識別（ブロック１１３）しそして通知することによってマネージドアプリケーションプロセス３２のプロパティへの変更が生成され得る（ブロック１１２）。
【００４６】
さらなる実施形態において、マネージドアプリケーションプロセス３２のユーザインタフェースの見た目および感じ特性への変更が生成され得る（ブロック１１６）。リクエストされた変更が有効な見た目および感じクラス（ブロック１１６）を識別し、かつそのクラスが現在の見た目および感じクラスと異なる（ブロック１１７）ならば、見た目および感じ挙動変更が必要である。マネージドアプリケーションプロセス３２は、各登録されたトップレベルユーザインタフェースコンポーネントにわたって繰り返され（ブロック１１８〜１２０）、そして見た目および感じ変更メッセージを送信する（ブロック１１９）。次いで、変更は、使用されるツールキットに適切なように生成される。例えば、変更は、実行を一時的に遅らせるために待ち行列に入れられるか、または直ちに実行される。変更の生成に続いて、次いでルーチンが戻る。
【００４７】
例として、アプリケーションマネージャ３２によって送信されたメッセージ３８が「ＰＲＯＰＥＲＴＹ＿ＣＨＡＮＧＥ  ｐｒｏｐｅｒｔｙＮａｍｅ＝値」を含むならば、リスナ３４は＜ｐｒｏｐｅｒｔｙＮａｍｅ＞に対して登録されたこれらの変更リスナを識別し、そしてｐｒｏｐｅｒｔｙＣｈａｎｇｅｄ（）コールを使用して各プロパティ変更リスナを通知する。
【００４８】
さらなる例として、アプリケーションマネージャ３２によって送信されたメッセージ３８が「ＬＡＮＤＦ＿ＣＨＡＮＧＥ  ｌｏｏｋＡｎｄＦｅｅｌＣｌａｓｓＮａｍｅ」を含むならば、リスナ３４は、＜ｌｏｏｋＡｎｄＦｅｅｌＣｌａｓｓＮａｍｅ＞が有効であり、かつ現在の見た目および感じと異なるかどうかを判断する。変更が必要ならば、リスナ３４は、すべての登録されたトップレベルユーザインタフェースコンポーネントにわたって繰り返えされ、そして見た目および感じ変更メッセージを送信する。他のタイプの挙動変更が可能である。
【００４９】
本発明を実施の形態を参照して詳細に記載したが、形態や詳細における前記およびその他の変更は本発明の意図および範囲を逸脱せずになされ得ることが当業者には理解される。
【図面の簡単な説明】
【００５０】
【図１】例として、複数の異種デバイス上に実装されたランタイム環境を示す機能ブロック図である。
【図２】本発明による、マネージドアプリケーションプロセスにおいて非同期挙動変更を誘導するためのシステムを示すブロック図である。
【図３Ａ】例として、アプリケーションマネージャと複数のマネージドアプリケーションプロセスとの間の非同期制御およびデータ交換を示す機能ブロック図である。
【図３Ｂ】例として、アプリケーションマネージャと複数のマネージドアプリケーションプロセスとの間の非同期制御およびデータ交換を示す機能ブロック図である。
【図３Ｃ】例として、アプリケーションマネージャと複数のマネージドアプリケーションプロセスとの間の非同期制御およびデータ交換を示す機能ブロック図である。
【図４】本発明にしたがってマネージドアプリケーションプロセス中に非同期挙動変更を誘導するための方法を示す。
【図５】図４の方法において使用するためのマネージドアプリケーションプロセスを実行するためのルーチンを示す。
【図６】例として、図５のルーチンにおいて使用するための誘導された非同期挙動変更を処理するためのルーチンを示すフロー図である。
【図１】
0004000327.tif 000002
【図２】
0004000327.tif 000003
【図３Ａ】
0004000327.tif 000004
【図３Ｂ】
0004000327.tif 000005
【図３Ｃ】
0004000327.tif 000006
【図４】
0004000327.tif 000007
【図５】
0004000327.tif 000008
【図６】
0004000327.tif 000009