JP2005531061A - モバイルアプリケーションのための実行環境 - Google Patents

モバイルアプリケーションのための実行環境 Download PDF

Info

Publication number
JP2005531061A
JP2005531061A JP2004515623A JP2004515623A JP2005531061A JP 2005531061 A JP2005531061 A JP 2005531061A JP 2004515623 A JP2004515623 A JP 2004515623A JP 2004515623 A JP2004515623 A JP 2004515623A JP 2005531061 A JP2005531061 A JP 2005531061A
Authority
JP
Japan
Prior art keywords
application
server
mervlet
client
node
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.)
Withdrawn
Application number
JP2004515623A
Other languages
English (en)
Inventor
ナイーム、イスラム
シャヒド、ショアイブ
Original Assignee
ドコモ コミュニケーションズ ラボラトリーズ ユー・エス・エー インコーポレーティッド
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
Priority claimed from US10/179,994 external-priority patent/US20030236826A1/en
Priority claimed from US10/179,910 external-priority patent/US7454458B2/en
Priority claimed from US10/179,929 external-priority patent/US20040001476A1/en
Application filed by ドコモ コミュニケーションズ ラボラトリーズ ユー・エス・エー インコーポレーティッド filed Critical ドコモ コミュニケーションズ ラボラトリーズ ユー・エス・エー インコーポレーティッド
Publication of JP2005531061A publication Critical patent/JP2005531061A/ja
Withdrawn 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本発明の一態様においては、少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーション環境が提供される。アプリケーション環境は、動的ウェブページを形成するための命令のセットを含むMervletアプリケーションを備えている。Mervletは、それぞれがアクセスネットワークに接続されるローカルノードまたはサーバノードで実行することができ、これにより、ローカルノードで実行しているクライアントアプリケーションからの要求に応じて、動的ウェブページを前記ローカルノードに表示する。また、アプリケーション環境は、Mervletに関連付けられた少なくとも1つのアプリケーション属性を備えている。アプリケーション属性は、Mervletのユーザ認識性能を特徴付けるための少なくとも1つの性能属性を含んでいる。アプリケーション環境は、Mervletに関連付けられたMervletエンジンを更に備えている。Mervletエンジンは、アプリケーション属性に基づいてローカルノードとサーバノードとの間でMervletの実行を与えるようになっている命令の第1のセットを有するポリシーモジュールを含んでいる。

Description

本発明は、一般に、モバイルアプリケーションのための実行環境に関する。特に、本発明は、複数の低レベルの転送プロトコルに適合するメッセージングシステムを使用して異種のモバイル通信ネットワークにわたって動的ウェブページを形成することができるモバイルアプリケーションをロードバランシングすることにより、アプリケーションのユーザに対する応答性能を最適化することができるモバイルアプリケーションのための実行環境に関する。
モバイル計算およびネットワーク接続の必要性は、今日、コンピュータデバイスの発展を後押しする主要な原動力のうちの1つである。デスクトップパーソナルコンピュータ(PC)は、携帯型のノートパソコンへと変化してきた。さらに最近、携帯デジタル端末(PDA)、携帯電話、インテリジェントポケベルを含む様々な携帯型の手持ち式家庭用電化製品および内蔵デバイスが、十分な計算能力を獲得してきた。現在、ネットワーク接続性は、有線LANまたは無線LAN、携帯電話、Bluetooth、802.11b(Wi−Fi)無線電信、汎用パケット無線サービス(GPRS)携帯電話ネットワーク、等の様々な通信ネットワークによって、上記のコンシューマー向けデバイスがデータ通信の形式で互いに交信し且つ従来のサーバコンピュータと交信し始めたことに伴って、急速に、当該コンシューマー向けデバイスの一体部分になってきている。
人々が情報を共有し且つ個人環境および職場環境を変化させている途中で、モバイルコンピュータデバイスの発展が重大な影響力を持ってきている。従来は、PCが机上に固定されて簡単に移動できなかったため、適当なソフトウェアを有するPCが設置されている場所でだけデータを管理して処理することができた。しかしながら、今日、モバイルコンピュータデバイスのユーザは、これらのデバイスの移動性を十分に利用して、自分の都合に合わせて離れた場所から情報にアクセスして当該情報を共有することができる。コンピュータおよびモバイルデバイスのネットワークにわたって情報を共有する高い度合いで予期される有力な方法は、動的に形成されたコンテンツを表示するためのウェブインタフェースである。
しかしながら、モバイルデバイスは、アプリケーション開発者にとって幾つかの課題を提示する。例えば、モバイルデバイスは、一般に、従来のコンピュータよりもハードウェアリソースが限られている。また、モバイルデバイスは、計算能力、メモリサイズ、表示能力、データ入力手段等における違いを含む幅広く変化するハードウェアコンフィギュレーションを有する傾向がある。また、移動通信ネットワークは、ネットワーク帯域幅およびネットワーク利用可能性が限られている。その結果、モバイルデバイスは、ネットワークに接続され、断続的に接続され、あるいは、ネットワークから切断され得る。
第1世代のモバイルデバイスは、一般に、要求だけのデバイス、すなわち、処理能力が高く計算資源も豊富なサーバコンピュータに対してサービスおよび情報を要求するだけのデバイスであった。サーバは、Java2エンタープライズエディション(J2EE)プラットフォーム等の標準的なソフトウェアアーキテクチャを使用していた。サーバプラットフォームは、サーバで実行する論理命令を小型軽量のクライアントアプリケーションが呼び出すことを許容するプログラミングモデルを規定し且つサポートすることができた。
今日、PocketPCおよびJava2プラットフォームマイクロエディション(J2ME)等のモバイルコンピュータデバイス向けのより強力なコンピューティングプラットフォームの出現で、モバイルデバイスは、情報を受け入れて処理する能力、および、より複雑な双方向トランザクションに関与する能力を増した。モバイルアプリケーションを実行するためのポピュラーなプラットフォームは、Javaプラットフォームである。このプラットフォームにより、同じJavaアプリケーションは、オペレーティングシステムやハードウェアの互換性が無くても、様々な種類のコンピュータデバイスにて動作させることができる。Javaはプログラミング言語であり、Javaプログラムは、その後にJavaバーチャルマシンにより動作(実行)のために解釈される機種に依存しないバイトコードにコンパイルされる。Javaプログラムは、機種に依存しないため、当該プログラムを機種毎にポーティングする必要が無く、様々なハードウェアプラットフォームで動作(実行)する。
しかしながら、一般に、従来のモバイルアプリケーションプラットフォームは、依然として、モバイルデバイスおよびサーバに利用可能なリソースを知的に活用してモバイルコンピューティング環境の制限からモバイルアプリケーションを保護するということはできていない。例えば、既知のプラットフォームは、モバイルアプリケーションを十分にロードバランシングして、ネットワーク負荷およびネットワーク内のデバイスの負荷に伴って変化するそのユーザに対する応答性能を最適化することができない。また、これらのプラットフォームは、異種の移動通信ネットワークにわたっての適合性のための複数の低レベル転送プロトコルをサポートするために必要なサービスを提供しない。更に、これらのプラットフォームは、システムの一時的な故障に対して十分にフォールトトレラントなモバイルコンピューティング環境を作り且つデバイスがネットワークから切断されてもサービスを提供し続けるための十分なメカニズムを提供しない。
したがって、モバイルデバイスのためのモバイルアプリケーションのための実行環境の領域においては、向上されたサービスを提供してより強力な機能性をもって双方向モバイルアプリケーションをサポートするより強力なアプリケーション環境の必要性が存在し続けている。
本発明の一態様においては、少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーションのための実行環境が提供される。当該環境は、動的ウェブページを形成するための命令のセットを含むMervletアプリケーションを備えている。このMervletは、それぞれが前記アクセスネットワークに接続されるローカルノードまたはサーバノードで実行することができ、これにより、前記ローカルノードで実行しているクライアントアプリケーションからの要求に応じて、前記動的ウェブページを当該ローカルノードに表示する。また、前記環境は、前記Mervletに関連付けられた少なくとも1つのアプリケーション属性を備えている。前記アプリケーション属性は、前記Mervletのユーザに対する応答性能を特徴付けるための少なくとも1つの性能属性を含んでいる。前記環境は、前記Mervletに関連付けられたMervletエンジンを更に備えている。前記Mervletエンジンは、前記アプリケーション属性に基づいて前記ローカルノード及びサーバノードの間で前記Mervletの実行を与えるようになっている命令の第1のセットを有するポリシーモジュールを含んでいる。
本発明の他の態様においては、Mervletアプリケーションを実行するための方法が提供される。前記Mervletは、少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーションのための実行環境において動的ウェブページを形成する命令のセットを含んでいる。前記方法は、前記アクセスネットワークに接続されるローカルノードで実行するクライアントアプリケーションから前記Mervletアプリケーションのための要求を発することを含む。また、前記方法は、前記アクセスネットワークに接続されたローカルノードまたはサーバノードに記憶された前記Mervletを見つけることを含む。更に、前記方法は、前記Mervletが前記ローカルノードで見つけられる時、当該ローカルノードで前記Mervletを実行して当該ローカルノード上に動的ウェブページを表示することを含む。また、前記方法は、前記Mervletが前記サーバノードで見つけられる時、前記アプリケーション属性に基づいて、前記ローカルノードまたはサーバノードのどちらかを選択し前記Mervletの実行を指示すること、を含む。また、前記方法は、前記ローカルノード上での前記Mervletの実行を選択した場合、前記Mervletおよび前記アプリケーション属性を、前記サーバノードから前記ローカルノードへと移動させることを含む。更に、前記方法は、前記サーバノード上での前記Mervletの実行を選択した場合、前記Mervletを前記サーバノード上で実行して、前記ローカルノード上に前記動的ウェブページを表示することを含む。
本発明の更なる他の態様においては、少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーションのための実行環境が提供される。前記環境は、前記アクセスネットワークに接続されるローカルノードに存在するクライアントアプリケーションからMervletアプリケーションのための要求を発する手段を備えている。前記Mervletアプリケーションは、動的ウェブページを形成するようになっている。また、前記環境は、前記アクセスネットワークに接続されたローカルノードまたはサーバノードに記憶された前記Mervletを見つける手段を備えている。前記環境は、前記Mervletが前記ローカルノードで見つけられる時、前記ローカルノードで前記Mervletを実行して当該ローカルノード上に前記動的ウェブページを表示する手段を更に備えている。前記環境は、前記Mervletが前記サーバノードで見つけられる時、少なくとも1つのアプリケーション属性に基づいて、前記ローカルノードまたはサーバノードのどちらかを選択し前記Mervletの実行を指示する手段を更に備えている。前記アプリケーション属性は、前記Mervletのユーザに対する応答性能を特徴付けるための少なくとも1つの性能属性を含んでいる。また、前記環境は、前記ローカルノード上で前記Mervletの実行を選択した場合、前記Mervletを前記サーバノードから前記ローカルノードへと移動させる手段を備えている。前記環境は、前記サーバノード上で前記Mervletの実行を選択した場合、前記Mervletを前記サーバノード上で実行して前記ローカルノード上に前記動的ウェブページを表示する手段を更に備えている。
本発明の更に他の態様においては、デバイス間で通信するための少なくとも1つのアクセスネットワークに接続された複数のコンピュータデバイス間でアプリケーションをロードバランシングする方法が提供される。前記方法は、前記アクセスネットワークに接続されたサーバデバイス上に前記アプリケーションを記憶することを含んでいる。また、前記方法は、前記アプリケーションのユーザに対する応答性能を特徴付けるための少なくとも1つの性能属性を含む、前記アプリケーションに関連付けられたアプリケーション属性のセットを測定することを含んでいる。更に、前記方法は、前記アクセスネットワークに接続されたクライアントデバイスから、前記アプリケーションのための要求を発することを含んでいる。また、前記方法は、前記アプリケーション属性のセットに基づき、前記要求に応じて、前記クライアントデバイスまたはサーバデバイスのどちらかを選択し、その上での前記アプリケーションの実行を指示することを含んでいる。更に、前記方法は、前記アプリケーションの実行が指示された場合、前記クライアントデバイスまたはサーバデバイスで前記アプリケーションを実行することを含んでいる。
本発明の更に他の態様においては、少なくとも1つのネットワークの一部を形成するアプリケーションをロードバランシングするためのシステムが提供される。前記システムは、前記ネットワークに接続され、前記アプリケーションのための様々な実行環境を与える、複数の実行モジュールを備えている。また、前記システムは、前記ネットワークに接続され、前記アプリケーションに関連付けられたアプリケーション属性のセットを測定する、少なくとも1つの収集モジュールを備えている。前記アプリケーション属性は、前記アプリケーションのユーザに対する応答性能を特徴付けるための少なくとも1つの性能属性を含んでいる。前記システムは、前記ネットワークに接続され、前記アプリケーション属性に基づいて前記アプリケーションの実行環境を決定するための少なくとも1つのポリシーを満たす第1の実行モジュールを決定する、少なくとも1つのポリシーモジュールを更に備えている。また、前記システムは、前記第1の実行モジュール上に前記アプリケーションを割り当てる少なくとも1つのプログラム割り当てモジュールを備えている。
本発明の更に他の態様においては、デバイス間で通信するための少なくとも1つのアクセスネットワークに接続された複数のコンピュータデバイス間でアプリケーションをロードバランシングするシステムが提供される。前記システムは、前記アクセスネットワークに接続されたサーバデバイス上に前記アプリケーションを記憶する手段を備えている。また、前記システムは、前記アプリケーションのユーザに対する応答性能を特徴付けるための少なくとも1つの性能属性を含むアプリケーション属性のセットを測定する手段を備えている。更に、前記システムは、前記アクセスネットワークに接続されたクライアントデバイスから前記アプリケーションのための要求を発する手段を有している。また、前記システムは、前記アプリケーション属性のセットに基づき、前記要求に応じて、前記サーバデバイスおよびクライアントデバイスの一方上での前記アプリケーションの実行を指示する手段を備えている。更に、前記システムは、前記アプリケーションの実行を指示することに応じて、クライアントデバイスおよびサーバデバイスの前記一方上で前記アプリケーションを実行する手段を有している。
本発明の更に他の態様においては、フォールトトレランスシステムが提供される。このフォールトトレランスシステムは、ネットワークに接続された複数のモジュール間で通信するための構成可能な信頼できるメッセージングシステムを備えている。前記信頼できるメッセージングシステムは、メッセージを生成し且つ前記ネットワークを介して前記メッセージに対する応答を受けるようになっているクライアントモジュールを含んでいる。更に、前記信頼できるメッセージングシステムは、前記ネットワークを介して前記メッセージを受け且つ前記応答を生成するようになっているサーバモジュールを含んでいる。また、前記信頼できるメッセージングシステムは、クライアントロギング信号に応じて、前記クライアントモジュール上で選択的に実行するクライアントロギングエージェントを有している。前記クライアントロギングエージェントは、前記メッセージおよび前記応答を記憶し、前記応答が受けられるまで前記メッセージを前記サーバモジュールに送信するようになっている。また、前記信頼できるメッセージングシステムは、サーバロギング信号に応じて、前記サーバモジュール上で選択的に実行するサーバロギングエージェントを有している。前記サーバロギングエージェントは、前記メッセージおよび前記応答を記憶し、前記応答を前記クライアントモジュールに送信するようになっている。更に、前記信頼できるメッセージングシステムは、前記クライアントモジュールおよびサーバモジュールのうちの少なくとも一方に関連付けられるコンフィギュレーションエージェントを有している。前記コンフィギュレーションエージェントは、前記クライアントロギング信号および前記サーバロギング信号を生成するようになっている。
本発明の更に他の態様においては、分散コンピュータシステムをフォールトトレラントにするための方法が提供される。この方法は、ネットワークに接続された複数のコンピュータデバイス間で複数のメッセージを送ることを含んでいる。前記複数のコンピュータデバイスは、要求メッセージを生成し且つ応答メッセージを受けるようになっている第1のコンピュータデバイスと、前記要求メッセージを受け且つ当該要求メッセージに応じて前記応答メッセージを生成するようになっている第2のコンピュータデバイスと、を含んでいる。また、前記方法は、前記第1のコンピュータデバイス上に前記要求メッセージを選択的に記憶することを含んでいる。また、前記方法は、前記第2のコンピュータデバイス上に前記要求メッセージを選択的に記憶することを更に含んでいる。また、前記方法は、前記第2のコンピュータデバイス上に前記応答メッセージを選択的に記憶することを含んでいる。また、前記方法は、前記第1のコンピュータデバイス上に前記応答メッセージを選択的に記憶することを含んでいる。
本発明の更に他の態様においては、フォールトトレラントな分散コンピュータシステムが提供される。前記システムは、ネットワークに接続された複数のコンピュータデバイス間で複数のメッセージを送る手段を備えている。前記複数のコンピュータデバイスは、要求メッセージを生成し且つ応答メッセージを受けるようになっている第1のコンピュータデバイスと、前記要求メッセージを受け且つ前記要求メッセージに応じて前記応答メッセージを生成するようになっている第2のコンピュータデバイスと、を含んでいる。また、前記システムは、前記第1のコンピュータデバイス上に前記要求メッセージを選択的に記憶する手段を備えている。また、前記システムは、前記第2のコンピュータデバイス上に前記要求メッセージを選択的に記憶する手段を更に備えている。また、前記システムは、前記第2のコンピュータデバイス上に前記応答メッセージを選択的に記憶する手段を備えている。また、前記システムは、前記第1のコンピュータデバイス上に前記応答メッセージを選択的に記憶する手段を備えている。
本発明の更に他の態様においては、分散コンピュータシステムをフォールトトレラントにするための方法が提供される。この方法は、ネットワークに接続されたクライアントモジュールからメッセージを生成し、当該クライアントモジュール上に前記メッセージを選択的に記憶し、前記ネットワークに接続されたサーバモジュールに前記メッセージを送ることを含んでいる。更に前記方法は、前記メッセージを受けるとともに、前記サーバモジュール上に前記メッセージを選択的に記憶することを含んでいる。また、前記方法は、前記サーバモジュールからの先の応答を解放することを含んでいる。また、前記方法は、前記サーバモジュールにより、前記メッセージに対する応答を生成し、当該サーバモジュール上に前記応答を選択的に記憶することを含んでいる。更に、前記方法は、前記応答を前記クライアントモジュールに送り、前記サーバモジュールから前記メッセージを除去することを含んでいる。また、前記方法は、前記応答を受けるとともに前記クライアントモジュール上に前記応答を選択的に記憶し、前記クライアントモジュールから前記メッセージを除去し、前記クライアントモジュールから前記応答を解放することを含んでいる。
この明細書中に組み込まれ且つこの明細書の一部を構成する添付図面は、本発明の実施形態を示すとともに、明細書本文と共に、本発明の利点および原理を説明するのに役立つ。
図1は、本発明に係るMervletアプリケーション環境のシステムコンポーネントを示すブロック図である。
図2は、図1のMervletアプリケーション環境の動作の詳細を示すフローチャートである。
図3は、図1のMervletアプリケーション環境のためのモバイル通信ネットワークの高レベルビューを示すブロック図である。
図4は、図1のMervletアプリケーション環境におけるMervletアプリケーションの構造およびその属性を示すブロック図である。
図5は、図1のMervletアプリケーション環境におけるMervletアプリケーションのライフサイクルを示すブロック図である。
図6は、図1のMervletアプリケーション環境におけるMervletエンジンの全体構造およびステップを示すブロック図である。
図7は、図1のMervletアプリケーション環境におけるユーザインタフェースイベントのためのタイムラインを示すブロック図である。
図8は、図1のMervletアプリケーション環境における性能属性およびシステム属性を要約する表である。
図9は、図1のMervletアプリケーション環境におけるMervletをロードバランシングするためのアプリケーション提供最適化の詳細を示すフローチャートである。
図10は、図1のMervletアプリケーション環境におけるMervletをロードバランシングするためのネットワーク切換え最適化の詳細を示すフローチャートである。
図11は、図1のMervletアプリケーション環境におけるMervletエンジンと信頼できるメッセージシステムとの間のインタフェースを示すブロック図である。
図12は、図11の信頼できるメッセージングシステムにおけるメッセージの構造を示す図である。
図13は、図11の信頼できるメッセージングシステムの動作の詳細を示すチャートである。
図14は、図11の信頼できるメッセージングシステムにおける様々なコンフィギュレーション及び対応する性能コストを示す表である。
添付図面を参照して、本発明の実施について詳細に説明する。以下、Javaベースのソフトウェアシステムを使用して、本発明の好ましい実施形態を説明する。しかしながら、容易に分かるように、Javaベースのソフトウェアシステムは、本発明を実施するための唯一の手段ではなく、本発明は、他のタイプのソフトウェアシステム下で実施されても良い。
(1.Mervletアプリケーション環境の概要)
図1に示される本発明に係るアプリケーション環境において、アプリケーション開発者は、「Mervlet(マーブレット)」として知られるモバイルアプリケーションを形成する。Mervlet10は、モバイルコンピュータデバイスのための動的ウェブページを形成することができる実行可能アプリケーションプログラムである。Mervlet10は、解釈されていないコードおよびローカルスタティックデータを含んでいる。Mervletの解釈されていないコードは、ウェブページを形成するためのユーザインタフェースロジック、および、ウェブページのためのダイナミックコンテンツを生成するアプリケーションロジックの両方を含んでいても良い。また、Mervlet10は、ASCIIテキストファイル等の外部データファイルにアクセスすることもできる。更に、Mervlet10は、従来のアプリケーションプログラムとは異なり、それに関連付けられるアプリケーション属性の固有のセットを有している。これらの属性により、通信ネットワークにわたってMervlet10を動的にロードバランシングすることができる。また、Mervlet10はセキュリティ属性のセットを有しており、これらのセキュリティ属性により、Mervlet10は、ネットワーク内の様々なデバイス上において、それ自身のセキュリティコンテキスト内で実行する(動作する)ことができる。したがって、Mervlet10は、再配置可能なダイナミックウェブドキュメントの特徴を有している。
Mervlet10は、Mervletランタイムエンジン12の制御下で実行される。Mervletランタイムエンジン12は、カスタマイズドタグライブラリ14と、システムサービス16のための一組のコンポーネントと、コアインタープリタ18と、を有している。Mervletエンジン12は、自己修復可能であるように構成され、システム故障時に実行していた一組のMervletの実行を再起動できるようになっていても良い。
Mervletエンジン12は、ネットワークにわたってコンテンツをMervletから遠隔クライアントデバイスへと配信するため、メッセージに基づく通信システム20を使用する。また、メッセージングシステム20は、ロードバランシングのため、1つのネットワークにわたってMervlet10を送ることもできる。例えば、メッセージングシステム20は、ポイント・ツー・ポイント非同期メッセージングを使用して作動し、要求メッセージおよび応答メッセージを通信しても良い。また、Mervletアプリケーション環境は、一時的なネットワークおよびデバイスの故障を修復することができるとともに、そのエンドポイントへのメッセージの配信を保証することができる、信頼できるメッセージングシステム20をサポートする。この信頼できるメッセージングシステム20は、アプリケーション開発者、システムアドミニストレータまたはユーザが様々な修復オプションのためのメッセージをバッファリングするデバイスを選択できるように、構成可能であっても良い。しかしながら、当業者であれば容易に分かるように、HTTP、SMTPあるいは同様の転送プロトコルによって転送される遠隔手続呼び出しを使用するシステムを含む他のタイプの通信システムが、Mervletアプリケーション環境で使用されることができる。
また、Mervletエンジン12は、ネットワーク切断を隠すために、デバイス上にMervletをローカルにキャッシュするための構成可能キャッシュマネージャ22とインタフェースをとる。デバイスキャッシュがプログラム化できる場合には、Mervlet固有のキャッシュ法が、デバイスに対してダウンロードされ得る。構成可能キャッシュマネージャ22のキャッシュ機構により、キャッシュマネージャは、そのキャッシュ管理法を動的に変化させることができる。
次に、図2および図3を参照すると、作動時、通信ネットワークの一部を形成するモバイルデバイスまたはユーザクライアントデバイス(UCD)30は、ステップ10で、Mervlet10のための要求を生成する。UCD30は、Mervletエンジン12、メッセージングシステム20、キャッシュマネージャ22を実行する。また、UCD30は、マイクロソフト社のポケットインターネットエクスプローラおよびインターネットエクスプローラや、ネットスケープ通信社のネットスケープナビゲータ等のウェブブラウザを使用して、Mervlet10からの情報を表示することができる。Mervlet10は遠隔的に実行しても良く、あるいは、要求しているUCD30が要求されているMervlet10をローカルに実行することができても良い。UCD30は、ユニフォームリソース識別子(「URI」)を使用してMervlet10のための要求を生成する。URIは、インターネットアクセスプロトコルを使用してMervletにアクセスできるように、ネットワーク上の登録されたネーム空間内にMervlet10のネームおよびアドレスをエンコードする。
要求されたMervlet10は、要求しているUCD30、または、他のUCD34またはコンピュータサーバクラスのデバイス36であっても良い、Mervlet(「プライマリサーバ」)32を実行することができる十分なメモリおよび処理能力を有するネットワークの遠隔ノード上、にローカルに記憶され得る。ステップ12において、要求しているUCD30は、サンマイクロシステムズのJINI等の既存のリソースディスカバリ技術を使用して、プライマリサーバ32を見つけることができる。プライマリサーバ32は、Mervlet10を実行できるか、あるいは、Mervlet10を実行するためにネットワーク上で図示しない2次サーバを見つけることができなければならない。後者の場合、プライマリサーバ32は、Mervlet10を2次サーバに送るとともに、要求しているUCD30からの要求を転送しなければならない。UCD30およびプライマリサーバ32は、1または複数のアクセスネットワーク38を介して、互いに通信を行なっても良い。
ステップ14において、要求しているUCD30は、最初に、デバイス上のローカルキャッシュ内にMervlet10が記憶されているかどうかを確かめるためにチェックする。Mervlet10が記憶されている場合、そこでMervlet10が実行される。これがステップ16である。一方、Mervlet10が記憶されていない場合、ステップ18において、要求しているUCD30は、プライマリサーバ32と通信を行なって、要求されたMervlet10への「アクセス」を得る。その後、ステップ20において、プライマリサーバ32は、Mervlet10上でロードバランシングポリシーを呼び出し、Mervlet10のユーザに対する応答性能を最適化する。例えば、プライマリサーバ32は、Mervlet10をローカルに実行することを決定しても良く(ステップ22)、あるいは、要求しているUCD30にMervlet10を再配置することを決定しても良い(ステップ24)。場合によって、UCD30は、そのサイトでMervlet10を実行するための明示的な要求を行なっても良い。しかしながら、プライマリサーバ32は、その要求を無視することができる。ステップ22においてMervlet10がプライマリサーバ32上で実行される場合、その結果は、Mervletアプリケーション環境のメッセージングシステム20を介して、UCD30に対して送り戻される。
プライマリサーバ32は、1)UCDおよびサーバノードにおけるメモリおよび処理能力、2)2つのノードの各々におけるロードと、ネットワークの帯域幅および待ち時間、及び、3)Mervletの性能に関する一組の属性、を含む幾つかの属性に基づいて、Mervlet10をローカルに実行するか或いは要求しているUCD30上で実行するかを決定することができる。例えば、Mervletがユーザインタラクティブ性が高い例えばゲームアプリケーションであり、UCDが当該Mervletを実行するための十分なハードウェアリソースを有している場合、サーバは、UCD上でMervletを実行することを決定しても良い。一方、Mervletがデータ処理であり、あるいは、インタラクティブではなくコンピュータを駆使した例えば個人的アプリケーションである場合、サーバは、それ自身でMervletを実行することを決定しても良い。しかしながら、当業者であればはっきりと分かるように、システムが監視するパラメータに基づいて、他のロードバランシング決定も考えられる。例えば、プライマリサーバ32およびUCD30は、ネットワーク切換ポリシーを実行して、デバイス間でアクセスネットワーク38を切換え、通信を向上させることができる。
ここで、前述した高レベル実行モデルをサポートするシステムの実現について説明する。特に、1)Mervletのためのアプリケーションモデル、2)Mervletランタイムエンジン、3)ネットワークにわたるMervletのユーザに対する応答性能を最適化するためのロードバランシングスキーム、4)回復可能なMervletエンジンおよび信頼できるメッセージングシステムのための構成可能フォールト・トレランス・スキーム、5)構成可能切断モード操作スキーム、を含むMervletアプリケーション環境の幾つかの重要な特性について説明する。
(2.Mervletアプリケーション)
Mervlet10は、ウェブページのためのユーザインタフェースを規定して、動的に生成されたコンテンツをモバイルデバイス上に表示する。Mervlet10の構造が図4に示されている。特に、Mervlet10は、マークアップ言語命令等のプラットフォームインディペンデントなユーザインタフェースロジック40を使用して、フォーマッティングを制御するとともに、ウェブページを表示する。また、Mervletは、ウェブブラウザからの要求および応答を扱うこともできる。例えば、Mervlet10は、静的なHTML、DHTML、XHTML、XMLおよびウェブブラウザによって解釈できる同様のフォーマットタグを使用して、ウェブページをサポートすることができる。
また、Mervlet10は、XML状タグを使用して、ウェブページのための動的なコンテンツを生成するアプリケーションロジック42をカプセル化する。アプリケーションロジック42は、それ自体、ウェブページがこれらのXML状タグを使用してアクセスするJavaBeansまたはカスタマイズドMervletタグライブラリ14等のサーバベースのリソース内に存在することができる。Mervletタグライブラリ14は、特定のデバイスのアプリケーション環境に最初からあっても良く、あるいは、ロードバランシング中にMervletが再配置される時にMervlet10と共に移動しても良い。したがって、Mervlet10は、動的なウェブページのユーザインタフェースを、プラットフォームインディペンデントである再利用可能なコンポーネントベースの設計のためのコンテンツ形成から分離する。
また、Mervlet10は、メッセージングシステム20を介してネットワーク接続を行なうことができるとともに、ローカルデータファイルにアクセスすることができる。したがって、Mervletのためのアプリケーションモデルは、ユーザインタフェースロジック40と、アプリケーションロジック42と、ファイルアクセス46と、ネットワークアクセス44と、を含んでいる。
また、性能属性52およびシステム属性54を含む新規なアプリケーション属性のセット50は、Mervletをネットワーク内で動的にロードバランシングするためにMervlet10に関連付けられる。例えば、Mervlet10は、後述するように、そのアプリケーション属性50に基づき、モバイル通信ネットワークにわたって、ロードタイムおよびランタイムで動的に再配置されても良い。
また、Mervlet10は、関連付けられたセキュリティ属性56のセットに基づいて、それ自身のセキュリティコンテキスト内で実行することもできる。格納モデルは、何のリソースがユーザに利用可能であるかを決める。Java2セキュリティモデルの変形を使用し、1997年のIEEEソフトウェアにおけるIslamらによる「インターネットコンテンツを使用するためのフレキシブルセキュリティモデル」に記載されているようなポリシーメカニズムを用いて、クラスローダーおよび関連クラスが変更される。なお、「インターネットコンテンツを使用するためのフレキシブルセキュリティモデル」の内容は、これを参照することにより、保護ドメインがUCDによって設定されても良いという点を除き、本願に組み込まれる。クラスローダーは、Mervletを実行するためのセキュリティコンテンツを形成する。Mervlet10は、それが実行される前に、サイン(署名)されるとともに、デバイスによって確認される。セキュリティ属性56を使用して構成されたポリシーモジュールは、誰を信用し且つどの操作が許容されるかに関するポリシーを実行する。Mervletエンジン12は、Mervlet10による任意のアクセスをランタイムで監視するとともに、Mervletがそのセキュリティコンテキストから外れて実行しようとする場合には、当該Mervletを抹消する。Mervlet10のためのセキュリティコンテキストは、Mervlet10と共にセキュリティ属性56を再配置することにより、移動させることができるとともに、ネットワーク内の様々なデバイス上で再現することができる。
前述した特徴は、Mervletアプリケーションモデルに固有のものであり、動的なウェブページを形成するための他のタイプの技術を逃れる。Mervlet10は、URL http://java.sun.com/products/jsp/whitepaper.htmlによって利用可能であり且つこれを参照することによってその内容が本願に組み込まれるサンマイクロシステムズの「Javaサーバページ(登録商標)−ホワイトペーパ」に記載されたJavaサーバページ(「JSP」)モデルから得られるJavaアプリケーションコンポーネントとして実行され得る。JavaベースのMervletの実行により、JNDI、JMS、JTA、JAF、Javaメール、RMI、JDBC及びIIOPクラスにはアクセスできないかもしれないが、Javaクラスによって使用されるリソースファイルおよびJ2ME CDC環境にはアクセスすることができる。また、JSPから得られるMervletは、AWTクラスまたはSWINGクラスへのアクセスを有しないかもしれない。また、Mervlet10のJ2MEベースの実行は、Mervletにより処理されるウェブページ内でスクリプトを許可しない。これらの制約は、Mervletアプリケーション環境を実現して限られたハードウェアリソースを有する小型軽量クライアントデバイスにおけるMervletの実行を最適化するネットワークの全てのノードにおいて存在するかもしれない。したがって、そのようなMervletの実行は、プラットフォームインディペンデントであり、小型軽量クライアントの要求を満たしつつ、既存のJavaプラットフォーム技術を利用することができる。
本発明に係るMervletアプリケーション環境のJ2MEベースの実行は、JSPアプリケーションプログラミングインタフェース(「APIs」)への変更に加えて、Mervletを実行する時期および場所を決定するなど、従来のJSPおよびServlet実行のセマンティクスを変更する。以下、この実行について詳細に説明する。
(3.Mervletエンジン)
図1に示されるように、Mervlet10は、Mervletエンジン12でコンパイルされて実行される。エンジン12は、ウェブブラウザ等のクライアントアプリケーションからMervlet10への要求を処理することができるとともに、Mervlet10からクライアントブラウザへの応答を生成することができる。特に、Mervletエンジン12は、アプリケーションロジック42のためのMervletタグを解釈する。その後、Mervletエンジンは、リソースまたはタグライブラリ14にアクセスして、Mervlet10のユーザインタフェースロジック40によって規定されるウェブページのための動的なコンテンツを生成する。タグライブラリ14は、デバイスに最初からあっても良く、あるいは、Mervlet10と共に再配置可能であっても良い。その後、エンジン12は、その結果を、HTMLまたはXMLの形態で、要求しているウェブブラウザに送り戻す。アプリケーションロジック42のための任意の静的なフォーマットタグは、要求しているウェブブラウザに対して直接に送られる。
Mervletエンジン12は、小型軽量クライアントデバイスにおけるJ2ME CDCプラットフォーム上およびサーバクラスデバイスにおけるJ2EEプラットフォーム上で実行することができる。J2MEプラットフォームは、従来、32ビットCPUおよび少なくとも2メガバイトのメモリを必要とする。J2EEプラットフォームは、従来、少なくとも1つのインテルペンティアムIIIクラスプロセッサと、128メガバイトのRAMメモリと、300メガバイトの固定記憶域とを必要とする。ランタイムで最大6メガバイトを費やすMervletエンジン12をサポートする、本発明に係るMervletアプリケーション環境のための1つの考えられる構成は、少なくとも32ビットCPUと、10メガバイトのRAMメモリと、40メガバイトの固定記憶域と、を含む。しかしながら、Mervletアプリケーション環境におけるこれらの値は、単なる一例であり、制限的なものでないことは言うまでもない。J2EEのコンテクストにおいては、Mervletエンジン12は、J2EEにおけるServletエンジンモデルとウェブコンテナとを交換することができる。したがって、Mervletエンジン12により、Mervlet10は、Javaバーチャルマシン(JVM)、パーソナルJavaバーチャルマシン(PJVM)、あるいは、他のタイプのバーチャルマシン(VM)にアクセスすることができる。デバイスのネイティブのオペレーティングシステムの上で実行するVMは、Javaバイトコードを受け且つネイティブのオペレーティングシステムによって実行できる形式に当該Javaバイトコードを動的に変換することにより当該Javaバイトコードを解釈する抽象的な計算機のように、作用する。
Mervletエンジン12は、図5に示されるように、アプリケーションプログラミングインタフェース(APIs)のセットにより、Mervlet10のライフサイクルを管理する。Mervletエンジンが行なうこのアクションは、ステップ30において、クライアントアプリケーションによって要求されるMervletをネットワーク上に見つけることを含んでいる。要求されたMervletは、要求しているクライアントまたはプライマリサーバのいずれかに記憶されても良い。Mervletが見つけられた後、Mervletエンジンは、Mervletのインスタンス(例)を形成するとともに、そのインスタンスをエンジンのメモリにロードして、ステップ32においてそのインスタンスを初期化する。初期化すると直ちに、Mervletは情報を受け取れる状態になり、Mervletエンジン12は、ステップ34において、要求を送ることができるとともに、Mervletからの応答を処理することができる。Mervletがもはや不要になると、ステップ36において、Mervletエンジンは、Mervletを破壊(デストロイ)するとともに、その存在をエンジンメモリから抹消し、Mervletに関連付けられた固定記憶域内のあらゆるデータを除去する。
ステップ38において、Mervletエンジンは、クラッシュ後、Mervletを再起動することができる。また、Mervletエンジンは、ステップ40において、その状態を保存する必要があることを常にMervletに知らせても良い。以下、これらのアクションを使用してクラッシュから回復できるMervletエンジンの能力について、Mervletアプリケーション環境におけるフォールト・トレランスと共に、詳細に説明する。
以下は、J2MEプラットフォームに基づいてMervletをMervletエンジン上で実行するためのAPIの典型的なセットである。MervletAPIは、Java Servletのためのインタフェースにおける標準的なJavaクラスから得られる。Mervletの実行によって、「javax.servlet」クラスの「javax.mervlet」サブクラスが形成される。
MervletAPIの「javax.mervlet」の実行を考えると、10個のクラスがある。10個のクラスのうち、Servletの実行によって不変のまま維持される5個のクラスを以下に記載する。

・ServletExceptionと同じMervletException
・ServletInputStreamと同じMervletInputStream
・ServletOutputStreamと同じMervletOutputStream
・不変を維持するRequestDispatcher
・ServletConfigと同じMervletConfig
以下のように、修正されたセマンティクスを要求する5個のクラスもある。

・Mervlet
・MervletContext
・MervletRequest
・MervletResponse
・SingleThreadModel
クラス「Mervlet」は、3つの重要なメソッドを有している。すなわち、

public void Init()は、「MervletException」を投入し;
public void Service()は、「MervletException」を投入し;
public void Destroy()は、「MervletException」を投入する。
メソッド「Init()」は、Mervletを初期化するために、Mervletエンジンによって呼び出される。メソッド「Init()」は、Mervletが見つけられ且つクラスローダーがMervlet上で呼び出された後に、呼び出されなければならない。メソッド「Init()」は、メソッド「Service()」への任意の呼び出しが許容される前に呼び出されなければならない。メソッド「Service()」は、Mervletエンジンが要求を送ってMervletからの応答を処理することができるように、Mervlet上で呼び出される。Mervletは、Mervlet上でメソッド「Destroy()」を呼び出すことによって破壊(デストロイ)される。
あるパラメータが要求される場合、MervletContextが構成されて前記メソッドに送られる。したがって、開発者は、クラス「Mervlet」を拡張して、例えば以下のようにメソッド「Init()」およびメソッド「Service()」を無効にすることができる。

public void Init(MervletConfig)は、「MervletException」を投入し;
public void Service(MervletRequest,MervletResponse)は、IOException,MervletExceptionを投入する。
また、Mervletをロードバランシングするため、及び、システム故障から回復するために、クラス「Mervlet」の一部として、以下の2つの別個のメソッドを利用することができる。
Void Restore(MervletContext m)
Void Save()
メソッドRestore()は、クラッシュ後にMervletを回復させようとする際にそれ自身の状態を戻すため、メソッドInitに先だって、Mervletエンジンにより呼び出される。メソッドSave()は、Mervletに知らせてそのアプリケーション状態を保存するために、常にMervletエンジンによって呼び出され得る。しかしながら、Mervletは、クラッシュの前にメソッドSave()が呼び出されることを前提とすべきではない。
クラス「MervletContext」は、Mervletに利用可能なリソースを特定する。それは、クラス「ServletContext」の拡張子であり、以下の別個のリソース、すなわち、i)Mervletと共に使用できるファイル、ii)後述するようなユーザインタフェースおよびI/O特性を含むMervletの性能に関連する属性のセット、iii)Mervletのためのリソース権利、を含んでいる。また、クラス「MervletContext」は、これらのリソースの各々を取得して設定するためのメソッドも含んでいる。
クラス「MervletRequest」およびクラス「MervletResponse」は、クラス「ServletRequest」およびクラス「ServletResponce」のそれぞれの拡張子である。Mervletエンジンは、以下の抽象的なメッセージングメソッドを使用して、要求および応答を生成する。

Void Reliable_async_send(Endpoint to, Endpoint From, DataStream Data, Reliability Type, CallbackMethod cm)

このメソッドにおけるデータフォーマットは、HTTPマイムエンコードインタフェースにおけるそれと同じである。様々な交換フォーマットを用いた他の実行も考えられる。
Mervletエンジンがマルチスレッドであるため、Servletモデルからのクラス「SingleThreadModel」は実行されない。
次に図6を参照して、ユーザクライアントデバイス30上のクライアントアプリケーションまたはブラウザ60からのMervlet10のための要求に応じたMervletエンジン12の動作を示す機能ブロック図について説明する。図6に示されるMervlet10は、ユーザクライアントデバイス30上またはプライマリサーバデバイス32上に記憶されても良い。ユーザクライアントデバイス30およびプライマリサーバデバイス32の両方は、コアインタープリタ18を有するMervletエンジン12を実行する。
先ず最初に、要求しているクライアント30上のMervletエンジン12は、Mervlet10を見つけなければならない。エンジンそれ自体は、単純なMervletコンポーネントから構成される。要求されたMervletの所在を確認する或は見つけるため、Mervletファインダモジュール62は、Mervletのロードを要求するクライアント30における全ての呼び出しをインタセプトする。Mervletファインダモジュール62は、キャッシュによってエクスポートされた既知のハッシュ機能を使用して要求されたMervlet10のためのクライアント30上のローカルキャッシュを検索する。Mervlet10が見つけられると、Mervletファインダモジュール62は、Mervletのためのメモリを割り当てるとともに、当該ローカルキャッシュからMervletを読み込む。その後、Mervletファインダモジュール62は、Mervlet10上でメソッド「Init」を呼び出し、要求されたMervletのためのコンフィギュレーションデータを送って、新たに形成されたMervletのインスタンスを初期化する。Mervlet10が終了すると、それ自体にメソッド「Destroy()」を呼び出す。Mervletエンジン12がMervlet10の除去を望む場合、Mervletエンジン12は、それ自体にメソッド「Destroy()」を呼び出すことができる。
Mervletファインダモジュール62は、ローカルキャッシュにおいて適合するものがなかったために要求されたMervlet10がクライアント30に存在しないと判断する場合には、Mervlet10のためのプライマリサーバデバイス32に問い合わせる。サーバ32に対する問い合わせには、Mervlet10の名前、クライアントデバイス30におけるCPU稼動時間、クライアントデバイス30のMIPS等級、クライアントデバイス30の利用可能なメモリおよび固定記憶域、利用可能な場合にはMervlet10の任意の性能属性が含まれる。この情報は、Mervlet10をクライアント30に再配置するか、あるいは、後述するロードバランシングスキームを使用してサーバ32とクライアント30との間で通信を行なうためにアクセスネットワーク38を切換えるか、を決定するために、プライマリサーバ32によって使用され得る。
また、Mervletエンジン12は、プライマリサーバ32に到達するMervlet10のための要求をインタセプトするインターセプティングMervletモジュール64を有している。Mervlet10のために要求メッセージがネットワークから到達すると、インターセプティングMervletモジュール64は、サーバ32上のMervlet10にメッセージを送る。また、インターセプティングMervletモジュール64は、Mervlet10のための要求に応じて、ポリシーMervletモジュール66を呼び出すとともに、要求しているクライアント30におけるシステム性能パラメータをポリシーMervletモジュール66に伝える。その後、ポリシーMervletモジュール66は、そのユーザに対する応答性能を最適化するためにMervlet10をどのようにロードバランシングするかを決定する。ポリシーMervletモジュール66は、システムアドミニストレータによって設定される。また、プライマリサーバ32は、クライアントからの複数の要求を同時に受け入れても良く、したがって、ポリシーMervletモジュール66およびインターセプティングMervletモジュール64はマルチスレッドである。
特に、プライマリサーバ32およびクライアント30は、以下のようにMervlet10をロードバランシングすることができる。サーバ32は、サーバマシン上でMervlet10を実行するとともに、要求しているクライアント30にMervlet10と遠隔的にやりとりさせることを選ぶことができる。あるいは、サーバ32は、クライアントデバイス上で実行するために、Mervlet10をクライアント30に送ることを決定することができる。ポリシーMervletモジュール66は、後述するアプリケーション提供スキームを使用して、Mervlet10を再配置するか否かを決定する。また、サーバ32あるいはクライアント30は、後述するネットワーク切換えスキームを使用して、互いに通信するためにアクセスネットワーク38を切換えることを選択しても良い。
要求されたMervlet10をサーバマシン上で実行することをサーバ32が決定する場合、ポリシーMervletモジュール66は、サーバのキャッシュからMervlet10を検索するとともに、メソッド「new()」を使用してMervletのためのメモリを割り当てる。その後、適当なMervletのコンテクストを使用して、メソッド「Init()」がMervlet10上に呼び出される。初期化されたMervlet10のインスタンスは、セキュリティのセマンティックスがJ2EEのそれと同じである場合、要求しているクライアントの認定を前提とする。要求されたMervlet10のインスタンスは、初期化された後、サーバ上のローカルデータにアクセスすることができる。また、Mervlet10は、後述するように、メッセージングシステム20により、クライアント30上のクライアントアプリケーションと通信することができる。したがって、Mervletエンジン12は、Mervlet10からの出力を、要求しているクライアント30に対して直接に送る。最後に、Mervlet上でメソッド「Destroy()」を呼び出すことにより、Mervlet10をデストロイすることができる。
要求されたMervlet10が要求しているクライアント30上で動作するべきであることをポリシーMervletモジュール66が決定すると、Mervletは整理されてリモートマシンに送られる。Mervlet10を再配置するため、エンジン12は、MervletをMervletアーカイブ(MAR)ファイル68中にパッケージングする。MARファイル68は、1)Mervlet10および任意の関連するタグライブラリ14と、2)Mervletのためのアプリケーション属性50およびセキュリティコンテキスト属性56と、3)Mervlet10に関連付けられた任意のデータファイルと、4)MARファイルのコンテンツを記載したMARファイルマニフェストと、を備えていることが好ましい。したがって、MARファイル68は、起動時にクライアント30上でMervletエンジン12が適当なMervletのコンテキストを形成してMervlet10のメソッド「Init」に送るために必要な情報の全てを有している。MARファイル68は、圧縮されて、ハッシュされ、その後、サインされ得る。ダウンローダは、解凍して、コンテンツが改悪されなかったことを確認し、サインを確認し得る。
ここで、Mervletアプリケーション環境がMervletアプリケーションをどのようにロードバランシングしてシステム故障から回復するか、について説明する。
(3.アプリケーションロードバランシングスキーム)
ここで詳細に説明するMervletアプリケーション環境の1つの特徴により、Mervletエンジン12は、Mervlet10をロードバランシングして、Mervletの性能を最適化することができる。
本発明に係るロードバランシングスキームは、サーバ32からMervlet10を要求しているユーザクライアントデバイス30とのユーザのやりとりを基本としている。特に、Mervletエンジン12のポリシーMervletモジュール66は、クライアントのユーザインタフェース(「UI」)におけるイベント待ち時間の測定を使用して、Mervlet10の応答性能を最適化する。本発明に係るMervletアプリケーション環境により、イベント待ち時間に基づくロードバランシングを、アプリケーション要求時間およびアプリケーションランタイムで行なうことができる。
モデルロードバランシングスキームは、2つのタイプの最適化、すなわち、アプリケーション提供およびネットワーク切換え、を可能にする。アプリケーション提供ポリシーにより、サーバは、ネットワークにおける何れのノードがMervletを実行すべきかを決定することができる。ネットワーク切換えポリシーにより、要求しているクライアントまたはサーバは、サーバとクライアントとの間で通信するための新たなアクセスネットワークを選択することができる。このモデルにより、開発者は、ロードバランシングのための大きなクラスのアルゴリズムを形成することができる。
ロードバランシングスキームを使用して行なうことができる性能の最適化を説明するため、クライアントデバイスのユーザインタフェースイベントにおけるタイムラインが図7に示されている。ユーザは、Mervletとやりとりしている間、交互の考え時間および待ち時間を進む。各考え時間Tの最後に、ユーザは、Mervletに対して要求を送り、応答を待つ。Mervletは、一般に、ユーザからの要求を1つのループ内で待つ。Mervletは、要求を受けると、計算およびデータアクセスを行ない、ユーザの要求を満たすことができる。その後、Mervletは、応答を送り戻す。図7に示されるタイムラインは、そのような1つのやりとりの全てを示している。
待ち時間Wは、要求の処理に関連付けられた時間である。待ち時間Wは、通信時間Cとサーバ計算時間Sとに分けることができる。一般に、ユーザの経験は、アプリケーションとのやりとり時における待ち時間の平均および分散(変動)に基づいている。したがって、その待ち時間が一般に所定の閾値を下回る場合には、Mervletの性能を最適化することができる。本発明に係るロードバランシングスキームは、サーバからユーザにより近くMervletを再配置することにより、あるいは、適切な場合には、クライアントとサーバとの間でアクセスネットワークを切換えることにより、Mervletのための待ち時間の平均および分散を最適化することができる。
Mervlet10をロードバランシングするため、Mervletエンジン12のポリシーMervletモジュール66は、図8に要約されて後述される性能属性52およびシステム属性54を含むアプリケーション属性50のセットを使用する。
(3.1 Mervlet性能属性)
Mervlet10をロードバランシングするために使用されるアプリケーション属性50は、2つの基準、すなわち、1)アプリケーションがどのようにインタラクティブであるか、2)アプリケーションが、どの程度コンピュータを駆使し、どのくらいデータ量が多いか、に基づいてMervletを特徴付ける性能属性52のセットを含んでいる。開発者は、本能的に、インタラクティブなアプリケーションをユーザにより近付ける能力と、データ量の多いアプリケーションをデータのソースにより近付ける能力と、コンピュータを駆使するアプリケーションをサーバクラスマシン等のより強力なデバイス上で実行させる能力と、をシステムに与えたいと考えている。一般に、開発者は、例えばJSPやServlet等のJ2EE上のサーバアプリケーションとして、あるいは、クライアントのためのアプレットとして、Javaアプリケーションを書き込む。例えば、ある開発者は、従来、ゲームをアプレットとして書き込み、また、銀行のアプリケーションをサーバベースのアプリケーションとして書き込む。一方、Mervletの開発者は、アプリケーションを1度書き込むだけで済み、その後、ポリシーMervlet66は、測定された性能属性52を使用して、ユーザの近くにMervlet10を再配置することができ、あるいは、アクセスネットワークを切換えて、Mervletのための良好な待ち時間の平均および分散を提供することができる。
(3.1.1 Mervletやりとり(インタラクション)の特徴付け)
特に、ユーザは、クライアントデバイス30とやりとりを行なってMervlet10から情報を要求する際、例えば、ウェブページ書式を送って情報のためのURLをクリックする際に、イベントを待つ。書式に必要事項を記入して応答を待つ行為およびリンクをクリックしてページを取得する(get)行為を含むこれらの行動は、ユーザインタフェースイベントと称される。Mervlet10がクライアントデバイス30上で実行する場合、待ち時間Wの全てがアプリケーションで費やされる。Mervlet10がサーバ32上でクライアントデバイス30から離れて実行している場合、待ち時間Wの一部Cは、要求しているクライアントとの通信に費やされ、待ち時間の残りSが、クライアント要求の処理のため、Mervlet自体において費やされる。
Mervlet10をロードバランシングするため、Mervletアプリケーション環境は、Mervletに要求を送る各書式および各URLに関して、Mervletの以下の性能属性、すなわち、待ち時間W、サーバ計算時間S、通信時間Cの平均および分散を測定する。
例えば、HTMLベースのクライアントは、クライアント上のブラウザからMervletへの全ての「get」および「post」をインタセプトすることができる。これは、MervletエンジンのインターセプティングMervletモジュールによって取り扱われる。「get」または「post」が実施されると、第1のタイムスタンプT1が取得される。「get」または「post」が戻って、Mervletによって生成された応答がブラウザ上に表示されると、第2のタイムスタンプT2が取得される。また、Mervletからの応答メッセージは、サーバSでの計算に費やされた時間を示すパラメータ値を含んでいる。したがって、以下の計算を行なうことができる。
W=T2−T1
W=S+C
ここで、
S=サービス時間
C=通信時間
W=待ち時間
T1=第1のタイムスタンプ
T2=第2のタイムスタンプ
サーバ32は、A(S)、A(C)、A(W)、V(S)、V(C)、V(W)でそれぞれ示される、サーバ計算時間、待ち時間、通信時間の平均および分散の移動平均を維持する。また、WパラメータおよびCパラメータの平均および分散の移動平均は、要求しているクライアントとサーバとの間の通信に使用される各アクセスネットワーク毎に計算される。
CパラメータおよびSパラメータが連続するランダムな変数である場合、以下の関係を想定することができる。
A(W)=A(C)+A(S)
V(W)=V(C)+V(S)+Cov(V,S)
ここで、VおよびSに関する統計的な共分散=Cov(V,S)である。
更に、VおよびSが統計学的に独立した変数である場合、以下の関係が成り立つ。
V(W)=V(C)+V(S)
したがって、Mervlet10のためのロードバランシングポリシーは、A(C)およびV(C)を減らすことにより、Mervletの性能のユーザの認識を向上することができる。
例えば、アプリケーション提供最適化を実施するアルゴリズムにおけるフレームワークは、A(W)が所定の閾値よりも大きいかどうかを確認することにより、Mervlet10のための待ち時間Wが許容されないかどうかを判断することができる。また、前記アルゴリズムにおけるフレームワークは、A(C)がA(S)よりも大きいことを確認することにより、通信時間Cが待ち時間Wにかなりの影響を与えているかどうかを判断することができる。Wが許容されず且つCがかなりの影響を与える場合、アルゴリズムは、Mervletを他のデバイスに再配置することを試みることができる。さもなければ、Mervletは、現在のデバイス上で実行し続ける。
同様に、ネットワーク切換え最適化を実施するために使用され得るアルゴリズムのフレームワークは、第1のアクセスネットワークを使用するMervlet10のための平均待ち時間A(W−ネットワーク1)が第2のアクセスネットワークを使用する平均待ち時間A(W−ネットワーク2)よりも長いかどうかを判断する。長い場合、アルゴリズムは、Mervletとの通信のため、第2のネットワークであるネットワーク2に切換える。
当業者であれば分かるように、性能属性52を使用してMervlet10をロードバランシングするための他の最適化アルゴリズムも考えられる。ロードバランシングスキームは、ユーザの経験を向上させユーザインタフェースイベントにおける応答性能を最適化するための様々なアルゴリズムをアプリケーション設計者が形成する機会を与える。
(3.1.2 サーバ計算時間およびデータアクセスの特徴付け)
前述したように、クライアントアプリケーションからの1つの要求に対する応答をMervletが生成するための全サービス時間は、サーバ計算時間Sによって測定される。Mervletは、内部計算を行なって、及び、外部データファイルにアクセスして、サーバ計算時間Sを費やしても良い。例えば、
S=D+I
ここで、
S=サービス時間
D=データI/Oのために費やされた時間
I=内部計算のために費やされた時間
サーバ計算時間Sを示す値を得るため、クライアントアプリケーションからの要求に応じてサーバのMervletエンジンがメソッド「Service()」をMervlet上で呼び出すと、サーバのタイマーが始動する。Mervletが要求に対する応答を生成すると、タイマーが停止される。タイマーの持続時間は、サーバ計算時間Sを測定する。MervletエンジンのためのI/Oライブラリには、データI/Oで費やされる時間DおよびデータI/O率DTPを記録するために機器が設けられる。内部計算のために費やされる時間Iは、前記方程式から計算できる。
また、Mervletエンジンは、サーバのタイマーを使用して、Mervletが終了する平均総使用時間、トータル時間、を記録することもできる。これらのパラメータは、後述するロードバランシングアルゴリズムを改良するために、Mervletの開発者が利用できるようにされる。
(3.1.3 性能属性計測)
以下は、J2MEライブラリを使用してMervlet10のファイルI/OイベントおよびユーザインタフェースをインタセプトするためのAPIの典型的なセットである。これらのAPIは、ライブラリjava.net, java.io, java.utilに対して以下の変更を要求する。
待ち時間W、サーバ計算時間S、通信時間Cを含む、Mervlet10のユーザインタフェースイベントを測定するための性能属性52は、java.netを変更して全てのhttp要求をインタセプトすることにより決定される。以下のメソッドは、前述のように、HTMLベースの形式(書式)およびURL処理に関する情報を収集するために使用される。

void recordEvent(EventType et,Event e,TimeStamp t)
所定の形式を有する各要求/応答の対が記録され、当該形式の全てのイベントがこのメソッドを使用してカウントされる。
また、データファイルを読み書きする以下のメソッドが与えられる。

void_recordFileIO(AccessType type, int data,Timestamp time)
パラメータAccessTypeにおけるデータタイプは、読み込みタイプまたは書き込みタイプであっても良い。このメソッドは、測定された性能属性をファイルに書き込む。
(3.2 システム属性)
また、ポリシーMervlet66は、ロードバランシングおよびネットワーク切換えの決定のため、アプリケーション属性54に加えて、システム属性54を使用する。システム属性54は、一般に、Mervletアプリケーション環境によって使用されるコンピュータデバイスの処理能力およびリソースに関連している。特に、図8に示されるように、以下の属性、すなわち、MIPS等級、CPU稼動時間の平均および分散、メモリおよび固定記憶域の大きさ、ネットワーク待ち時間の平均および分散、当該デバイスで利用可能な各ネットワークタイプにおける帯域幅、が各クライアント30およびサーバ32毎に記録される。
(3.2.1 計測によるシステム属性)
システム属性54を測定するため、J2MEプラットフォーム、java.sys.perfのための新たなライブラリは、以下のメソッドを利用できるようになる。

void System_cpu_util(Util U)
メソッドSystem_cpu_util(Util U)は、UNIX上で/dev/kemを読み取って、UNIXシステムにおけるCPU稼動時間情報を得る。当業者であれば分かるように、同様の呼び出しが他のオペレーティングシステムに存在する。

void System_network_bandwidth(bandwidth b,accessnetwork a)
メソッドSystem_network_bandwidth(bandwidth b,accessnetwork a)は、アクセスネットワーク「a」を使用して、クライアント30とプライマリサーバ32との間のネットワーク帯域幅を取得する。帯域幅は、既知のサイズSを有するパケットをクライアント30からプライマリサーバ32に送り、同じサイズのパケットを戻し、その後、パケットを得るために費やした時間でパケットサイズSを割ることにより、計算される。この計算は、オペレーティングシステムで精度良く行なわれることが好ましい。

Void sys_network_load_latency(accessnetwork a,latency l)
メソッドsys_network_load_latency(accessnetwork a,latency l)は、インターネット制御メッセージプロトコル(ICMP)を使用して、ネットワーク待ち時間を取得する。クライアントは、ICMPパケットを定期的にサーバに送るとともに、戻された値を使用して、待ち時間の平均値を長い時間にわたって維持する。システムアドミニストレータは、この演算が行なわれる頻度を設定することができる。

Void Network_uptime(Netuptime nu,accesslink a)
メソッドNetwork_uptime(Netuptime nu,accesslink a)は、クライアントとサーバとの間のネットワーク接続が保たれていて(upである)時間のパーセンテージを取得する。ICMPパケットが戻ると、システムは、ネットワークが切れ、さもなければダウンされた、と見なす。
(3.3 アプリケーション属性の収集および普及)
ロードバランシング決定を行なうため、測定されたアプリケーション属性は、ロードバランシングアルゴリズムに利用可能とされなければならない。アプリケーション提供最適化がサーバによって実行される。サーバおよびクライアントによってネットワーク切換え最適化が実行され得る。クライアントおよびサーバが動的にアプリケーション属性をプロファイルできる様々な方法がある。
例えば、要求しているクライアントのシステム属性は、サーバでのロードバランシングアルゴリズムにより、クライアントからのメッセージで得られ得る。サーバは、それ自身のシステム属性を記憶することができる。
クライアントは、現在実行しているMervletアプリケーションに基づいて、A(W)、A(C)、A(S)、V(W)、V(C)、V(S)に関する情報をローカルに維持することができる。また、クライアントデバイスは、複数のネットワークインタフェースを有していても良い。考え時間中、クライアント上の別個のアプリケーションは、異なるネットワーク上でのA(C)に関する情報を収集しても良い。この作業は、クライアントのバッテリに負担をかけ過ぎないように、省エネルギー形態で注意深く行なわれることが好ましい。各ネットワークインタフェースにわたりMervletのためのA(S)およびV(C)を加えることにより、各ネットワーク毎にA(W)を収集することができる。測定された各A(W)値は、ベクトルで記憶され得て、アプリケーション提供およびネットワーク切換えの決定において使用される。
また、クライアントは、サーバとの通信のために同じ基地局またはアクセスポイントを使用している共通のネットワーク上の他のクライアントから、A(C)に関する情報を収集しても良い。W、C、Sは、アプリケーション毎に或はアプリケーション毎のユーザ毎に測定され得て、クライアントのキャッシュ内に記憶され得る。クライアントのキャッシュは、例えばサーバを介して、他のクライアントと同期され得る。何れのクライアントが同じアクセスポイントまたは基地局を共有しているかに関してサーバが分かっていること、が前提である。サーバは、同じ基地局を共有する全てのクライアントにおける情報を収集する。その後、クライアントのキャッシュは、システムアドミニストレータによって設定される頻度で、サーバに対して定期的に送られる。その周期は、システムアドミニストレータによって設定される。サーバは、データを収集するとともに、クライアントが要求する場合には、この情報およびスムージングインターバルをクライアントに送る。スムージングインターバルは、一連のロードバランシング最適化の間で経過しなければならない時間を示す所定の値である。
また、クライアントのキャッシュは、クライアント間で直接に同期されることもできる。この場合、各クライアントは、Bluetooth、IRDAまたは802.11b等の特別のネットワークを介して、キャッシュされた情報を他のクライアントにブロードキャストする。そのようなブロードキャストメッセージは、クライアントとサーバとの間の通信のためのネットワークを通じて伝搬する必要がない。その代わり、クライアントは、個別に、データを収集する。スムージングインターバルは、システムアドミニストレータによって決定されても良く、あるいは、クライアントは、分配されたコンセンサスアルゴリズムを使用して、スムージングインターバルにおいて一致することができる。
サーバは、Mervletがサーバ上で実行される時にはいつでも、待ち時間、通信時間、サーバ時間の測定された平均および分散を含む、当該Mervletにおける測定された性能属性を得ることができる。システムアドミニストレータは、動的プロファイルを使用するのに十分な測定データが性能属性に関して存在する前に、Mervletが実行しなければならない回数、例えば10回の繰り返し、を選択することができる。
(3.3.1 収集モード)
Mervletにおける性能属性値は、ユーザ毎に、あるいは、アプリケーション毎のユーザ毎に、あるいは、デバイス毎のアプリケーション毎のユーザ毎に、収集されても良い。デバイスがアプリケーション毎に性能属性を測定して記憶する場合、ロードバランシングアルゴリズムは、ユーザに関係無く、この情報を使用しても良い。また、デバイスは、ロードバランシングアルゴリズムが様々なユーザのプロファイルへと問い合わせすることができるように、アプリケーション毎のユーザ毎に、性能属性を測定して記憶しても良い。
イベントを記録するための機構に関連付けられるオーバーヘッドを最小限に抑えることが望ましい場合がある。したがって、性能属性およびシステム属性の収集は、記憶および処理の観点から妨害的であってはならない。各アプリケーション属性毎にデータを保存するための記憶要件は比較的最小であるため、このデータをメモリに書き込むこと、並びに、システムクロックを読み取ることは、妨害的であってはならない。例えば、ユーザインタフェースイベントが約500ミリ秒から約1秒で生じるとすると、約1ミリ秒の粒状度でシステムクロックをサポートするMervletアプリケーション環境のJavaの実行により、ほんの僅かなオーバーヘッドでユーザインタフェース関連のイベントを測定することができる。
(3.4 ロードバランシングアルゴリズム)
Mervletアプリケーション環境は、そのアプリケーション属性およびシステム属性に基づく2つの異なる最適化、すなわち、アプリケーション提供およびネットワーク切換え、を使用して、アプリケーションロードタイムおよひランタイムで、Mervletをロードバランシングすることができる。具体的には、ユーザがMervletを要求すると、MervletエンジンのポリシーMervletモジュールは、Mervletを実行すべき場所および通信のために使用すべきアクセスネットワークを決定する。同様に、ランタイム中、Mervletエンジンは、ユーザに対する応答性能を向上させるために、Mervletを再配置すること、あるいは、アクセスネットワークを切換えること、を決定しても良い。
しかしながら、当業者であれば容易に分かるように、後述するロードバランシング最適化は、他のモバイルアプリケーションのための実行環境で使用することができ、Mervletに限定されない。例えば、開発者は、遠く離れたブラウザにコンテンツを提供するAgletと呼ばれるアプリケーションプログラム、または、一方のマシンから他方のマシンへとネットワークにわたって移動することができる他のアプリケーション、を形成しても良い。Agletは、当該Agletがそれ自身をURLにて指定された他のマシンへ送ることを許容するメソッド「dispatch(url)」を有していても良い。Agletシステムにおけるデバイスは、システムデータベースに記憶された待ち時間の平均および分散のリストを有していても良い。Agletは、システムライブラリを介してこの情報にアクセスしても良く、また、それ自身、実行すべきマシンを選択する任意のポリシーを書き込むことができる。例えば、Agletシステム上で以下の定型化されたコードシーケンスを実行してロードバランシングすることができる。

DispatchPolicy()

If(A(W)>Aglet_Threshold)then
Dispatch(URL);

この場合、A(W)は、Agletにおける平均的な平均待ち時間であり、URLは、ブラウザマシンにおけるAgletランタイムのURLである。この方法論を使用すると、Agletは、1)現在のマシン上に残ることができ、あるいは、2)それ自身をブラウザと同じマシンへと移動させることができる。
(3.4.1 アプリケーション提供最適化)
次に、図9を参照すると、アプリケーション提供最適化の実施例が決定ツリーを使用して示されている。このアプリケーション提供アルゴリズムは、サーバによって実行されるとともに、Mervlet等のアプリケーションのロードタイムおよびランタイムで同様に適用可能である。
アプリケーション提供アルゴリズムは、Mervlet10または他の再配置可能アプリケーションの、平均通信時間Cおよびサーバ計算時間Sを含む平均待ち時間Wに基づいている。Mervlet10を、サーバ32から、要求しているクライアントデバイス30へと移動させることにより、通信時間Cをほぼ0まで減らすことができる。最初に、ステップ50において、アルゴリズムは、Mervletからコンテンツを要求しているクライアントがMervletを実行できる十分なメモリを有しているか否かについて、当該要求から得られるクライアントに関する情報を使用して判断する。同様に、ステップ52において、アルゴリズムは、アプリケーションを実行するのに十分な処理能力、クライアントのMIPS等級によって測定される、をクライアントが有しているか否かを判断する。
次に、ステップ54において、アルゴリズムは、サーバのCPU稼動時間によって測定されるようなサーバ上における計算負荷が所定のLoad_threshold値(負荷閾値)よりも大きいか否かを判断する。また、ステップ54において、アルゴリズムは、サーバからクライアントへのMervletの移動に関連付けられた再配置オーバーヘッドが所定のRO_threshold値(再配置オーバーヘッド閾値)よりも小さいか否かを判断する。再配置オーバーヘッドは、システムアドミニストレータによって設定される関係を使用して、Mervletの大きさに基づいて計算され得る。両方の条件が満たされると、ステップ56において、アルゴリズムは、クライアント上でMervletを実行させるべく、Mervletをクライアントへと移動させるようにサーバに指示する。このシーケンスは、サーバが非常にビジーであるためにMervletをタイムリーに処理することができない場合に、Mervletをクライアント上に移動させることで、Mervletの応答性能を向上させるのに役立つ。
両方の条件が満たされない場合、ステップ58において、アルゴリズムは、Mervletにおける平均待ち時間が所定のAW_threshold値よりも長いか否かを判断する。ステップ58において、この条件が満たされ、平均待ち時間と平均通信時間との間の差によって測定される平均サーバ計算時間が所定のAS_threshold値よりも小さく、かつ、再配置オーバーヘッドが所定のRO_threshold値よりも小さい場合、アルゴリズムは、ステップ60において、クライアント上でMervletを実行するべく、Mervletをクライアントへと移動させるようにサーバに指示する。このステップは、当該移動後のサーバ計算時間があまり長くない限りにおいて、Mervletのユーザインタフェースイベントにおける待ち時間が長すぎる場合に、Mervletをクライアントに再配置させることで、Mervletの応答性能を向上させるのに役立つ。
また、アルゴリズムは、平均待ち時間が所定の閾値よりも長く且つ平均通信時間が平均サーバ計算時間よりも長い場合に、Mervletを再配置することを決定しても良い。
同様に、ステップ62において、アルゴリズムは、Mervletにおける待ち時間の分散が所定のVW_threshold値よりも大きいか否かを判断する。ステップ62において、この条件が満たされ、待ち時間の分散と通信時間の分散との間の差によって測定されるサーバ計算時間の分散が所定のVS_threshold値よりも小さく、かつ、再配置オーバーヘッドが所定のRO_threshold値よりも小さい場合、アルゴリズムは、ステップ64において、クライアント上でMervletを実行するべく、Mervletをクライアントへと移動させるようにサーバに指示する。このステップは、当該移動後のサーバ計算時間があまり長くない限りにおいて、Mervletのユーザインタフェースイベントにおける待ち時間が長すぎる場合に、Mervletをクライアントに再配置させることで、Mervletの応答性能を向上させるのに役立つ。さもなくば、ステップ66において、Mervletは、サーバ上で実行される。
あるいは、アプリケーション提供アルゴリズムは、A(S)がA(C)よりも十分に小さい場合に成すその決定において、A(S)を無視することができる。さもなくば、SがCとほぼ同じである場合、倍率SFを使用してデバイス上のA(S)を評価することができる。SFは、サーバ上のSpecIntをデバイス上のSpecIntで割った値である。ここで、SpecIntは、プロセッサ速度を比較するための既知の基準である。
当業者であれば分かるように、アプリケーションにおける待ち時間を使用するMervlet提供アルゴリズムのための他の実施も考えられる。例えば、待ち時間の平均および分散を比較するステップを省略する他のアルゴリズムが考えられる。
(3.4.1.1 要求時間でのアプリケーション提供)
クライアントデバイス30からの要求がMervlet10のためのサーバ32で受けられる場合、当該要求は、以下の構造を有している。

URI
クライアントにおけるMIPS等級
クライアントにおけるCPU稼動時間の平均および分散
クライアントにおける利用可能なデバイスメモリおよび固定記憶域(所定の時間にわたって平坦化される)
{性能属性、アプリケーションにおけるデータサイズ}
Mervlet10の性能属性は、クライアント30上の1つのファイルで維持されるとともに、MervletURIにより、また、随意的にはユーザにより、インデックスが付される。
その後、サーバ32上のポリシーMervletモジュール66は、サーバ自身の性能データベースを調査し、以下のデータを検索する。

サーバにおけるCPU稼動時間の平均および分散
各アクセスリンクにおける待ち時間並びにネットワーク帯域幅の平均および分散
サーバに付随する
{性能属性、アプリケーションにおけるデータサイズ}
アプリケーション提供アルゴリズムは、クライアント30またはサーバ32またはこれらの組み合わせから得られるアプリケーション属性を使用して、Mervlet10が実行されるべきデバイスを選択することができる。
サーバ32は、新たなMervletまたはその性能属性が新しくないMervletをロードバランシングしようとする場合、ネットワーク中の他のデバイス上におけるMervletの最近の実行から、性能属性に関する値を得ることができる。あるいは、サーバ32は、それが記憶された同様のデバイスおよびネットワーク上の同様のアプリケーションにおける性能属性のキャッシュされた値を使用することができる。新しさの基準は、システムアドミニストレータによって設定される。
(3.4.1.2 ランタイムでのアプリケーション提供)
現在実行しているMervletをロードバランシングするため、要求しているクライアント30は、その性能が特定の閾値を超えて低下したか否かを判断して、この情報をサーバ32に送る。具体的には、Mervlet10がサーバ32上で実行し、クライアント30がそれに遠隔的にアクセスしている間、クライアントは、クライアントからの全てのユーザインタフェースイベントに関する待ち時間の平均および分散を監視する。A(W)またはV(W)が所定の閾値に達すると、クライアント30は、以下の情報を含むメッセージをサーバ32に送る。

クライアントにおけるMIPS等級
クライアントにおけるCPU稼動時間の平均および分散
クライアントにおける利用可能なデバイスメモリおよび固定記憶域(所定の時間にわたって平坦化される)
{性能属性}
その後、サーバ32は、Mervlet10が代わりにクライアント30上で実行するべきか否かを判断する。実行すべき場合には、Mervletおよびその性能属性がクライアントに移動される。サーバは、クライアントがその保存状態を使用してMervletの実行を再開できるように、Mervletがシャットダウンされて再配置される前に、Mervletの状態を保存しても良い。
(3.4.2 ネットワーク切換え最適化)
図10には、決定ツリーを使用して、ネットワーク切換えアルゴリズムの実施例が示されている。このネットワーク切換えアルゴリズムは、Mervletアプリケーション環境のクライアント30およびサーバ32によって実行することができる。クライアントおよびサーバが複数のアクセスネットワークを使用して通信できると仮定すると、ネットワーク切換えアルゴリズムは、待ち時間の平均および分散を下げるために、アクセスネットワークを切換えることができる。ユーザは、サーバ32から、あるいは、他のデバイスから、クライアントデバイス30上に様々なネットワーク切換えアルゴリズムをインストールすることができる。
最初に、ステップ70において、ネットワーク切換えアルゴリズムは、現在のアクセスネットワークを使用して、Mervletにおける平均待ち時間が所定のAW_threshold値よりも長いか否かを判断するとともに、Mervletにおける平均通信時間が所定のAC_threshold値よりも長いか否かを判断する。これらの条件が満たされ且つネットワーク切換えオーバーヘッドが所定のSO_threshold値よりも小さい場合、ネットワーク切換えアルゴリズムは、ステップ74から82において、アクセスネットワークを切換えることを試みる。システムアドミニストレータによって設定された関係を使用して、Mervletのサイズに基づいて、ネットワーク切換えオーバーヘッドが計算され得る。以上の条件が満たされない場合には、ステップ72において、現在のアクセスネットワークが使用されたままとなる。
次に、ステップ74において、アルゴリズムは、利用可能な全てのアクセスネットワークにわたるアプリケーションの待ち時間の平均および分散を計算する。その後、アルゴリズムは、一群の利用可能なアクセスネットワークにおける最小の平均待ち時間を特定する。ステップ76において、最小平均待ち時間が所定のAW_threshold値よりも短く且つ1つのアクセスネットワークNNだけがそれと一致している場合、ステップ78において、アルゴリズムは、そのアクセスネットワークNNに切換えるようにデバイスに指示する。
ステップ80において、最小平均待ち時間が所定の平均閾値よりも短く且つ2つ以上のアクセスネットワークがそれと一致する場合、ステップ82において、アルゴリズムは、待ち時間の分散が最も小さい特定されたグループの中からアクセスネットワークを選択する。また、アクセスネットワークを切換えるためのこれらの条件が何れも満たされない場合、ステップ84において、現在のアクセスネットワークが使用されたままとなる。
あるいは、アルゴリズムは、その平均待ち時間が現在使用されているアクセスネットワークにおける平均待ち時間よりも所定の閾値T−meanwaitだけ短いアクセスネットワークを見つけた場合、アクセスネットワークを切換えることができる。全てのアクセスネットワークにおける平均待ち時間は略同一であるが、待ち時間の分散が現在使用されているネットワークにおける待ち時間の変動よりも所定の閾値T−varianceMeanwaitだけ小さいアクセスネットワークが存在する場合、アルゴリズムは、このネットワークに切換えることができる。
(3.5 稼動時間の平坦化)
稼動時間の平坦化(スムージング)は、ロードバランシング中においてスラッシングを防止できる技術である。特に、Mervletアプリケーション環境は、単に、期間T毎にN個のネットワーク切換えイベントを許容するだけである。これらのパラメータは、システムの個々の実施に伴って変化することができ、また、ネットワークのシステムアドミニストレータによって設定され得る。クライアントにおける以下のアルゴリズムを使用して、ネットワーク切換えアルゴリズムにおけるスムージングインターバルを決定することができる。
各クライアントは、そのピア(同等物)の各々によって期間Tに成される切換えのリストを有している。ピア群は、動的に形成され、あるいは、サーバから要求され得る。クライアントは、ネットワークを切換える度に、その情報を特別のネットワークを使用してその近隣のクライアントにブロードキャストする。期間Tにおける切換えイベントの数がN個を下回る場合にだけ、切換えアルゴリズムが実行される。しかしながら、リンクそれ自体が機能しなくなる時、アルゴリズムは、ネットワークを即座に切換えるように構成されても良い。あるいは、サーバは、最近成された切換えのリストを維持するとともに、その情報を、アプリケーション属性の更新を要求している各クライアントに対して送っても良い。
(4.フォールト・トレランス・スキーム)
Mervletアプリケーション環境により、システムアドミニストレータは、2つのコンポーネント、すなわち、クラッシュから回復できるMervletエンジン10と、トランジット中のメッセージが少なくとも1度のセマンティクスで供給されることを保証する信頼できるメッセージングシステム20と、を使用して、システムが許容すべき故障のタイプを選択することができる。信頼できるメッセージングシステム20は、以下のように、すなわち、フォールトトレランスが無い、クライアントおよびネットワークの故障から回復することができる、クライアント、ネットワーク及びサーバの故障から回復することができる、というように構成され得る。
例えば、複数のクライアントからの要求処理中、または、1つのサーバからの応答中に、サーバ及びUCD間へのネットワーク接続が損なわれるかもしれない。必要に応じて、再接続時、サーバは、Mervletを実行すべき場所を決定するための決定アルゴリズムを自動的に実行する。また、システムアドミニストレータは、システムコンポーネントをフォールトトレラントするか否かを選択することができる。交換条件は、必要とされる信頼性と比較検討されなければならない性能関係をフォールトトレランスが有しているということである。本発明に係るフォールトトレランス方法論は、コンポーネントの回復に関連付けられたコスト及びその対応するコストに基づいて、モバイルシステムにおける様々な故障を特徴付ける。それから、本発明に係るフォールトトレランス方法論により、システムアドミニストレータは、回復すべきコンポーネントを選択することができる。
当業者であれば容易に分かるように、本発明のフォールトトレランススキームは、後述する信頼できるメッセージングシステムおよび回復可能なアプリケーションエンジンを有する他のモバイルアプリケーションのための実行環境を使用して実施されても良く、Mervletに限定されない。
(4.1 回復可能なMervletエンジン)
Mervletエンジン12は、現在実行している全てのMervlet10及びそれぞれにおける最近のMervletのcontextのリストを含むその状態を、固定記憶域に定期的に記憶する。また、リストには、各アプリケーションの優先順位が含まれていても良い。また、エンジン12は、そのアプリケーション状態を固定記憶域に保存するために、Mervlet10上でメソッドSave()を任意のタイミングで呼び出すことができる。
Mervletエンジン12は、それ自身の状態を元に戻して、クラッシュ時にデバイス上で実行していたMervletのセットを再起動することができる。Mervletエンジン12は、そのリスト上の各Mervlet10を1つずつ再起動する。Mervletを再起動する順番は、それらの優先順位に依存し得る。デバイス故障後にMervletが再起動されると、Mervlet10は、ランタイムエンジン12を用いて、メソッドRestore(Application Context)を実行することができる。データオブジェクトApplication Contextは、アプリケーション及びそのコンテキストを特定するランタイムエンジンのリストからのデータを含んでいる。メソッドRestore(Application Context)は、ローカル通信バッファの状態を読み取ってクライアント30上のMervletのための信頼できるメッセージングシステム20の通信状態を特定することを含む、Mervlet固有の回復作業を実施することができる。また、メソッドRestore(Application Context)は、サーバ32上のMervletのための信頼できるメッセージングシステム20の通信状態を問い合わせることもできる。当該メソッドは、Mervlet10が元の状態に戻った後、制御をMervletエンジン12に戻すことができる。
(4.2 信頼できるメッセージングシステム)
Mervletアプリケーション環境のメッセージングシステム20は、様々なメッセージングプロトコルを使用して、Mervlet間の通信およびネットワーク内でのMervlet自身の転送を容易にする。例えば、役に立つと見なされたメッセージングプロトコルのタイプには、同期可能または非同期可能な、一方向プロトコルおよび要求−応答プロトコルが含まれている。進行中のトランザクションが保存されることを保証するように、メッセージングシステム20がフォールトトレラントであっても良い。しかしながら、信頼できるメッセージングシステムは、デバイス故障後にMervlet自身を回復させることの責任は負わない。
特に、図11に示される信頼できるメッセージングシステム70は、クライアント側にキュー(待ちライン)72を有しており、これにより、クライアント30から発信する全ての通信がバッファに蓄えられる。バッファは、ユーザが構成可能な大きさを有している。また、各メッセージが固有の連続番号でタグ付けされるとともに、各要素毎に応答が求められる。応答が受けられない場合、メッセージは、応答が受けられるまで再送信される。応答が受けられると、バッファに記憶された適当なメッセージがシステムから解放される。
デバイスに内在するオペレーティングソフトウェアまたはMervlet10内の高レベルイベントに対して応答が関連付けられるように、信頼できるメッセージングシステム70が実行されても良い。一般的なアプリケーション通信においては、内在するソフトウェアに対して応答が関連付けられるような一般的な形式が使用される。システムレベルの信頼できる通信の場合、バッファリング機構は、より低いオーバーヘッドのためにMervletエンジンによって受けられる要求に対して関連付けられる。
信頼できるメッセージングシステム70を実行するため、以下のAPIが与えられる

void Reliable_async_send(Endpoint to, Endpoint From, MessageData Data, Reliability Type, CallbackMethod cm)
「to」フィールドは受信側を特定する。「from」フィールドは送信元を特定する。「data」フィールドは、順番に並べられた送信されるデータである。「type」は、アプリケーションレベルまたはシステムレベルである。コールバックメソッドは、承認が得られた時に呼び出される。このAPIを使用すると、システムは、少なくとも1つのメッセージ送出を保証することができる。
信頼できるメッセージングシステム70のためのメッセージフォーマットが図12に示されている。メッセージフォーマットは、6つのフィールドの全てを有している。この場合、最初の4つのフィールドはサイズが固定されており、データセグメントはサイズが可変であり、チェックサムは、可変であるとともに、全てのフィールドにわたって計算される。個々のメッセージのデータペイロード内にMervlet自体を含めることにより、信頼できるメッセージングシステム70を使用して、ネットワーク内でMervletを再配置することができる。
図13に示される動作時、メソッドReliable_async_sendを呼び出すことによりステップ102においてクライアントアプリケーションがサーバ上のMervletに対してメッセージを送信する度に、クライアント30上の信頼できるメッセージングシステム70は、ステップ104において、フラッシュメモリやマイクロドライブ等のクライアントの固定記憶域に使用可能なバッファ空間が存在するか否かを確認する。最大のバッファ空間は、システムアドミニストレータにより、所定の値MAX_BUFに設定される。利用可能な十分なバッファ空間が存在する場合、ステップ106において、メッセージがバッファに蓄えられ、信頼できるメッセージングシステム70のバッファマネージャは、当該メッセージに連続番号を付ける。固有の連続番号を用いて2対のマシン間で全てのメッセージが送信される。メッセージがバッファに蓄えられると、呼び出しはクライアントアプリケーションに戻ることができる。呼び出しは、メッセージが固定記憶域にバッファリングされるまで、クライアントアプリケーションに戻らない。呼び出しが戻ると、クライアントアプリケーションは、たとえクライアントデバイスまたはネットワークが機能しなくなる場合であっても、メッセージが適切なMervletに送られることが保証される。
バッファマネージメントスレッドが定期的に起動し、ステップ108において、バッファリングされたメッセージをサーバ32に送信するとともに、先に送られたメッセージへの応答を待つ。各メッセージは、当該メッセージに関連付けられた所定のタイムアウト値を有している。メッセージ応答がタイムアウト期間内に受けられないと、メッセージが再送信される。このプロセスは、応答が受けられるまで続く。バッファマネージメントスレッドは、アクセスネットワーク38が作動し且つプライマリサーバ32への経路が確立された時にのみトリガされる。
ステップ110において、サーバ上で要求メッセージを受け取ると、システムアドミニストレータは、信頼できるメッセージングシステム70が当該メッセージをいかに処理してサーバ上のMervletへと供給すべきか、を選択することができる。例えば、システムは、ステップ112において、メッセージをMervletに即座に供給することができ、その後、ステップ114において、ハードディスク等の固定記憶域にメッセージを記憶することができる。これは、メッセージが「安全な」状態でない時間を増大させるが、Mervletにメッセージへの迅速なアクセスを与える。あるいは、ステップ116において、サーバ32上の信頼できるメッセージングシステム70は、メッセージを受け取った時に、そのメッセージを固定記憶域に記録することができ、その後、ステップ118において、当該メッセージをMervletに対して配信する。その後、Mervletは、メッセージを処理して(ステップ122)、応答を生成する(ステップ124)。また、Mervletは、信頼できるメッセージングシステム70に対して生成した応答を送信する。システムは、ステップ126で応答を記録し、その後その応答を、ステップ128で、対応する要求を発したクライアントに送ろうとする。この時点で、要求メッセージは、ステップ130において、サーバ上の固定記憶域バッファから除去される。
クライアントは、応答を受ける(ステップ132)と、固定記憶域のバッファ内に当該応答を即座に記憶する(ステップ134)。その後、クライアントは、サーバに送られた適合する要求メッセージを見つけ、ステップ136において、その要求メッセージをバッファから除去する。次に、ステップ138において、クライアントは、クライアントアプリケーションからの適当なコールバックメソッドへの応答を供給しようとする。コールバックメソッドが呼び出されると、ステップ140において、応答が解放される。より高い連続番号を有する同じクライアントからの次のメッセージが受けられると、ステップ120において、応答のためのバッファがサーバ上で解放される。二重メッセージがサーバによって受けられると、この二重メッセージは処分される。承認バッファのサイズは、システムアドミニストレータによりACK_BUFに設定される。
(4.2.1 プライマリサーバへの接続の検索)
信頼できるメッセージングシステム70は、クライアントデバイス30とサーバ32との間の接続を管理する。システムは、定期的に起動して、以下のタスクを行なう。システムは、Bluetooth、802.11b(Wi−Fi)無線、IRDA、汎用パケットラジオサービス(GPRS)携帯電話ネットワーク802.11b等の任意のクライアントアクセスネットワークによってプライマリサーバ32が到達できるか否かを確認する。システムは、ICMP Pingをプライマリサーバ32に送ることにより、前記確認を行なう。クライアント30とサーバ32との間の更なる通信のため、最も適切と思われる第1のアクセスネットワークが使用される。また、信頼できるメッセージングシステム70は、そのバッファマネージメントスレッドを起動し、サーバ32と通信するために使用するべきプロトコルを前記スレッドに知らせる。
(4.2.2 構成可能性)
フォールトトレランスは、全てがディスクコストタイムおよびディスクスペースに書き込むため、コストがかかる。次に、図14を参照すると、信頼できるメッセージングシステム70を実行するための幾つかのコンフィギュレーションが示されている。第1列は、メッセージがサーバ32およびクライアント30に記録される技術を示しており、第2列は、メッセージがクライアント30だけに記憶されることを示しており、第3列は、メッセージが記録されない技術を示している。最初の2つの選択肢は、フォールトトレランスにおける以下の選択を与える。ユーザがランタイムコストを下げることを望み、アプリケーションの回復において時間を惜しみなく費やす場合には、第2の選択肢が考慮されても良い。第1の選択肢は、メッセージがクライアントおよびサーバに記録されるため、高いランタイムコストを有している。しかし、ユーザにとっての利点は、信頼できるメッセージングシステムを使用するアプリケーションの回復がより強力に成されるという点である。
(4.3 故障の対処)
サーバ32は、故障から回復すると、図13に示されるステップ106で記憶されたその固定記憶域にあるバッファリストを見る。信頼できるメッセージングシステム70は、デバイスの固定記憶域上のデータがデストロイされていない一方でデバイスのメインメモリ内のデータがデストロイされていると見なす。前記リストがクライアント30からのメッセージを含んでいる場合、信頼できるメッセージングシステム70は、要求が処理されなかったと見なし、メッセージをサーバ上の適当なMervletに供給することを試みる。同様に、クラッシュからの回復後に、サーバ32がバッファリングされた応答を見つけると、システムは、それを、適切な送信先のクライアント30に送る。
Mervletアプリケーション環境全体をクラッシュからうまく回復させるため、以下の一連の回復作業が使用される。
1)信頼できるメッセージングシステム70を、一致した状態にする。
2)後述するキャッシング・インフラストラクチャを、一致した状態にする。
3)Mervletエンジン12を、一致した状態にする。
4)個々のMervlet10を、順次に一致した状態にする。
(5.切断モード計算)
クライアントデバイス30は、例えばネットワーク帯域幅の利用を減らすため、2つの契機、すなわち、ネットワーク故障またはシステムアドミニストレータ或はユーザによる自発的な移動、により、サーバ32または他のデバイスから「切断され」ても良い。Mervletアプリケーション環境は、ネットワークから切断された状態での作業をサポートするために、2つの特徴、すなわち、信頼できる非同期のメッセージングおよびMervletキャッシングを提供する。
ネットワーク接続がクライアントとサーバとの間に存在しない場合、信頼できる非同期メッセージングにより、クライアント30またはサーバ32でメッセージがキューに入れられ得る。アプリケーションがメッセージを送ると、メッセージは、前述したように、ローカルに、バッファに記憶され、あるいは、キューに入れられる。ネットワーク接続が確立された時にだけ、メッセージが送られる。ネットワーク接続が回復されると、信頼できる非同期メッセージングシステムは、バッファキュー内で待っているメッセージを再送信する。また、信頼できるメッセージングシステム70は、固定記憶域内にメッセージキューを保存することができ、これにより、前述したように、デバイスおよびサーバ故障を許容することができる。
切断モード計算のための第2の機構は、クライアントデバイス30上のローカルキャッシュ内にMervletを記憶することを要求する。キャッシュメモリは、図1に示されるキャッシュマネージャ22によって管理される。キャッシュは、ネットワーク接続が無くても、ブラウザまたは他のクライアントアプリケーションからアクセス可能である。クライアント30がネットワークから切断されても、キャッシュ上のMervletは、依然として、ローカルブラウザから利用することができる。また、ローカルブラウザは、依然として、ローカルキャッシュからMervletを呼び出すことができる。
キャッシュは、様々な方法で管理することができるが、キャッシュは、ホアーディング(hoarding)等の技術を使用したインテリジェント・プレフェッチングを許容することが好ましい。将来のMervletアクセスに関する多くの知識をサーバが有している状態で、例えば、協調的な設定で、あるいは、情報が積極的にクライアントデバイス30へと押し出される設定で、Mervletキャッシング機構により、クライアント30は、様々なキャッシュ管理決定をサーバ32に委託することができる。したがって、クライアント30によって、サーバ32によって、あるいは、両者の組み合わせによって、キャッシュ管理ポリシーを設定することができる。ランタイムで、サーバ32は、キャッシュ交換を更新して、クライアントデバイス30のキャッシュに記憶された各Mervlet10毎にポリシーを書き込むことができる。
更に、当業者であれば分かるように、必要に応じて、キャッシュマネージャ22は、コードおよびデータを別個に処理するキャッシングアルゴリズムを実行することができる。また、キャッシュは、キャッシュ管理アルゴリズムにデバイス特性および個々のユーザの利用プロファイルを考慮しても良い。
一実施例に係るキャッシュマネージャ22は、pre_fetch classのメソッドを呼び出して、プレフェッチングを実行し、cache_miss classを呼び出して、キャッシュミスの対処を行ない、cache_write classを呼び出して、キャッシュへのデータ書き込みを行なう。
プレフェッチ作業は、サーバで開始され、あるいは、クライアントで開始される。プレフェッチがサーバで開始される場合、サーバ32は、プレフェッチ通知をクライアント30に送る。クライアント30は、キャッシュ状態ベクトルを送り戻す。その後、サーバは、ドキュメントの新たなセットをクライアントに送り、また、随意的に、新たな交換ポリシーをクライアントに送る。また、サーバ32は、クライアントデバイス30上でMervlet10を実行するための要求を行なう。Mervlet10がクライアント30上で実行されると、クライアントは、キャッシュ状態ベクトルをサーバ32に送り戻す。その後、サーバ32は、キャッシュオブジェクトのセットをMervlet10に送るとともに、交換ポリシーを送る。次に、Mervlet10は、サーバ32に呼び返して、新たな交換ポリシーのためのクラスをロードする。
キャッシュミスに対処するため、クライアント30上のキャッシュマネージャ22は、ドキュメントが見当たらないことを示す要求をプライマリサーバ32に送るとともに、ミスが起きた時のローカルキャッシュ状態のベクトルを送る。ベクトルは、キャッシュのサイズと、サーバへの最後の更新以後におけるキャッシュのためのハッシュテーブルへの任意の変更と、を含んでいる。プライマリサーバ32は、要求されたドキュメントを送り戻す。また、プライマリサーバは、他のプレフェッチされたドキュメントおよび交換ポリシーを送り戻しても良い。クライアント30は、この新たな交換ポリシーをそのキャッシュ上で使用する。以下は、このメソッドを示す擬似コードである。

Void handle_cashe_miss()
Send(primary_server, hash_vector_diff, uri)
Receive(cache_objs, new_policy)
if(new_policy) load_class(new_policy);
return;
クライアント30がそのキャッシュのための新たなMervlet10のリストを要求すると、サーバ32は、それらを送り戻すとともに、随意的に、交換ポリシーを送り戻す。再度、クライアントは、積極的に、交換を実行する新たなクラスをダウンロードする。
クライアント30のローカルキャッシュのための書き込みポリシーは、サーバ32からダウンロードされる新たなクラスを使用して、キャッシュマネージャ22により変更されても良い。キャッシュ内の各要素毎に、サーバ32は、オブジェクトがキャッシュから出される時にダーティーオブジェクトまたは書き込まれたオブジェクトをどのように扱うかに関するポリシーを添付することができる。したがって、キャッシングシステムは、システムがキャッシングを行なうか否かを選択するように構成することができる。これは、動的選択またはランタイム選択である。また、キャッシングシステムそれ自体は、3つの領域、すなわち、交換ポリシー、プレフェッチポリシー、修正データ管理ポリシー、で動的に拡張可能である。
特定の例示的な実施形態を参照しながら本発明を説明してきたが、本発明がこれらの例示的な実施形態に限定されることを意図するものではない。当業者であれば分かるように、以下の請求の範囲によって規定された本発明の真の範囲および思想から逸脱することなく、変形および変更を行なうことができる。したがって、添付の請求の範囲およびその等価物に入るそのような全ての変形および変更が本発明に含まれることを意図している。
本発明に係るMervletアプリケーション環境のシステムコンポーネントを示すブロック図である。 図1のMervletアプリケーション環境の動作の詳細を示すフローチャートである。 図1のMervletアプリケーション環境のためのモバイル通信ネットワークの高レベルビューを示すブロック図である。 図1のMervletアプリケーション環境におけるMervletアプリケーションの構造およびその属性を示すブロック図である。 図1のMervletアプリケーション環境におけるMervletアプリケーションのライフサイクルを示すブロック図である。 図1のMervletアプリケーション環境におけるMervletエンジンの全体構造およびステップを示すブロック図である。 図1のMervletアプリケーション環境におけるユーザインタフェースイベントのためのタイムラインを示すブロック図である。 図1のMervletアプリケーション環境における性能属性およびシステム属性を要約する表である。 図1のMervletアプリケーション環境におけるMervletをロードバランシングするためのアプリケーション提供最適化の詳細を示すフローチャートである。 図1のMervletアプリケーション環境におけるMervletをロードバランシングするためのネットワーク切換え最適化の詳細を示すフローチャートである。 図1のMervletアプリケーション環境におけるMervletエンジンと信頼できるメッセージシステムとの間のインタフェースを示すブロック図である。 図11の信頼できるメッセージングシステムにおけるメッセージの構造を示す図である。 図11の信頼できるメッセージングシステムの動作の詳細を示すチャートである。 図11の信頼できるメッセージングシステムにおける様々なコンフィギュレーション及び対応する性能コストを示す表である。

Claims (125)

  1. 少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーション環境であって、
    動的ウェブページを形成するための命令のセットを含むMervletアプリケーションであって、前記Mervletは、それぞれが前記少なくとも1つのアクセスネットワークに接続されるローカルノードおよびサーバノードのうちの少なくとも一方で実行することができ、これにより、前記ローカルノードで実行しているクライアントアプリケーションからの要求に応じて、前記動的ウェブページを前記ローカルノードに表示する、Mervletアプリケーションと、
    前記Mervletのユーザ認識性能を特徴付けるための少なくとも1つの性能属性を含む、前記Mervletに関連付けられた少なくとも1つのアプリケーション属性と、
    前記Mervletに関連付けられるとともに、前記少なくとも1つのアプリケーション属性に基づいて前記ローカルノードと前記サーバノードとの間で前記Mervletの実行を与えるようになっている命令の第1のセットを有するポリシーモジュールを含む、Mervletエンジンと、
    を備えたことを特徴とするモバイルアプリケーション環境。
  2. 前記Mervletを実行するためのセキュリティコンテキストを規定するために前記Mervletに関連付けられた少なくとも1つのセキュリティ属性を更に備え、
    前記Mervletエンジンは、前記セキュリティコンテキスト内で前記Mervletを実行するようになっているコアインタープリタモジュールを更に有している
    ことを特徴とする請求項1に記載のアプリケーション環境。
  3. 動的ウェブページを形成するための前記命令のセットは、前記ウェブページのための動的なコンテンツを生成するアプリケーション命令のセット、および、前記ウェブページ上での表示のために前記動的なコンテンツをフォーマットするユーザインタフェース命令のセットのうちの少なくとも一方を含んでいる
    ことを特徴とする請求項1に記載のアプリケーション環境。
  4. 前記アプリケーション命令のセットは、前記Mervletに関連付けられた少なくとも1つのMervletタグライブラリ内に存在するアプリケーションロジックをカプセル化する解釈されないプログラムコードを含んでいる
    ことを特徴とする請求項3に記載のアプリケーション環境。
  5. 前記ユーザインタフェース命令のセットは、ウェブブラウザによって解釈可能な静的なフォーマットタグを含んでいる
    ことを特徴とする請求項3に記載のアプリケーション環境。
  6. 前記Mervletエンジンは、前記ローカルノードおよびサーバノードのうちの少なくとも一方に記憶された前記Mervletを見つけ且つ前記Mervletが前記ローカルノードに記憶される時に前記クライアントアプリケーションから前記Mervletへの要求を処理するようになっているファインダモジュールを更に有している
    ことを特徴とする請求項1に記載のアプリケーション環境。
  7. 前記Mervletエンジンは、前記Mervletが前記サーバノードに記憶される時に前記クライアントアプリケーションから前記Mervletへの要求を処理するようになっているインターセプティングモジュールを更に有している
    ことを特徴とする請求項1に記載のアプリケーション環境。
  8. 前記少なくとも1つの性能属性は、前記アプリケーションにおけるユーザインタフェースイベントのための待ち時間に関する少なくとも1つのパラメータを含み、
    前記待ち時間は、サーバ計算時間および通信時間を含んでいる
    ことを特徴とする請求項1に記載のアプリケーション環境。
  9. 待ち時間に関する少なくとも1つの前記パラメータは、前記待ち時間、前記サーバ計算時間及び前記通信時間の平均と、前記待ち時間、前記サーバ計算時間及び前記通信時間の分散と、のうちの少なくとも一つを含んでいる
    ことを特徴とする請求項8に記載のアプリケーション環境。
  10. 前記サーバ計算時間は、内部計算時間およびデータI/O時間を含んでいる
    ことを特徴とする請求項9に記載のアプリケーション環境。
  11. 前記少なくとも1つの性能属性は、前記アプリケーションが終了まで実行する総使用時間を更に含んでいる
    ことを特徴とする請求項9に記載のアプリケーション環境。
  12. 前記少なくとも1つの性能属性は、アプリケーション毎に測定される
    ことを特徴とする請求項1に記載のアプリケーション環境。
  13. 前記少なくとも1つの性能属性は、デバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項1に記載のアプリケーション環境。
  14. 前記少なくとも1つの性能属性は、ユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項1に記載のアプリケーション環境。
  15. 前記少なくとも1つの性能属性は、アクセスネットワーク毎のユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項1に記載のアプリケーション環境。
  16. 前記少なくとも1つのアプリケーション属性は、前記ローカルノード、前記サーバノード及び前記少なくとも1つのアクセスネットワーク、のうちの少なくとも1つの計算能力を特徴付けるための、少なくとも1つのシステム属性を更に含んでいる
    ことを特徴とする請求項1に記載のアプリケーション環境。
  17. 前記ローカルノードの能力を特徴付けるためのシステム属性は、前記ローカルノードのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記ローカルノードにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項16に記載のアプリケーション環境。
  18. 前記サーバノードの能力を特徴付けるためのシステム属性は、前記サーバノードのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記サーバノードにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項16に記載のアプリケーション環境。
  19. 前記少なくとも1つのアクセスネットワークの能力を特徴付けるためのシステム属性は、ネットワーク帯域幅、ネットワーク待ち時間及びネットワーク状態、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項16に記載のアプリケーション環境。
  20. 前記ポリシーモジュールは、前記少なくとも1つのアプリケーション属性に基づいて、前記ローカルノードと前記サーバノードとの間で通信するためのアクセスネットワークを選択するようになっている命令の第2のセットを更に有している
    ことを特徴とする請求項1に記載のアプリケーション環境。
  21. 前記Mervletエンジンは、実行しているMervletアプリケーションのリストと前記実行している各Mervlet毎のアプリケーションコンテキストとを含む前記エンジンの実行状態を保存して元の状態に戻すようになっている回復モジュールを有している
    ことを特徴とする請求項1に記載のアプリケーション環境。
  22. 前記Mervletと前記クライアントアプリケーションとの間でメッセージを送信するとともに、前記Mervlet、前記少なくとも1つのアプリケーション属性、前記少なくとも1つのセキュリティ属性及び前記少なくとも1つのMervletタグライブラリをアクセスネットワークを介して前記ローカルノードと前記サーバノードとの間で移動させるようになっているメッセージングシステムを更に備えている
    ことを特徴とする請求項1に記載のアプリケーション環境。
  23. 前記メッセージングシステムは、一方向同期メッセージングプロトコル、一方向非同期メッセージングプロトコル、要求−応答同期メッセージングプロトコル及び要求−応答非同期メッセージングプロトコル、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項22に記載のアプリケーション環境。
  24. 前記メッセージングシステムは、前記ローカルノードのローカルメッセージバッファと前記サーバノードのサーバメッセージバッファとの間でメッセージを供給するための非同期メッセージングプロトコルを含んでいる
    ことを特徴とする請求項22に記載のアプリケーション環境。
  25. 前記ローカルメッセージバッファおよび前記サーバメッセージバッファは、対応する前記ローカルノードおよび前記サーバノード上の固定記憶域および揮発性メモリのうちの一方に選択的に記憶される
    ことを特徴とする請求項24に記載のアプリケーション環境。
  26. 前記メッセージングシステムは、ネットワーク故障、ローカルノード故障及びサーバノード故障のうちの少なくとも1つの存在下で、メッセージングトランザクションを完了するように選択的に構成可能である
    ことを特徴とする請求項22に記載のアプリケーション環境。
  27. 前記ローカルノードおよび前記サーバノードのうちの少なくとも一方のキャッシュメモリを管理するようになっているキャッシュマネージャエージェントを更に備えている
    ことを特徴とする請求項1に記載のアプリケーション環境。
  28. 前記キャッシュマネージャエージェントは、前記クライアントノードおよび前記サーバノードのうちの少なくとも一方によって設定されるキャッシュ管理ポリシーを含んでいる
    ことを特徴とする請求項27に記載のアプリケーション環境。
  29. 前記キャッシュマネージャエージェントは、前記キャッシュ管理ポリシーに従って前記キャッシュメモリから前記Mervletをプレフェッチする命令のセットを含んでいることを特徴とする請求項28に記載のアプリケーション環境。
  30. 前記キャッシュマネージャエージェントは、前記キャッシュ管理ポリシーに従い、前記クライアントノードにおけるキャッシュミスに応じて、前記サーバノードから前記Mervletを検索する命令のセットを含んでいる
    ことを特徴とする請求項28に記載のアプリケーション環境。
  31. 前記キャッシュマネージャエージェントは、前記キャッシュ管理ポリシーに従って前記Mervletを含むデータを前記キャッシュメモリに書き込む命令のセットを含んでいる
    ことを特徴とする請求項28に記載のアプリケーション環境。
  32. 少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーション環境において動的ウェブページを形成する命令のセットを含むMervletアプリケーションを実行するための方法であって、
    前記少なくとも1つのアクセスネットワークに接続されるローカルノードで実行するクライアントアプリケーションから、前記Mervletアプリケーションのための要求を発する工程と、
    前記少なくとも1つのアクセスネットワークに接続されたサーバノードおよび前記ローカルノードのうちの少なくとも一方に記憶された前記Mervletを見つける工程と、
    前記Mervletが前記ローカルノードで見つけられると、前記ローカルノードで前記Mervletを実行して、前記ローカルノード上に前記動的ウェブページを表示する工程と、
    前記Mervletが前記サーバノードで見つけられると、少なくとも1つのアプリケーション属性に基づいて、前記ローカルノードと前記サーバノードとの間で前記Mervletの実行を与える工程と、
    前記ローカルノード上で前記Mervletの実行を与えることに応じて、前記Mervletおよび前記少なくとも1つのアプリケーション属性を、前記サーバノードから前記ローカルノードへと移動させる工程と、
    前記サーバノード上で前記Mervletの実行を与えることに応じて、前記Mervletを前記サーバノード上で実行して、前記ローカルノード上に前記動的ウェブページを表示する工程と、
    を備えたことを特徴とする方法。
  33. 前記少なくとも1つのアプリケーション属性に基づいて、アクセスネットワークを選択する工程
    を更に含むことを特徴とする請求項32に記載の方法。
  34. 前記Mervletは、少なくとも1つのセキュリティ属性によって規定されるセキュリティコンテキスト内で、前記ローカルノードおよび前記サーバノードを実行する
    ことを特徴とする請求項32に記載の方法。
  35. 前記ローカルノード上での前記Mervletの実行を割り当てる前記決定に応じて、前記少なくとも1つのセキュリティ属性を前記サーバノードから前記ローカルノードに移動させる工程
    を更に含むことを特徴とする請求項34に記載の方法。
  36. 前記Mervletの命令は、前記ウェブページのための動的なコンテンツを生成するアプリケーション命令のセット、および、前記ウェブページ上での表示のために前記動的なコンテンツをフォーマットするユーザインタフェース命令のセットのうちの少なくとも一方を含んでいる
    ことを特徴とする請求項32に記載の方法。
  37. 前記ユーザインタフェース命令は、ウェブブラウザによって解釈可能な少なくとも1つの静的なフォーマットタグを含んでいる
    ことを特徴とする請求項36に記載の方法。
  38. 前記アプリケーション命令は、少なくとも1つのMervletタグライブラリ内に存在するアプリケーションロジックをカプセル化する解釈されないプログラムコードを含んでいる
    ことを特徴とする請求項36に記載の方法。
  39. 前記ローカルノード上での前記Mervletの実行を割り当てる前記決定に応じて、前記少なくとも1つのMervletタグライブラリを前記サーバノードから前記ローカルノードに移動させる工程
    を更に含むことを特徴とする請求項38に記載の方法。
  40. 前記少なくとも1つのアプリケーション属性は、前記Mervletのユーザ認識性能を特徴付けるための少なくとも1つの性能属性と、前記ローカルノード、前記サーバノード及び前記少なくとも1つのアクセスネットワークのうちの少なくとも1つの計算能力を特徴付けるための少なくとも1つのシステム属性と、を含んでいる
    ことを特徴とする請求項32に記載の方法。
  41. 前記少なくとも1つの性能属性は、前記アプリケーションにおけるユーザインタフェースイベントのための待ち時間に関する少なくとも1つの値を含み、
    前記待ち時間は、サーバ計算時間および通信時間を含んでいる
    ことを特徴とする請求項40に記載の方法。
  42. 前記少なくとも1つの性能属性は、前記待ち時間、前記サーバ計算時間及び前記通信時間の平均と、前記待ち時間、前記サーバ計算時間及び前記通信時間の変動と、のうちの少なくとも一つを含んでいる
    ことを特徴とする請求項41に記載の方法。
  43. 前記サーバ計算時間は、内部計算時間およびデータI/O時間を含んでいる
    ことを特徴とする請求項42に記載の方法。
  44. 前記少なくとも1つの性能属性は、前記Mervletが終了まで実行する総使用時間を更に含んでいる
    ことを特徴とする請求項42に記載の方法。
  45. 前記少なくとも1つの性能属性は、アプリケーション毎に測定される
    ことを特徴とする請求項40に記載の方法。
  46. 前記少なくとも1つの性能属性は、デバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項40に記載の方法。
  47. 前記少なくとも1つの性能属性は、ユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項40に記載の方法。
  48. 前記少なくとも1つの性能属性は、アクセスネットワーク毎のユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項40に記載の方法。
  49. 前記ローカルノードの能力を特徴付けるためのシステム属性は、前記ローカルノードのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記ローカルノードにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項40に記載の方法。
  50. 前記サーバノードの能力を特徴付けるためのシステム属性は、前記サーバノードのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記サーバノードにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項40に記載の方法。
  51. 前記少なくとも1つのアクセスネットワークの能力を特徴付けるためのシステム属性は、ネットワーク帯域幅、ネットワーク待ち時間及びネットワーク状態、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項40に記載の方法。
  52. 前記Mervletを実行するMervletエンジンの実行状態を保存して、前記実行状態を元の状態に戻す工程
    を更に含むことを特徴とする請求項32に記載の方法。
  53. 前記Mervletエンジンの実行状態を保存する工程は、実行しているMervletアプリケーションのリストと前記実行している各Mervlet毎のアプリケーションコンテキストとを記憶する工程を含む
    ことを特徴とする請求項52に記載の方法。
  54. 一方向同期メッセージングプロトコル、一方向非同期メッセージングプロトコル、要求−応答同期メッセージングプロトコル及び要求−応答非同期メッセージングプロトコル、のうちの少なくとも1つを使用して、前記少なくとも1つのアクセスネットワークを介して、前記Mervletと前記クライアントアプリケーションとの間でメッセージを送信する工程
    を更に含むことを特徴とする請求項32に記載の方法。
  55. 前記ローカルノードのローカルメッセージバッファおよび前記サーバノードのサーバメッセージバッファのうちの少なくとも一方に前記メッセージを記録する工程
    を更に含むことを特徴とする請求項54に記載の方法。
  56. 前記第1および第2のメッセージバッファの各々は、対応する前記ローカルノードおよび前記サーバノード上に固定記憶域を有している
    ことを特徴とする請求項55に記載の方法。
  57. ネットワーク故障、ローカルノード故障及びサーバノード故障のうちの少なくとも1つの存在下で完了するようにメッセージングトランザクションを選択的に構成する工程
    を更に含むことを特徴とする請求項54に記載の方法。
  58. 前記Mervletを記憶して検索するために、前記ローカルノードおよび前記サーバノードのうちの少なくとも一方のキャッシュメモリを管理する工程
    を更に含むことを特徴とする請求項32に記載の方法。
  59. 前記クライアントノードおよび前記サーバノードのうちの少なくとも一方によって設定されるキャッシュ管理ポリシーを使用して、前記Mervletを記憶して検索するために前記ローカルノードおよび前記サーバノードのうちの少なくとも一方のキャッシュメモリを管理する工程
    を更に含むことを特徴とする請求項58に記載の方法。
  60. 少なくとも1つのアクセスネットワークの一部を形成するモバイルアプリケーション環境であって、
    前記少なくとも1つのアクセスネットワークに接続されるローカルノードに存在するクライアントアプリケーションから、Mervletアプリケーションのための要求を発する手段であって、前記Mervletは動的ウェブページを形成するようになっている、という手段と、
    前記少なくとも1つのアクセスネットワークに接続されたサーバノードおよび前記ローカルノードのうちの少なくとも一方に記憶された前記Mervletを見つける手段と、
    前記Mervletが前記ローカルノードで見つけられると、前記ローカルノードで前記Mervletを実行して、前記ローカルノード上に前記動的ウェブページを表示する手段と、
    前記Mervletが前記サーバノードで見つけられると、少なくとも1つのアプリケーション属性に基づいて、前記ローカルノードと前記サーバノードとの間で前記Mervletの実行を与える手段であって、前記少なくとも1つのアプリケーション属性は前記Mervletのユーザ認識性能を特徴付けるための少なくとも1つの性能属性を含んでいる、という手段と、
    前記ローカルノード上で前記Mervletの実行を与えることに応じて、前記Mervletを前記サーバノードから前記ローカルノードへと移動させる手段と、
    前記サーバノード上で前記Mervletの実行を与えることに応じて、前記Mervletを前記サーバノード上で実行して、前記ローカルノード上に前記動的ウェブページを表示する手段と、
    を備えたことを特徴とするアプリケーション環境。
  61. 前記ローカルノードと前記サーバノードとの間で通信を行なうために前記少なくとも1つのアプリケーション属性に基づいて第1のアクセスネットワークを選択する手段
    を更に備えたことを特徴とする請求項60に記載のアプリケーション環境。
  62. 前記少なくとも1つのアプリケーション属性を測定する手段
    を更に備えたことを特徴とする請求項60に記載のアプリケーション環境。
  63. 前記ローカルノードの故障、前記サーバノードの故障及び前記少なくとも1つのアクセスネットワークの故障のうちの少なくとも1つの後、前記Mervletの実行を回復する手段
    を更に備えたことを特徴とする請求項60に記載のアプリケーション環境。
  64. 前記ローカルノードが前記サーバノードから切断される時に前記Mervletを実行する手段
    を更に備えたことを特徴とする請求項60に記載のアプリケーション環境。
  65. デバイス間での通信のための少なくとも1つのアクセスネットワークに接続された複数のコンピュータデバイス間でアプリケーションをロードバランシングする方法であって、
    前記少なくとも1つのアクセスネットワークに接続されたサーバデバイス上に前記アプリケーションを記憶する工程と、
    前記アプリケーションのユーザ認識性能を特徴付けるための少なくとも1つの性能属性を含む、前記アプリケーションに関連付けられたアプリケーション属性のセットを測定する工程と、
    前記少なくとも1つのアクセスネットワークに接続されたクライアントデバイスから、前記アプリケーションのための要求を発する工程と、
    前記アプリケーション属性のセットに基づき、前記要求に応じて、前記クライアントデバイスおよび前記サーバデバイスの一方上で前記アプリケーションの実行を与える工程と、
    前記実行を与える工程に応じて、前記クライアントデバイスおよび前記サーバデバイスの前記一方で前記アプリケーションを実行する工程と、
    を備えたことを特徴とする方法。
  66. 前記アプリケーションを実行している間、前記アプリケーション属性のセットを監視する工程と、
    前記アプリケーションを実行している間における前記監視されたアプリケーション属性のセットに基づいて、前記サーバデバイスから前記クライアントデバイスへ前記アプリケーションを再配置するか否かを決定する工程と、
    を更に備えたことを特徴とする請求項65に記載の方法。
  67. アプリケーション属性の前記セットに基づいて、前記サーバデバイスと前記クライアントデバイスとの間で通信するための第1のアクセスネットワークを選択する工程
    を更に備えたことを特徴とする請求項65に記載の方法。
  68. 前記アプリケーションを実行している間、前記アプリケーション属性のセットを監視する工程と、
    前記アプリケーションを実行している間における前記監視されたアプリケーション属性のセットに基づいて、前記サーバデバイスと前記クライアントデバイスとの間で通信するための第2のアクセスネットワークに切換えるか否かを決定する工程と、
    ことを更に備えたことを特徴とする請求項67に記載の方法。
  69. 前記少なくとも1つの性能属性は、前記アプリケーションにおけるユーザインタフェースイベントのための待ち時間に関する少なくとも1つのパラメータを含み、
    前記待ち時間は、サーバ計算時間および通信時間を含んでいる
    ことを特徴とする請求項65に記載の方法。
  70. 待ち時間に関する少なくとも1つの前記パラメータは、前記待ち時間、前記サーバ計算時間及び前記通信時間の平均と、前記待ち時間、前記サーバ計算時間及び前記通信時間の分散と、のうちの少なくとも一つを含んでいる
    ことを特徴とする請求項69に記載の方法。
  71. 前記サーバ計算時間は、内部計算時間およびデータI/O時間を含んでいる
    ことを特徴とする請求項70に記載の方法。
  72. 前記少なくとも1つの性能属性は、前記アプリケーションが終了まで実行する総使用時間を更に含んでいる
    ことを特徴とする請求項70に記載の方法。
  73. 前記少なくとも1つの性能属性は、アプリケーション毎に測定される
    ことを特徴とする請求項65に記載の方法。
  74. 前記少なくとも1つの性能属性は、デバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項65に記載の方法。
  75. 前記少なくとも1つの性能属性は、ユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項65に記載の方法。
  76. 前記少なくとも1つの性能属性は、アクセスネットワーク毎のユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項65に記載の方法。
  77. アプリケーション属性の前記セットは、前記クライアントデバイス、前記サーバデバイス及び前記少なくとも1つのアクセスネットワークのうちの少なくとも1つの性能を特徴付けるための、少なくとも1つのシステム属性を更に含んでいる
    ことを特徴とする請求項65に記載の方法。
  78. 前記クライアントデバイスの性能を特徴付けるためのシステム属性は、前記クライアントデバイスのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記クライアントデバイスにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項77に記載の方法。
  79. 前記サーバデバイスの性能を特徴付けるためのシステム属性は、前記サーバデバイスのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記サーバデバイスにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項77に記載の方法。
  80. 前記少なくとも1つのアクセスネットワークの性能を特徴付けるためのシステム属性は、ネットワーク帯域幅、ネットワーク待ち時間及びネットワーク状態、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項77に記載の方法。
  81. 少なくとも1つのネットワークの一部を形成するアプリケーションをロードバランシングするためのシステムであって、
    前記少なくとも1つのネットワークに接続され、前記アプリケーションのための様々な実行環境を与える複数の実行モジュールと、
    前記少なくとも1つのネットワークに接続され、前記アプリケーションのユーザ認識性能を特徴付けるための少なくとも1つの性能属性を含む前記アプリケーションに関連付けられたアプリケーション属性のセットを測定する少なくとも1つの収集モジュールと、
    前記少なくとも1つのネットワークに接続され、前記アプリケーション属性に基づいて前記アプリケーションの実行環境を決定するための少なくとも1つのポリシーを満たす第1の実行モジュールを決定する少なくとも1つのポリシーモジュールと、
    前記第1の実行モジュール上に前記アプリケーションを割り当てる少なくとも1つのプログラム割り当てモジュールと、
    を備えたことを特徴とするシステム。
  82. アプリケーション属性の前記セットに基づいて前記アプリケーションの通信環境を決定するための少なくとも1つのポリシーを満たすアクセスネットワークを選択する少なくとも1つのネットワーク割り当てモジュール
    を更に備えたことを特徴とする請求項81に記載のシステム。
  83. 前記少なくとも1つの性能属性は、前記アプリケーションにおけるユーザインタフェースイベントのための待ち時間に関する少なくとも1つのパラメータを含み、
    前記待ち時間は、サーバ計算時間および通信時間を含んでいる
    ことを特徴とする請求項82に記載のシステム。
  84. 待ち時間に関する少なくとも1つの前記パラメータは、前記待ち時間、前記サーバ計算時間及び前記通信時間の平均と、前記待ち時間、前記サーバ計算時間及び前記通信時間の分散と、のうちの少なくとも一つを含んでいる
    ことを特徴とする請求項83に記載のシステム。
  85. 前記サーバ計算時間は、内部計算時間およびデータI/O時間を含んでいる
    ことを特徴とする請求項84に記載のシステム。
  86. 前記少なくとも1つの性能属性は、前記アプリケーションが終了まで実行する総使用時間を更に含んでいる
    ことを特徴とする請求項85に記載のシステム。
  87. 前記少なくとも1つの性能属性は、アプリケーション毎に測定される
    ことを特徴とする請求項81に記載のシステム。
  88. 前記少なくとも1つの性能属性は、デバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項81に記載のシステム。
  89. 前記少なくとも1つの性能属性は、ユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項81に記載のシステム。
  90. 前記少なくとも1つの性能属性は、アクセスネットワーク毎のユーザ毎のデバイス毎のアプリケーション毎に測定される
    ことを特徴とする請求項81に記載のシステム。
  91. アプリケーション属性の前記セットは、前記クライアントデバイス、前記サーバデバイス及び前記少なくとも1つのアクセスネットワークのうちの少なくとも1つの性能を特徴付けるための、少なくとも1つのシステム属性を更に含んでいる
    ことを特徴とする請求項81に記載のシステム。
  92. 前記クライアントデバイスの性能を特徴付けるためのシステム属性は、前記クライアントデバイスのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記クライアントデバイスにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項91に記載のシステム。
  93. 前記サーバデバイスの性能を特徴付けるためのシステム属性は、前記サーバデバイスのプロセッサの稼動時間の測定に関するパラメータ、前記プロセッサのMIPS等級、前記サーバデバイスにおける固定記憶域のメモリサイズおよび大きさ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項91に記載のシステム。
  94. 前記少なくとも1つのアクセスネットワークの性能を特徴付けるためのシステム属性は、ネットワーク帯域幅、ネットワーク待ち時間及びネットワーク状態、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項91に記載のシステム。
  95. デバイス間での通信のための少なくとも1つのアクセスネットワークに接続された複数のコンピュータデバイス間でアプリケーションをロードバランシングするシステムであって、
    前記少なくとも1つのアクセスネットワークに接続されたサーバデバイス上に前記アプリケーションを記憶する手段と、
    前記アプリケーションのユーザ認識性能を特徴付けるための少なくとも1つの性能属性を含むアプリケーション属性のセットを測定する手段と、
    前記少なくとも1つのアクセスネットワークに接続されたクライアントデバイスから、前記アプリケーションのための要求を発する手段と、
    前記アプリケーション属性のセットに基づき、前記要求に応じて、前記クライアントデバイスおよび前記サーバデバイスの一方上で前記アプリケーションの実行を与える手段と、
    前記実行を与えることに応じて、前記クライアントデバイスおよび前記サーバデバイスの前記一方で前記アプリケーションを実行する手段と、
    を備えたことを特徴とするシステム。
  96. 前記アプリケーションを実行している間、前記アプリケーション属性のセットを監視する手段と、
    前記監視されたアプリケーション属性のセットに基づいて、前記サーバデバイス上での実行中、前記サーバデバイスから前記クライアントデバイスへ前記アプリケーションを再配置するか否かを決定する手段と、
    を更に備えたことを特徴とする請求項95に記載のシステム。
  97. 前記サーバデバイスと前記クライアントデバイスとの間で通信するために、アプリケーション属性の前記セットに基づいて、第1のアクセスネットワークを選択する手段
    を更に備えたことを特徴とする請求項95に記載のシステム。
  98. 前記アプリケーションの実行中、前記アプリケーション属性のセットを監視する手段と、
    前記サーバデバイスと前記クライアントデバイスとの間で通信するため、前記監視されたアプリケーション属性のセットに基づいて、前記アプリケーションの実行中、第2のアクセスネットワークに切換えるか否かを決定する手段と、
    を更に備えたことを特徴とする請求項97に記載のシステム。
  99. ネットワークに接続された複数のモジュール間で通信するための構成可能な信頼できるメッセージングシステムを備え、
    当該メッセージングシステムは、
    メッセージを生成し、且つ、前記ネットワークを介して前記メッセージに対する応答を受けるようになっているクライアントモジュールと、
    前記ネットワークを介して、前記メッセージを受け、且つ、前記応答を生成するようになっているサーバモジュールと、
    クライアントロギング信号に応じて前記クライアントモジュール上で選択的に実行するとともに、前記メッセージおよび前記応答を記憶するように且つ前記応答が受けられるまで前記メッセージを前記サーバモジュールに送信するようになっているクライアントロギングエージェントと、
    サーバロギング信号に応じて前記サーバモジュール上で選択的に実行するとともに、前記メッセージおよび前記応答を記憶するように且つ前記応答を前記クライアントモジュールに送信するようになっているサーバロギングエージェントと、
    前記クライアントモジュールおよび前記サーバモジュールのうちの少なくとも一方に関連付けられ、前記クライアントロギング信号および前記サーバロギング信号を生成するようになっているコンフィギュレーションエージェントと、
    を含んでいる
    ことを特徴とするフォールトトレランスシステム。
  100. アプリケーションを処理するために前記クライアントモジュールおよび前記サーバモジュールのうちの少なくとも一方で実行するとともに、実行状態を取得して、前記クライアントモジュールおよび前記サーバモジュールのうちの前記少なくとも一方に関連付けられた固定記憶域に当該実行状態を記憶するようになっている、回復可能なランタイムエンジンを更に備え、
    前記ランタイムエンジンは、当該ランタイムエンジンを実行している前記クライアントモジュールおよび前記サーバモジュールのうちの前記少なくとも一方の一時的な故障後、前記実行状態に基づいて、実行を再開することができる
    ことを特徴とする請求項99に記載のフォールトトレランスシステム。
  101. 前記クライアントモジュールは、前記メッセージを記憶するための第1の固定記憶域バッファを有している
    ことを特徴とする請求項99に記載のフォールトトレランスシステム。
  102. 前記第1の固定記憶域バッファは、ユーザ構成可能なサイズを有している
    ことを特徴とする請求項100に記載のフォールトトレランスシステム。
  103. 前記サーバモジュールは、前記応答を記憶するための第2の固定記憶域バッファを有している
    ことを特徴とする請求項99に記載のフォールトトレランスシステム。
  104. 前記第2の固定記憶域バッファは、ユーザ構成可能なサイズを有している
    ことを特徴とする請求項102に記載のフォールトトレランスシステム。
  105. 前記実行状態は、実行しているアプリケーションのリストおよび前記実行している各アプリケーションに関連付けられたアプリケーションコンテキストを含んでいる
    ことを特徴とする請求項100に記載のフォールトトレランスシステム。
  106. 前記実行状態は、前記実行している各アプリケーションにおける優先順位の値を更に含んでいる
    ことを特徴とする請求項105に記載のフォールトトレランスシステム。
  107. 前記アプリケーションコンテキストは、ハードウェアリソースに関連するパラメータ、外部ファイルに関連するパラメータ、性能属性に関連するパラメータ、及び、実行しているアプリケーションに関連付けられたリソース権利に関連するパラメータ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項105に記載のフォールトトレランスシステム。
  108. 前記性能属性は、前記実行しているアプリケーションのユーザインタフェースイベントにおける待ち時間の平均および待ち時間の分散のうちの少なくとも一方を含んでいる
    ことを特徴とする請求項107に記載のフォールトトレランスシステム。
  109. 前記実行しているアプリケーションは、アプリケーション状態を保存するとともに、当該アプリケーション状態を使用して実行を再開するようになっている
    ことを特徴とする請求項100に記載のフォールトトレランスシステム。
  110. 分散コンピュータシステムをフォールトトレラントにするための方法であって、
    要求メッセージを生成し且つ応答メッセージを受けるようになっている第1のコンピュータデバイスと、前記要求メッセージを受け且つ前記要求メッセージに応じて前記応答メッセージを生成するようになっている第2のコンピュータデバイスと、を含むネットワークに接続された複数のコンピュータデバイス間で複数のメッセージを送る工程と、
    前記第1のコンピュータデバイス上に前記要求メッセージを選択的に記憶する工程と、
    前記第2のコンピュータデバイス上に前記要求メッセージを選択的に記憶する工程と、
    前記第2のコンピュータデバイス上に前記応答メッセージを選択的に記憶する工程と、
    前記第1のコンピュータデバイス上に前記応答メッセージを選択的に記憶する工程と、
    を備えたことを特徴とする方法。
  111. 少なくとも1つのアプリケーションを処理するため、前記第1のコンピュータデバイスおよび前記第2のコンピュータデバイスのうちの少なくとも一方でランタイムエンジンを実行する工程と、
    前記ランタイムエンジンの実行状態を取得して保存する工程と、
    前記第1のコンピュータデバイスおよび前記第2のコンピュータデバイスのうちの前記少なくとも一方の一時的な故障の後、前記実行状態に基づいて、前記ランタイムエンジンの実行を再開する工程と、
    を更に備えたことを特徴とする請求項110に記載の方法。
  112. 前記第2のコンピュータデバイスから前記応答メッセージを除去する工程と、
    前記第2のコンピュータデバイスから前記要求メッセージを除去する工程と、
    前記第1のコンピュータデバイスから前記要求メッセージを除去する工程と、
    前記第1のコンピュータデバイスから前記応答メッセージを除去する工程と、
    を更に備えたことを特徴とする請求項110に記載の方法。
  113. 前記第1のコンピュータデバイス上に前記要求メッセージを選択的に記憶する前記工程は、前記第1のコンピュータデバイスに関連付けられた第1の固定記憶域バッファに前記要求メッセージを選択的に記憶する工程を含んでいる
    ことを特徴とする請求項110に記載の方法。
  114. 前記第1の固定記憶域バッファは、ユーザ構成可能なサイズを有している
    ことを特徴とする請求項113に記載の方法。
  115. 前記第2のコンピュータデバイス上に前記応答メッセージを選択的に記憶する前記工程は、前記第2のコンピュータデバイスに関連付けられた第2の固定記憶域バッファに前記応答メッセージを選択的に記憶する工程を含んでいる
    ことを特徴とする請求項110に記載の方法。
  116. 前記第2の固定記憶域バッファは、ユーザ構成可能なサイズを有している
    ことを特徴とする請求項115に記載の方法。
  117. 前記ランタイムエンジンの実行状態を保存する工程は、実行しているアプリケーションのリストおよび当該実行している各アプリケーションに関連付けられたアプリケーションコンテキストを記憶する工程を含んでいる
    ことを特徴とする請求項111に記載の方法。
  118. 前記ランタイムエンジンの実行状態を保存する工程は、前記少なくとも1つのアプリケーションにおける優先順位の値を記憶する工程を更に含んでいる
    ことを特徴とする請求項117に記載の方法。
  119. 前記アプリケーションコンテキストは、ハードウェアリソースに関連するパラメータ、外部ファイルに関連するパラメータ、性能属性に関連するパラメータ、及び、実行しているアプリケーションに関連付けられたリソース権利に関連するパラメータ、のうちの少なくとも1つを含んでいる
    ことを特徴とする請求項117に記載の方法。
  120. 性能属性に関連する前記パラメータは、前記少なくとも1つのアプリケーションのユーザインタフェースイベントにおける待ち時間の平均および待ち時間の分散のうちの少なくとも一方を含んでいる
    ことを特徴とする請求項119に記載の方法。
  121. 前記少なくとも1つのアプリケーションに関連付けられたアプリケーション状態を取得して保存する工程と、
    前記アプリケーション状態に基づいて、前記少なくとも1つのアプリケーションの実行を再開する工程と、
    を更に備えたことを特徴とする請求項111に記載の方法。
  122. 要求メッセージを生成し且つ応答メッセージを受けるようになっている第1のコンピュータデバイスと、前記要求メッセージを受け且つ前記要求メッセージに応じて前記応答メッセージを生成するようになっている第2のコンピュータデバイスと、を含むネットワークに接続された複数のコンピュータデバイス間で複数のメッセージを送る手段と、
    前記第1のコンピュータデバイス上に前記要求メッセージを選択的に記憶する手段と、
    前記第2のコンピュータデバイス上に前記要求メッセージを選択的に記憶する手段と、
    前記第2のコンピュータデバイス上に前記応答メッセージを選択的に記憶する手段と、
    前記第1のコンピュータデバイス上に前記応答メッセージを選択的に記憶する手段と、
    を備えたことを特徴とするフォールトトレラントな分散コンピュータシステム。
  123. アプリケーションを処理するため、前記第1のコンピュータデバイスおよび前記第2のコンピュータデバイスのうちの少なくとも一方でランタイムエンジンを実行する手段と、
    前記ランタイムエンジンの実行状態を取得して保存する手段と、
    前記第1のコンピュータデバイスおよび前記第2のコンピュータデバイスのうちの前記少なくとも一方の一時的な故障の後、前記実行状態に基づいて、前記ランタイムエンジンの実行を再開する手段と、
    を更に備えたことを特徴とする請求項122に記載のシステム。
  124. 分散コンピュータシステムをフォールトトレラントにするための方法であって、
    ネットワークに接続されたクライアントモジュールによりメッセージを生成する工程と、
    前記クライアントモジュール上に前記メッセージを選択的に記憶する工程と、
    前記ネットワークに接続されたサーバモジュールに前記メッセージを送る工程と、
    前記サーバモジュール上に前記メッセージを受けて選択的に記憶する工程と、
    前記サーバモジュールから先の応答を解放する工程と、
    前記サーバモジュールにより、前記メッセージに対する応答を生成する工程と、
    前記サーバモジュール上に前記応答を選択的に記憶する工程と、
    前記応答を前記クライアントモジュールに送る工程と、
    前記サーバモジュールから前記メッセージを除去する工程と、
    前記クライアントモジュール上に前記応答を受けて選択的に記憶する工程と、
    前記クライアントモジュールから前記メッセージを除去する工程と、
    前記クライアントモジュールから前記応答を解放する工程と、
    を備えたことを特徴とする方法。
  125. 少なくとも1つのアプリケーションを処理するために、前記クライアントモジュールおよび前記サーバモジュールのうちの少なくとも一方でランタイムエンジンを実行する工程と、
    前記ランタイムエンジンの実行状態を取得して保存する工程と、
    前記クライアントモジュールおよび前記サーバモジュールのうちの前記少なくとも一方の一時的な故障の後、前記実行状態に基づいて、前記ランタイムエンジンの実行を再開する工程と、
    を更に備えたことを特徴とする請求項124に記載の方法。
JP2004515623A 2002-06-24 2003-03-31 モバイルアプリケーションのための実行環境 Withdrawn JP2005531061A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/179,994 US20030236826A1 (en) 2002-06-24 2002-06-24 System and method for making mobile applications fault tolerant
US10/179,910 US7454458B2 (en) 2002-06-24 2002-06-24 Method and system for application load balancing
US10/179,929 US20040001476A1 (en) 2002-06-24 2002-06-24 Mobile application environment
PCT/US2003/009934 WO2004001585A1 (en) 2002-06-24 2003-03-31 Mobile application environment

Publications (1)

Publication Number Publication Date
JP2005531061A true JP2005531061A (ja) 2005-10-13

Family

ID=30003698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004515623A Withdrawn JP2005531061A (ja) 2002-06-24 2003-03-31 モバイルアプリケーションのための実行環境

Country Status (5)

Country Link
EP (1) EP1516244A4 (ja)
JP (1) JP2005531061A (ja)
CN (1) CN1326035C (ja)
AU (1) AU2003230776A1 (ja)
WO (1) WO2004001585A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014506342A (ja) * 2010-09-10 2014-03-13 マイクロソフト コーポレーション データセンタサービスの制御された自動復旧

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8355709B2 (en) * 2006-10-23 2013-01-15 Qualcomm Incorporated Device that determines whether to launch an application locally or remotely as a webapp
US8520535B2 (en) 2007-05-31 2013-08-27 International Business Machines Corporation Optimization process and system for a heterogeneous ad hoc Network
US7843861B2 (en) 2007-05-31 2010-11-30 International Business Machines Corporation Coalition formation and service provisioning of bandwidth sharing AD HOC networks
US7873019B2 (en) 2007-05-31 2011-01-18 International Business Machines Corporation Systems and methods for establishing gateway bandwidth sharing ad-hoc networks
US7817623B2 (en) 2007-05-31 2010-10-19 International Business Machines Corporation Optimization process and system for non-multiplexed peer-to-peer architecture
US7898993B2 (en) 2007-05-31 2011-03-01 International Business Machines Corporation Efficiency and resiliency enhancements for transition states in ad hoc networks
US10623998B2 (en) 2007-05-31 2020-04-14 International Business Machines Corporation Price offerings for bandwidth-sharing ad hoc networks
US8320414B2 (en) 2007-05-31 2012-11-27 International Business Machines Corporation Formation and rearrangement of lender devices that perform multiplexing functions
US7944878B2 (en) 2007-05-31 2011-05-17 International Business Machines Corporation Filtering in bandwidth sharing ad hoc networks
US10419360B2 (en) 2007-05-31 2019-09-17 International Business Machines Corporation Market-driven variable price offerings for bandwidth-sharing ad hoc networks
US8249984B2 (en) 2007-05-31 2012-08-21 International Business Machines Corporation System and method for fair-sharing in bandwidth sharing ad-hoc networks
US8620784B2 (en) 2007-05-31 2013-12-31 International Business Machines Corporation Formation and rearrangement of ad hoc networks
CN105164664B (zh) * 2013-03-20 2018-06-15 英派尔科技开发有限公司 多核架构中的混合路由器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04138547A (ja) * 1990-02-01 1992-05-13 Internatl Business Mach Corp <Ibm> アプリケーション間シフト方法および装置
US5832219A (en) * 1994-02-08 1998-11-03 Object Technology Licensing Corp. Distributed object networking service
JP3658420B2 (ja) * 1994-04-14 2005-06-08 株式会社日立製作所 分散処理システム
US6487607B1 (en) * 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
SE521209C2 (sv) * 1998-06-05 2003-10-14 Ericsson Telefon Ab L M Anordning och förfarande för användning i en virtuell miljö
US6195680B1 (en) * 1998-07-23 2001-02-27 International Business Machines Corporation Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
US6996599B1 (en) * 2000-06-21 2006-02-07 Microsoft Corporation System and method providing multi-tier applications architecture
JP3716753B2 (ja) * 2001-03-21 2005-11-16 日本電気株式会社 マルチプロセッサ構成の計算機間におけるトランザクション負荷分散方法及び方式並びにプログラム
US20030131075A1 (en) * 2001-05-08 2003-07-10 Narad Networks, Inc. Language and interface for unified network service creation, provision and deployment
US20020178262A1 (en) * 2001-05-22 2002-11-28 David Bonnell System and method for dynamic load balancing
US7293070B2 (en) * 2001-09-17 2007-11-06 Vignette Corporation Method and system for deploying web components between portals in a portal framework
US20030069918A1 (en) * 2001-10-08 2003-04-10 Tommy Lu Method and apparatus for dynamic provisioning over a world wide web

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014506342A (ja) * 2010-09-10 2014-03-13 マイクロソフト コーポレーション データセンタサービスの制御された自動復旧

Also Published As

Publication number Publication date
CN1326035C (zh) 2007-07-11
AU2003230776A1 (en) 2004-01-06
EP1516244A4 (en) 2007-08-08
CN1650255A (zh) 2005-08-03
EP1516244A1 (en) 2005-03-23
WO2004001585A1 (en) 2003-12-31

Similar Documents

Publication Publication Date Title
US20040001476A1 (en) Mobile application environment
US7454458B2 (en) Method and system for application load balancing
Puliafito et al. MAP: Design and implementation of a mobile agents' platform
US7467389B2 (en) System and methodology providing service invocation for occasionally connected computing devices
US7707573B1 (en) Systems and methods for providing and installing software
Gu et al. Adaptive offloading inference for delivering applications in pervasive computing environments
US6859834B1 (en) System and method for enabling application server request failover
EP1449078B1 (en) A method and system for offloading execution and resources for resource-constrained networked devices
KR100683820B1 (ko) 자체-최적화를 위해 관찰된 리소스 요건을 이용한 자율적서비스 라우팅
US10298469B2 (en) Automatic asynchronous handoff identification
JP2003076560A (ja) Asp.nethttpランタイム
JP2005531061A (ja) モバイルアプリケーションのための実行環境
WO2001013228A9 (en) Graceful distribution in application server load balancing
US20150067146A1 (en) Custom correlation of a distributed business transaction
CN112800017B (zh) 分布式日志采集方法、装置、介质及电子设备
US11281511B2 (en) Predictive microservice systems and methods
US20030236826A1 (en) System and method for making mobile applications fault tolerant
CN113079210A (zh) 一种跨区数据自动同步的配置方法、终端设备及存储介质
CN106550002B (zh) 一种paas云托管系统及方法
CN117642724A (zh) 使用无服务器计算系统的流式分析
da Silva e Silva et al. Developing adaptive distributed applications: a framework overview and experimental results
JP2002505463A (ja) 分散システム内の遠隔処理呼出に関連する処理をおこなうためのダウンロード可能なスマートプロキシ
Chowdhury et al. A fault-tolerant approach to alleviate failures in offloading systems
JP2002505472A (ja) 分散システムにおいてリモート・オブジェクトの状態を判断するための方法および装置
Al-Bar et al. Camel: a mobile applications framework

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20051114

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20051114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20051114

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060221

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080213