(57)【特許請求の範囲】
【請求項１】
モジュールを管理するモジュール管理装置と、該モジュール管理装置からモジュールを移動して利用するクライアントとで構成され、データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて処理を行なうデータ処理システムであって、
前記クライアントが利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される複数の基本構成要素と、各基本構成要素の特性情報で構成されており、
前記モジュール管理装置において、プログラムの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報からなるモジュールを記憶するとともに、モジュールを利用する際に最初に必要となる新規構成要素を管理データとして保持し、前記クライアントからの要求に応答して再構成された新規構成要素並びにその特性情報を送信し、
前記クライアントにおいて、前記モジュール管理装置からモジュールを移動して利用する際には、当該モジュールに関する管理データに記載されている新規構成要素及びその特性情報をまず移動し、移動した特性情報に基づいて次に移動すべき新規構成要素を決定して、モジュールの利用に必要となる新規構成要素及びその特性情報の移動を順次行う、
ことを特徴とするデータ処理システム。
【請求項２】
前記モジュール管理装置において、モジュールの本来の基本構成要素は、プログラム起動時に使用されるメソッド又はインスタンス、あるいはプログラムのユーザ・インターフェースの特定のボタンを押したときに使用されるメソッド又はインスタンスの参照情報を基本構成要素の特性情報として用いて分類されている、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記モジュール管理装置において、モジュールの本来の基本構成要素は、プログラムを実際に実行して得られるプロファイル・データ、プログラムを解析して得られる静的データ、又はプログラム作成者によって与えられるデータを用いて分類されている、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項４】
新規構成要素に関する特性情報は、他の新規構成要素との参照関係を記述している、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項５】
新規構成要素に関する特性情報は、モジュールを利用する際に当該新規構成要素が利用される頻度を記述し、
前記クライアントは、前記モジュール管理装置から移動したモジュールを一時保存するキャッシュを備え、特性情報として記載されている頻度に基づいてキャッシュに保持する新規構成要素を管理する、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項６】
前記モジュール管理装置では、各新規構成要素について１以上の圧縮方式を用いて圧縮し且つその情報を対応する特性情報に記述するとともに、前記クライアントが備える伸張方式の通知を受けてこれに対応した圧縮方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項７】
前記モジュール管理装置では、モジュールに含まれる各新規構成要素をそれぞれ個別に圧縮処理し、前記クライアントから複数の伸張方式の通知を受けた場合はそのうち最も適した方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項１に記載のデータ処理システム。
【請求項８】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて、モジュール管理装置において管理されるモジュールをクライアントに移動して利用するデータ処理方法であって、
前記クライアントが利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される複数の基本構成要素と、各基本構成要素の特性情報で構成されており、
前記モジュール管理装置において、プログラムの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報からなるモジュールを記憶するとともに、モジュールを利用する際に最初に必要となる新規構成要素を管理データとして保持するステップと、
前記モジュール管理装置において、前記クライアントからの要求に応答して再構成された新規構成要素並びにその特性情報を送信するステップと、
前記クライアントにおいて、前記モジュール管理装置からモジュールを移動して利用する際に、当該モジュールに関する管理データに記載されている新規構成要素及びその特性情報をまず移動するステップと、
前記クライアントにおいて、移動した特性情報に基づいて次に移動すべき新規構成要素を決定して、モジュールの利用に必要となる新規構成要素及びその特性情報の移動を順次行うステップと、
を具備することを特徴とするデータ処理方法。
【請求項９】
前記モジュール管理装置において、モジュールの本来の基本構成要素は、プログラム起動時に使用されるメソッド又はインスタンス、あるいはプログラムのユーザ・インターフェースの特定のボタンを押したときに使用されるメソッド又はインスタンスの参照情報を基本構成要素の特性情報として用いて分類されている、
ことを特徴とする請求項８に記載のデータ処理方法。
【請求項１０】
前記モジュール管理装置において、モジュールの本来の基本構成要素は、プログラムを実際に実行して得られるプロファイル・データ、プログラムを解析して得られる静的データ、又はプログラム作成者によって与えられるデータを用いて分類されている、
ことを特徴とする請求項８に記載のデータ処理方法。
【請求項１１】
新規構成要素に関する特性情報は、他の新規構成要素との参照関係を記述している、
ことを特徴とする請求項８に記載のデータ処理方法。
【請求項１２】
新規構成要素に関する特性情報は、モジュールを利用する際に当該新規構成要素が利用される頻度を記述し、
前記クライアントにおいて、前記モジュール管理装置から移動したモジュールを一時保存するキャッシュを備え、特性情報として記載されている頻度に基づいてキャッシュに保持する新規構成要素を管理するステップをさらに備える、
ことを特徴とする請求項８に記載のデータ処理方法。
【請求項１３】
前記モジュール管理装置では、各新規構成要素について１以上の圧縮方式を用いて圧縮し且つその情報を対応する特性情報に記述するとともに、前記クライアントが備える伸張方式の通知を受けてこれに対応した圧縮方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項８に記載のデータ処理方法。
【請求項１４】
前記モジュール管理装置では、モジュールに含まれる各新規構成要素をそれぞれ個別に圧縮処理し、前記クライアントから複数の伸張方式の通知を受けた場合はそのうち最も適した方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項８に記載のデータ処理方法。
【請求項１５】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて処理を行ない、外部装置にモジュールを提供する情報処理装置であって、
前記外部装置が利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される１以上の基本構成要素と、各基本構成要素の特性情報で構成されており、
モジュールの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報からなるモジュールを記憶するモジュール記憶手段と、
モジュールを利用する際に最初に必要となる新規構成要素に関する管理データを管理するモジュール管理手段と、
外部装置からの要求に応答して、再構成された新規構成要素並びにその特性情報を送信する情報送信手段と、
を具備することを特徴とする情報処理装置。
【請求項１６】
前記モジュール記憶手段では、モジュールの本来の基本構成要素は、プログラム起動時に使用されるメソッド又はインスタンス、あるいはプログラムのユーザ・インターフェースの特定のボタンを押したときに使用されるメソッド又はインスタンスの参照情報を基本構成要素の特性情報として用いて分類され再構成された新規構成要素が記憶される、
ことを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記モジュール記憶手段では、モジュールの本来の基本構成要素は、プログラムを実際に実行して得られるプロファイル・データ、プログラムを解析して得られる静的データ、又はプログラム作成者によって与えられるデータを用いて分類され再構成された新規構成要素が記憶される、
ことを特徴とする請求項１５に記載の情報処理装置。
【請求項１８】
前記情報送信手段は、モジュールのうち前記外部装置で最初に利用される部分を含む新規構成要素のみをまず送信し、その後必要に応じて新規構成要素を単位として送信する、ことを特徴とする請求項１５に記載の情報処理装置。
【請求項１９】
前記モジュール記憶手段では、各新規構成要素について１以上の圧縮方式を用いて圧縮して記憶され、且つその情報が対応する特性情報に記述されており、
前記情報送信手段は、前記外部装置が備える伸張方式の通知を受けて、これに対応した圧縮方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項１５に記載の情報処理装置。
【請求項２０】
前記モジュール記憶手段では、モジュールに含まれる各新規構成要素がそれぞれ個別に圧縮処理されて記憶されており、
前記情報送信手段は、前記外部装置から複数の伸張方式の通知を受けた場合、そのうち最も適した方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて、モジュールを利用する情報処理装置であって、
利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される１以上の基本構成要素と、各基本構成要素の特性情報で構成され、
モジュールを提供する外部装置では、モジュールの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報とを記憶するとともに、モジュールを利用する際に最初に必要となる新規構成要素が管理データとして管理されており、
前記外部装置からモジュールを移動するデータ移動手段と、
モジュールを利用するモジュール利用手段と、
を備え、
前記データ移動手段により移動したモジュールを前記モジュール利用手段により利用する際には、前記データ移動手段は、当該モジュールに関する管理データに記載されている新規構成要素及びその特性情報をまず移動し、移動した特性情報に基づいて次に移動すべき新規構成要素を決定して、モジュールの利用に必要となる新規構成要素及びその特性情報の移動を順次行う、
ことを特徴とする情報処理装置。
【請求項２２】
前記外部装置において、モジュールの本来の基本構成要素は、プログラム起動時に使用されるメソッド又はインスタンス、あるいはプログラムのユーザ・インターフェースの特定のボタンを押したときに使用されるメソッド又はインスタンスの参照情報を基本構成要素の特性情報として用いて分類されている、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２３】
前記外部装置において、モジュールの本来の基本構成要素は、プログラムを実際に実行して得られるプロファイル・データ、プログラムを解析して得られる静的データ、又はプログラム作成者によって与えられるデータを用いて分類されている、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２４】
前記データ移動手段は、新規構成要素とともにその特性情報を移動する、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２５】
移動した新規構成要素に関する特性情報をあらかじめ所持する、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２６】
前記データ移動手段により移動したモジュールを前記モジュール利用手段により利用する際には、新規構成要素とともに移動した特性情報並びにあらかじめ所持する特性情報に応じた処理を実行する、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２７】
前記データ移動手段は、モジュールのうち前記モジュール利用手段で最初に利用される部分を含む新規構成要素のみをまず移動し、その後必要に応じて新規構成要素を単位として移動する、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２８】
前記データ移動手段は、モジュールのうち前記モジュール利用手段で最初に利用される部分を含む新規構成要素のみをまず移動し、その後は、特性情報を参照して、前記モジュール利用手段によるモジュールの利用が未だ移動されていない新規構成要素に及ぶより以前に、モジュールの利用に並行して該新規構成要素の移動を行う、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項２９】
移動した新規構成要素を一時記憶するキャッシュ手段をさらに備え、
特性情報を用いて新規構成要素を選択して前記データ移動手段により移動するとともに前記キャッシュ手段に保存し、
前記モジュール利用手段がモジュールを利用する際には、前記データ移動手段により外部装置にデータ移動要求する前に前記キャッシュ手段の状態を検査して、前記キャッシュ手段によりモジュールの新規構成要素が既に保存されている場合にはそれを利用する、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項３０】
さらに圧縮データを所定の伸張方式で伸張する伸張手段を備え、
前記データ移動手段は、データ移動要求時に前記外部装置に前記伸張方式を通知して、対応する圧縮方式で圧縮された新規構成要素を選択的に移動し、
前記モジュール利用手段は、前記伸張手段により移動した新規構成要素を伸張した後に利用する、
ことを特徴とする請求項２１に記載の情報処理装置。
【請求項３１】
モジュールに含まれる各新規構成要素はそれぞれ個別に圧縮処理されており、
前記伸張手段は複数の伸張方式を備え、
前記データ移動手段は、データ移動要求時に該複数の伸張方式を前記外部装置に通知して、最も適した方式で圧縮された新規構成要素を選択的に移動する、
ことを特徴とする請求項３０に記載の情報処理装置。
【請求項３２】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて、外部装置にモジュールを提供する情報処理方法であって、
前記外部装置が利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される１以上の基本構成要素と、各基本構成要素の特性情報で構成されており、
モジュールの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報からなるモジュールを記憶するモジュール記憶ステップと、
モジュールを利用する際に最初に必要となる新規構成要素に関する管理データを管理するモジュール管理ステップと、
外部装置からの要求に応答して、再構成された新規構成要素並びにその特性情報を送信する情報送信ステップと、
を具備することを特徴とする情報処理方法。
【請求項３３】
前記モジュール記憶ステップでは、モジュールの本来の基本構成要素は、プログラム起動時に使用されるメソッド又はインスタンス、あるいはプログラムのユーザ・インターフェースの特定のボタンを押したときに使用されるメソッド又はインスタンスの参照情報を基本構成要素の特性情報として用いて分類され再構成された新規構成要素が記憶される、
ことを特徴とする請求項３２に記載の情報処理方法。
【請求項３４】
前記モジュール記憶ステップでは、モジュールの本来の基本構成要素は、プログラムを実際に実行して得られるプロファイル・データ、プログラムを解析して得られる静的データ、又はプログラム作成者によって与えられるデータを用いて分類され再構成された新規構成要素が記憶される、
ことを特徴とする請求項３２に記載の情報処理方法。
【請求項３５】
前記情報送信ステップでは、モジュールのうち前記外部装置で最初に利用される部分を含む新規構成要素のみをまず送信し、その後必要に応じて新規構成要素を単位として送信する、
ことを特徴とする請求項３２に記載の情報処理方法。
【請求項３６】
前記モジュール記憶ステップでは、各新規構成要素について１以上の圧縮方式を用いて圧縮して記憶され、且つその情報が対応する特性情報に記述されており、
前記情報送信ステップでは、前記外部装置が備える伸張方式の通知を受けて、これに対応した圧縮方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項３２に記載の情報処理方法。
【請求項３７】
前記モジュール記憶ステップでは、モジュールに含まれる各新規構成要素がそれぞれ個別に圧縮処理されて記憶されており、
前記情報送信ステップでは、前記外部装置から複数の伸張方式の通知を受けた場合、そのうち最も適した方式で圧縮された新規構成要素を送信する、
ことを特徴とする請求項３６に記載の情報処理方法。
【請求項３８】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて、モジュールを利用する情報処理方法であって、
利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される１以上の基本構成要素と、各基本構成要素の特性情報で構成され、
モジュールを提供する外部装置では、モジュールの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報とを記憶するとともに、モジュールを利用する際に最初に必要となる新規構成要素が管理データとして管理されており、
前記外部装置からモジュールを移動するデータ移動ステップと、
モジュールを利用するモジュール利用ステップと、
を備え、
前記データ移動ステップにより移動したモジュールを前記モジュール利用ステップにおいて利用する際には、前記データ移動ステップでは、当該モジュールに関する管理データに記載されている新規構成要素及びその特性情報をまず移動し、移動した特性情報に基づいて次に移動すべき新規構成要素を決定して、モジュールの利用に必要となる新規構成要素及びその特性情報の移動を順次行う、
ことを特徴とする情報処理方法。
【請求項３９】
前記外部装置において、モジュールの本来の基本構成要素は、プログラム起動時に使用されるメソッド又はインスタンス、あるいはプログラムのユーザ・インターフェースの特定のボタンを押したときに使用されるメソッド又はインスタンスの参照情報を基本構成要素の特性情報として用いて分類されている、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４０】
前記外部装置において、モジュールの本来の基本構成要素は、プログラムを実際に実行して得られるプロファイル・データ、プログラムを解析して得られる静的データ、又はプログラム作成者によって与えられるデータを用いて分類されている、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４１】
前記データ移動ステップでは、新規構成要素とともにその特性情報を移動する、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４２】
移動した新規構成要素に関する特性情報をあらかじめ所持する、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４３】
前記データ移動ステップにより移動したモジュールを前記モジュール利用ステップにおいて利用する際には、新規構成要素とともに移動した特性情報並びにあらかじめ所持する特性情報に応じた処理を実行する、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４４】
前記データ移動ステップでは、モジュールのうち前記モジュール利用手段で最初に利用される部分を含む新規構成要素のみをまず移動し、その後必要に応じて新規構成要素を単位として移動する、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４５】
前記データ移動ステップでは、モジュールのうち前記モジュール利用ステップで最初に利用される部分を含む新規構成要素のみをまず移動し、その後は、特性情報を参照して、前記モジュール利用手段によるモジュールの利用が未だ移動されていない新規構成要素に及ぶより以前に、モジュールの利用に並行して該新規構成要素の移動を行う、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４６】
特性情報を用いて新規構成要素を選択して前記データ移動ステップにより移動するとともに一時的に保存し、
前記モジュール利用ステップによりモジュールを利用する際には、前記データ移動ステップにより外部装置にデータ移動要求する前に、モジュールの新規構成要素が既に保存されている場合にはそれを利用する、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４７】
さらに圧縮データを所定の伸張方式で伸張する伸張ステップを備え、
前記データ移動ステップでは、データ移動要求時に前記外部装置に前記伸張方式を通知して、対応する圧縮方式で圧縮された新規構成要素を選択的に移動し、
前記モジュール利用ステップでは、前記伸張ステップにより移動した新規構成要素を伸張した後に利用する、
ことを特徴とする請求項３８に記載の情報処理方法。
【請求項４８】
モジュールに含まれる各新規構成要素はそれぞれ個別に圧縮処理されており、
前記伸張ステップは複数の伸張方式に対応し、
前記データ移動ステップでは、データ移動要求時に該複数の伸張方式を前記外部装置に通知して、最も適した方式で圧縮された新規構成要素を選択的に移動する、
ことを特徴とする請求項４７に記載の情報処理方法。
【請求項４９】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて複数の基本構成要素からなるモジュールを管理し利用するためのデータ処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・ソフトウェアであって、前記コンピュータ・システムに対し、
利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される複数の基本構成要素と、各基本構成要素の特性情報で構成されており、
プログラムの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報からなるモジュールを記憶するとともに、モジュールを利用する際に最初に必要となる新規構成要素を管理データとして保持する手順と、
記憶されているモジュールを移動して利用する際に、当該モジュールに関する管理データに記載されている新規構成要素及びその特性情報をまず移動する手順と、
移動した特性情報に基づいて次に移動すべき新規構成要素を決定して、モジュールの利用に必要となる新規構成要素及びその特性情報の移動を順次行う手順と、
を実行させることを特徴とするコンピュータ・ソフトウェア。
【請求項５０】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいて外部装置にモジュールを提供する処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・ソフトウェアであって、
前記外部装置が利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される１以上の基本構成要素と、各基本構成要素の特性情報で構成されており、
前記コンピュータ・システムに対し、
モジュールの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報からなるモジュールを記憶するモジュール記憶手順と、
モジュールを利用する際に最初に必要となる新規構成要素に関する管理データを管理するモジュール管理手順と、
外部装置からの要求に応答して、再構成された新規構成要素並びにその特性情報を送信する情報送信手順と、
を実行させることを特徴とするコンピュータ・ソフトウェア。
【請求項５１】
データと該データに対する処理手続を一体化してなるオブジェクトをモジュールとしてオブジェクト指向技術に基づいてモジュールを利用する処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・ソフトウェアであって、
利用するプログラムはモジュールとして管理され、各プログラムは、特性に基づいて分類される１以上の基本構成要素と、各基本構成要素の特性情報で構成され、
モジュールを提供する外部装置では、モジュールの本来の基本構成要素をそれぞれの特性に基づいて分類して再構成された新規構成要素と、それぞれの新規構成要素に関する特性を記述した特性情報とを記憶するとともに、モジュールを利用する際に最初に必要となる新規構成要素が管理データとして管理されており、
前記コンピュータ・システムに対し、
前記外部装置からモジュールを移動するデータ移動手順と、
モジュールを利用するモジュール利用手順と、
を実行させ、
前記コンピュータ・システムが前記データ移動手順により移動したモジュールを前記モジュール利用手順において利用する際には、前記データ移動手順では、当該モジュールに関する管理データに記載されている新規構成要素及びその特性情報をまず移動し、移動した特性情報に基づいて次に移動すべき新規構成要素を決定して、モジュールの利用に必要となる新規構成要素及びその特性情報の移動を順次行う、
ことを特徴とするコンピュータ・ソフトウェア。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、モジュールを管理するサーバとサーバからモジュールをダウンロードして利用するクライアントとで構成されるネットワーク・システムにおいてサーバからクライアントへのモジュールのダウンロードを行ったり、あるいは、システム・バスを介して接続される周辺機器からデータの転送を行うなどのデータの移動を処理するデータ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びに記憶媒体に係り、特に、クライアント側におけるダウンロード処理や周辺機器からのデータ転送の高速化を図ったデータ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びに記憶媒体に関する。
【０００２】
【従来の技術】
いわゆるコンピュータ処理は、プロセッサ上で所定のプログラムを実行するという形式で実現される。
【０００３】
最近のソフトウェア開発の分野では、処理手順ではなく処理対象となるデータを重要視するという「オブジェクト指向」（object oriented）技術が盛んに採り入れられている。一般に、オブジェクト指向によれば、ソフトウェアの開発と保守が効率化されると考えられている。オブジェクト指向に基づくソフトウェアは、基本的に、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、必要に応じて複数のオブジェクトを作成したり組み合わせることで１つのソフトウェアが完成する。勿論、プログラムのダウンロードも、モジュール単位で取り扱うことができる。
【０００４】
モジュールをクライアントにバスなどで接続された記憶装置で保管し管理を行い、クライアントはプログラムの実行に際してこれら記憶装置からプログラムをダウンロードして実行するという方法がある。また、クライアントとサーバからなるデータ処理システムにおいては、プログラムをサーバ上で保管、管理を行い、クライアントはプログラムの実行に際してサーバからプログラムをダウンロードし、実行するという方法がある。これらを、本明細書ではプログラムの「ダウンロード実行」と呼ぶ。
【０００５】
これら管理装置からプログラムのダウンロード実行を行う場合、プログラムの実行に先立ってダウンロードの完了を待つ必要がある。これを「ダウンロード実行遅延」と呼ぶ。また、クライアントに接続されたモジュールの管理を行う記憶装置のことを以下では「モジュール管理装置」と呼ぶ。
【０００６】
従来、クライアントに接続されたこれらモジュール管理装置からのダウンロード実行遅延の問題を解決するために、モジュール管理装置とクライアント間の転送速度の高速化が行われている。例えば、モジュール管理装置としてクライアントに接続されたハード・ディスク装置を利用する場合、ハード・ディスク装置の高密度化や回転数の向上、またハード・ディスク装置とクライアント間の接続バスの転送速度や転送幅の向上により転送速度の高速化を行っている。
【０００７】
また、モジュール管理装置とクライアントの間にキャッシュ（cache）を設け、キャッシュに保管されているデータに関してはモジュール管理装置への実際のアクセスを省略することで見かけ上の転送速度の高速化を行っている。
【０００８】
他方、クライアントとサーバからなるシステムにおいて、プログラム実行時にオンデマンドでダウンロードして実行する機能を提供しているものの例として、米サンマイクロシステムズ社により開発された「Ｊａｖａアプレット」を挙げることができる。これは、厳密には、Ｊａｖａの開発・実行環境が提供しているアプレット・クラスをカスタマイズして作成されたソフトウェアであり、通常ＨＴＭＬ（Hyper Text Markup Language）形式で記述されるウェブ・ページにＪａｖａアプレットを組み合わせることで、その機能を拡張することができる。ＨＴＭＬファイルでは、<APPLET>タグを使用して、Ｊａｖａアプレットの格納場所を記述する。Ｊａｖａアプレットは、複数のＪａｖａクラス・ファイル、又はそれらを１つにまとめた"ＪＡＲ"ファイルによって構成され、これらのファイルはサーバ上で保管、管理される。
【０００９】
Ｊａｖａアプレットを含むウェブ・ページを表示した際に、ＷＷＷ（World Wide Web）サーバからアプレットのコードがダウンロードされ、ブラウザ上で実行される。Ｊａｖａアプレットの実行は、通常、ウェブ・ブラウザが持つＪａｖａＶＭ（Ｊａｖａ仮想マシン） によって行われる。Ｊａｖａでは、ソース・ファイルをマシンに依存しない形式の「バイト・コード」と呼ばれる中間言語にコンパイルするが、ＪａｖａＶＭはこのバイト・コードをダウンロードして実行する。Ｊａｖａアプレット実行中に参照したＪａｖａクラスがＪａｖａＶＭ上にないと、ＪａｖａＶＭはＪａｖａアプレットの実行を停止し、サーバへＪａｖａクラス・ファイルのダウンロード要求を行い、ダウンロードが完了後に実行を再開する。
【００１０】
このため、Ｊａｖａアプレットの実行にはダウンロード完了を待つためのプログラムの実行遅延が発生し、それがプログラム実行の性能低下を引き起こすという問題がある。この遅延は上述の「ダウンロード実行遅延」に相当する。プログラムの起動時にはほとんどのＪａｖａクラスがＪａｖａＶＭには存在しないため、特にダウンロード実行遅延が大きくなる。この場合、プログラムの実行とダウンロードには並行性はない。
【００１１】
ダウンロード実行遅延の問題を解決するために、Ｊａｖａアプレットに対して幾つかの研究や開発がなされている。
【００１２】
１つの手法では、Ｊａｖａクラスを、プログラムの振る舞いを示すプロファイル・データやプログラムの構造を解析した結果を用いて、高い頻度で利用される部分と低い頻度で利用される２つに分割を行っている。そして、Ｊａｖａクラスのダウンロード要求が ＪａｖａＶＭによりなされた場合には、高い頻度で利用される部分のみをダウンロードすることで、転送量を削減し起動時間の短縮を行っている。
【００１３】
また、別の手法では、Ｊａｖａクラス内のメソッドをプロファイル・データやプログラムの構造解析の結果を用いて予測される使用順序に並べ替えるということを行う。Ｊａｖａクラスはあらかじめ決められたタイミングでサーバ側からダウンロードが開始される。そして、ＪａｖａＶＭは、Ｊａｖａクラスが完全にダウンロードされるのを待たずに、必要とされるメソッドやデータがダウンロード終了した時点で実行を開始することで、ダウンロードとプログラム実行を並列化して、ダウンロード実行遅延の改善を行っている。
【００１４】
また、別の手法では、Ｊａｖａクラスを、プログラムの振る舞いを示すプロファイルデータやプログラムの構造を解析した結果を用いて、高い頻度で利用される部分と低い頻度でしか利用されない部分とに分割して転送量を削減し、さらに、Ｊａｖａのプログラム中にプログラム生成時にあらかじめ別のＪａｖａクラスのプリフェッチを行う命令を挿入することで、ダウンロードとプログラム実行を並列化し、ダウンロード実行遅延の改善を行っている。
【００１５】
【発明が解決しようとする課題】
モジュールをモジュール管理装置からクライアントにダウンロードを行い実行するには、モジュールのダウンロードの完了を待つ必要があるため、処理速度が低下するという問題がある。この問題の解決方法としてモジュール管理装置とクライアント間の転送速度の高速化が行われている（上述）が、クライアントのモジュール実行速度に比較して転送速度は低速であるため、ダウンロード実行遅延が十分に解決されない。
【００１６】
また、モジュール管理装置とクライアントの間にキャッシュが存在する場合であっても、キャッシュ容量には制限があるため、すべてのモジュールをキャッシュ上に配置できる訳ではく、ダウンロード実行遅延が十分に解決されない。また、どのデータをキャッシュに残すかという判断はＬＲＵ（Least Recently Used）などの機械的なアルゴリズムによって行われるため、ダウンロード実行遅延の改善には必ずしも効果的ではない。
【００１７】
他方、クライアントとサーバからなるシステムにおけるダウンロード実行遅延は、Ｊａｖａアプレットに特有の問題ではなく、サーバからモジュールをダウンロード実行するすべてのシステムにおいて問題となる。
【００１８】
このダウンロード実行遅延の解決方法として、Ｊａｖａクラスを使用頻度によって２つに分割して転送量を削減する手法（上述）が提案されている。しかしながら、この手法は、Ｊａｖａアプレットのような比較的小さいプログラムに対しては有効であっても、今後ダウンロードを行うプログラムが高機能化されそのプログラムの大きさが増加していくに従い、単純に２分割にするだけでは十分な改善が見込めないという問題がある。
【００１９】
また、従来の手法では、プリフェッチはサーバによる発行であったり、又は、プログラム中にプリフェッチ命令として埋め込むことでプリフェッチの発行を行っていた。このため、クライアント機器のプログラム実行性能があらかじめ想定したものと異なった場合やネットワークの転送速度が想定した速度から実行時に機器の移動などに伴い変化した場合には充分な性能を発揮できないという問題もある。さらに、プログラムが複数のコンポーネントから構成され一部のコンポーネントが修正された場合、コンポーネントの大きさが変化するため、プリフェッチのタイミングが最適ではなくなるという問題もある。
【００２０】
また、クライアント機器によっては、キャッシュ・メモリを搭載していてそれをダウンロードしたプログラムの一時保存の目的に利用可能である場合や、プログラムの実行性能が高く圧縮したプログラムをクライアント側で伸張することが可能である場合がある。これらキャッシュや圧縮の機能を利用するためには別途対応が必要となり柔軟性に欠けるという問題もある。
【００２１】
本発明は上述したような技術的課題に鑑みたものであり、クライアント機器の能力や機能、モジュール管理装置とクライアント機器間の転送速度の多様性に柔軟に対応して、ダウンロード実行遅延を改善することができる、優れたデータ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びに記憶媒体を提供することを目的とする。
【００２２】
また、本発明は、クライアント機器の能力や機能、ネットワークの転送速度の多様性に柔軟に対応し、ダウンロード実行遅延を改善することができる、優れたデータ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びに記憶媒体を提供することを目的とする。
【００２３】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第１の側面は、モジュールを管理するモジュール管理装置と該モジュール管理装置からモジュールを移動して利用するクライアントで構成されるデータ処理システムであって、
前記モジュール装置において、モジュールの基本構成要素をそれぞれの特性を基に分類して複数の基本構成要素からなる新規構成要素によりモジュールを再構成するとともに、それぞれの新規構成要素に対して該当する特性を特性情報として記述して、前記クライアントからの要求に応答して再構成された新規構成要素並びにその特性情報を送信し、
前記クライアントにおいて、前記モジュール管理装置からモジュールを移動して利用する際には新規構成要素に関連付けられた特性情報に応じた処理をモジュールの利用とは透過的に実行する、
ことを特徴とするデータ処理システムである。
【００２４】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【００２５】
また、本発明の第２の側面は、モジュール管理装置において管理されるモジュールをクライアントに移動して利用するデータ処理方法であって、
前記モジュール装置において、モジュールの基本構成要素をそれぞれの特性を基に分類して複数の基本構成要素からなる新規構成要素によりモジュールを再構成するとともに、それぞれの新規構成要素に対して該当する特性を特性情報として記述して、前記クライアントからの要求に応答して再構成された新規構成要素並びにその特性情報を送信するステップと、
前記クライアントにおいて、前記モジュール管理装置からモジュールを移動して利用する際には新規構成要素に関連付けられた特性情報に応じた処理をモジュールの利用とは透過的に実行するステップと、
を具備することを特徴とするデータ処理方法である。
【００２６】
本発明の第１又は第２の側面に係るデータ処理システム又はデータ処理方法において、前記モジュール管理装置は、例えば、クライアントとネットワーク経由で相互接続されたサーバである。あるいは、前記モジュール管理装置は、所定の機器内でクライアントとバス経由で相互接続されたハード・ディスク装置やＤＶＤドライブ装置などの周辺装置であってもよい。
【００２７】
また、モジュールとは、例えば、コンピュータ可読形式で記述されたコンピュータ・プログラムのことである。モジュールは、基本構成要素に分解可能なデータであってもよい。
【００２８】
本発明の第１又は第２の側面に係るデータ処理システム又はデータ処理方法によれば、プログラムのような複数の基本構成要素からなるモジュールをフレーズ（ｐｈｒａｓｅ）と呼ばれる新規構成要素により再構成させることで、プログラムの実行に不要な部分を分類可能とし、実行に必要なプログラム部分のみをクライアント側に移動させることを可能とする。さらにフレーズにアノテーション（ａｎｎｏｔａｔｉｏｎ）と呼ばれる特性情報を対応させることで、同じプログラムに対してクライアントのさまざまな構成に応じてそれぞれに最適な形で、プリフェッチ、キャッシュといった異なる複数の手法の利用を柔軟に組み合わせた、ダウンロード実行の高速化を行うことができる。
【００２９】
前記モジュール管理装置では、各新規構成要素について１以上の圧縮方式を用いて圧縮し且つその情報を対応する特性情報に記述するとともに、前記クライアントが備える伸張方式の通知を受けてこれに対応した圧縮方式で圧縮された新規構成要素を送信するようにしてもよい。
【００３０】
また、前記モジュール管理装置では、モジュールに含まれる各新規構成要素をそれぞれ個別に圧縮処理し、前記クライアントから複数の伸張方式の通知を受けた場合はそのうち最も適した方式で圧縮された新規構成要素を送信するようにしてもよい。
【００３１】
また、本発明の第３の側面は、外部装置にモジュールを提供する情報処理装置又は方法であって、
モジュールの基本構成要素をそれぞれの特性を基に分類して、複数の基本構成要素からなる新規構成要素によりモジュールを再構成するモジュール再構成手段又はステップと、
それぞれの新規構成要素に対して該当する特性を特性情報として記述する特性情報記述手段又はステップと、
外部装置からの要求に応答して、再構成された新規構成要素並びにその特性情報を送信する情報送信手段又はステップと、
を具備することを特徴とする情報処理装置又は方法である。
【００３２】
ここで、モジュールとは、例えば、コンピュータ可読形式で記述されたコンピュータ・プログラムのことである。モジュールは、基本構成要素に分解可能なデータであってもよい。
【００３３】
本発明の第３の側面に係る情報処理装置は、例えば、コンピュータ・ネットワーク上でモジュールを提供・配信するサーバとして稼働することができる。また、サーバからモジュールの提供を受けてこれを利用する外部装置は、クライアントに相当する。あるいは、本発明の第３の側面に係る情報処理装置は、単一の装置内で、クライアントにバス接続されているハード・ディスク装置やＤＶＤドライブ装置などの周辺機器に相当する。
【００３４】
本発明の第３の側面に係る情報処理装置又は情報処理方法によれば、サーバ側では、プログラムを実行時の参照関係やダウンロード効率を考慮して、複数の基本構成要素からなる元のプログラムをフレーズと呼ばれる新規構成要素に分類再構成をし直すようになっている。そして、各フレーズにそのフレーズの特性を示す情報としてアノテーションと呼ばれる特性情報を対応させるようにした。このような場合、クライアント側では、アノテーションの情報を利用して、そのクライアント機器に適したプリフェッチ手法、キャッシュ、圧縮などの手法を柔軟に組み合わせることで、ダウンロード実行の速度を向上させることができる。
【００３５】
前記情報送信手段又はステップは、モジュールのうち前記外部装置すなわちクライアントで最初に利用される部分を含む新規構成要素のみをまず送信し、その後必要に応じて新規構成要素を単位として送信するようにしてもよい。
【００３６】
また、前記情報送信手段又はステップは、モジュールのうち前記外部装置すなわちクライアントで最初に利用される部分を含む新規構成要素のみをまず送信し、その後は、特性情報を参照して、クライアントにおけるモジュールの利用が未送信の新規構成要素に及ぶより以前に、クライアントにおけるモジュールの利用に並行して該未送信の新規構成要素の送信を行うようにしてもよい。この結果、クライアントにおいては、モジュールの利用とそのダウンロードの並行性や、ダウンロードの高速化を実現することができる。
【００３７】
また、前記モジュール再構成手段又はステップは、１以上の圧縮方式を用いて新規構成要素を圧縮し且つその情報を対応する特性情報に記述するようにしてもよい。このような場合、前記情報送信手段又はステップは、前記外部装置すなわちクライアントが備える伸張方式の通知を受けて、これに対応した圧縮方式で圧縮された新規構成要素を送信することができる。
【００３８】
本発明の第３の側面に係る情報処理装置又は情報処理方法においては、各新規構成要素毎に異なる圧縮方式を用いて圧縮処理を施すようにしてもよい。したがって、前記情報送信手段又はステップは、前記外部装置すなわちクライアントから複数の伸張方式の通知を受けた場合、そのうち最も適した方式で圧縮された新規構成要素を送信するようにすればよい。
【００３９】
また、本発明の第４の側面は、モジュールを利用する情報処理装置又は情報処理方法であって、
外部装置からモジュールを移動するデータ移動手段又はステップと、
モジュールを利用するモジュール利用手段又はステップと、
を備え、
モジュールは、基本構成要素をそれぞれの特性を基に分類して、複数の基本構成要素からなる新規構成要素により再構成されており、
また、各新規構成要素には特性情報が関連付けられており、
前記データ移動手段又はステップにより移動したモジュールを前記モジュール利用手段により利用する際には、新規構成要素に関連付けられた特性情報に応じた処理をモジュールの利用とは透過的に実行する、
ことを特徴とする情報処理装置又は情報処理方法である。
【００４０】
ここで、モジュールとは、例えば、コンピュータ可読形式で記述されたコンピュータ・プログラムのことである。モジュールは、基本構成要素に分解可能なデータであってもよい。
【００４１】
本発明の第４の側面に係る情報処理装置は、例えば、コンピュータ・ネットワーク上で、外部装置からモジュールをダウンロードしてこれを利用するクライアントとして稼働することができる。また、この情報処理装置にモジュールを提供する外部装置は、クライアントにネットラーク接続されるサーバや、クライアントにバス接続されるハード・ディスク装置やＤＶＤドライブ装置などの周辺機器に相当する。
【００４２】
本発明の第４の側面に係る情報処理装置又は情報処理方法によれば、サーバ側では、プログラムを実行時の参照関係やダウンロード効率を考慮して、複数の基本構成要素からなる元のプログラムをフレーズと呼ばれる新規構成要素に分類再構成をし直すようになっている。そして、各フレーズにそのフレーズの特性を示す情報としてアノテーションと呼ばれる特性情報を対応させるようにした。したがって、クライアント側では、アノテーションの情報を利用して、そのクライアント機器に適したプリフェッチ手法、キャッシュ、圧縮などの手法を柔軟に組み合わせることで、ダウンロード実行の速度を向上させることができる。
【００４３】
各新規構成要素についての特性情報は、サーバからダウンロードする場合と、クライアント側にローカルで保持する場合と、ダウンロードした特性情報とローカルの特性情報を組み合わせて用いる場合とが挙げられる。例えば、ダウンロードして用いる特性情報はモジュールの一般的な特性を記述したものであり、また、クライアント側でローカルに持つのは個々のクライアントに関する特性を記述したものである。
【００４４】
前記データ移動手段又はステップは、モジュールのうち前記モジュール利用手段又はステップで最初に利用される部分を含む新規構成要素のみをまず移動し、その後必要に応じて新規構成要素を単位として移動するようにしてもよい。
【００４５】
また、前記データ移動手段又はステップは、モジュールのうち前記モジュール利用手段又はステップで最初に利用される部分を含む新規構成要素のみをまず移動し、その後は、特性情報を参照して、前記モジュール利用手段又はステップによるモジュールの利用が未だ移動されていない新規構成要素に及ぶより以前に、モジュールの利用に並行して該新規構成要素の移動を行うようにしてもよい。この結果、モジュールの利用とそのダウンロードの並行性や、ダウンロードの高速化を実現することができる。
【００４６】
また、本発明の第４の側面に係る情報処理装置は、移動した新規構成要素を一時記憶するキャッシュをさらに備えてもよい。このような場合には、特性情報を用いて新規構成要素を選択して前記データ移動手段又はステップにより移動するとともに前記キャッシュに保存することができる。そして、前記モジュール利用手段又はステップがモジュールを利用する際には、前記データ移動手段又はステップにより外部装置すなわちサーバにデータ移動要求する前にキャッシュの状態を検査して、キャッシュにモジュールの新規構成要素が既に保存されている場合にはそれを利用することができる。この結果、モジュールの利用とそのダウンロードの並行性や、ダウンロードの高速化の効果を高めることができる。
【００４７】
また、さらに圧縮データを所定の伸張方式で伸張する伸張手段又はステップを備えていてもよい。このような場合、前記データ移動手段又はステップは、データ移動要求時に前記外部装置すなわちサーバに前記伸張方式を通知して、対応する圧縮方式で圧縮された新規構成要素を選択的に移動することができる。そして、前記モジュール利用手段又はステップは、前記伸張手段又はステップにより移動した新規構成要素を伸張した後に利用するようにすればよい。
【００４８】
モジュールに含まれる各新規構成要素毎に異なる圧縮方式を用いて圧縮処理を施してもよい。このため、前記伸張手段又はステップは複数の伸張方式を備えるようにしてもよい。このような場合には、前記データ移動手段又はステップは、データ移動要求時に該複数の伸張方式を前記外部装置すなわちサーバに通知して、最も適した方式で圧縮された新規構成要素を選択的に移動するようにすればよい。
【００４９】
本発明によれば、まずプログラムの構成要素にその特性を記述した情報を付加し、その情報を基に同じ特性を持つプログラムの構成要素をまとめることでプログラムの再構成を行うようになっている。この結果、プログラムは同じ特性を持つプログラムの構成要素の集合である新規構成要素すなわち「フレーズ」の集合として表現され、各新規構成要素にはその特性を記述した特性情報すなわち「アノテーション」が対応付けられる。
【００５０】
次に、クライアント実行環境はプログラムの実行要求を受けると、プログラムの最初の新規構成要素と対応する特性情報のみをサーバなどのモジュール管理装置からクライアントに移動する。そして、新規構成要素の実行開始と並行して、特性情報とクライアント実行環境の状態、ネットワークの状態を利用して実行環境に合わせた適切な処理を行う。これにより、ダウンロード実行はすべてのプログラムのダウンロード完了を待つ必要がなく、その時点のプログラムの実行に必要な部分のみをダウンロードすることで、ダウンロード実行遅延を生じることなくプログラムを実行することができる。
【００５１】
再構成されたプログラムの新規構成要素の特性としては、例えばプログラムの構成要素の参照関係を用いる。これにより、参照関係の強いプログラムの構成要素を１つの新規構成要素すなわち「フレーズ」にまとめることができる。
【００５２】
また、特性情報すなわち「アノテーション」に、新規構成要素が参照する新規参照要素への情報を持たせることができる。このような特性情報をクライアント実行環境がクライアントのプログラム実行速度や現在のネットワークの転送速度などの変動する要素を加味して処理することで、適切なタイミングで次に参照が予想される新規構成要素を実際のプログラムの実行による参照が発生するより以前にダウンロードを行うことができる。これにより、プログラム実行とダウンロードをクライアントの実行環境に最適な形で並行動作させることが可能となり、ダウンロード実行遅延を改善することが可能となる。
【００５３】
また、特性情報に利用頻度に関する情報を持たせるようにしてもよい。クライアント機器が利用可能なキャッシュを持つ場合には、キャッシュ管理オブジェクトを追加することで、キャッシュを利用可能とし、次回のプログラム実行時にサーバからのダウンロードを一部省略することが可能となる。キャッシュ管理オブジェクトはキャッシュの大きさや現在の利用状況を加味してキャッシュへのデータの保存、管理を行う。
【００５４】
また、クライアント実行環境は、サーバに対してダウンロード要求するときに、クライアント実行環境が持つ機能について通知を行う。このとき、クライアント実行環境が持つプログラムの圧縮伸張の種類を伝えることで、サーバはクライアントが持つ種類の伸張方式に対応した圧縮方式で圧縮されたプログラムを選択して利用することができる。これにより、プログラムの転送量を縮小することができ、ダウンロード実行遅延を改善することが可能となる。
【００５５】
また、本発明の第５の側面は、複数の基本構成要素からなるモジュールを管理し利用するためのデータ処理をコンピュータ・システム上で実行するように記述されたコンピュータ・ソフトウェアをコンピュータ可読形式で物理的に格納した記憶媒体であって、前記コンピュータ・ソフトウェアは、
モジュールの基本構成要素をそれぞれの特性を基に分類して複数の基本構成要素からなる新規構成要素によりモジュールを再構成するとともに、それぞれの新規構成要素に対して該当する特性を特性情報として記述してモジュールを管理するステップと、
モジュールを利用する際に、新規構成要素に関連付けられた特性情報に応じた処理をモジュールの利用とは透過的に実行するステップと、
を具備することを特徴とする記憶媒体である。
【００５６】
また、本発明の第６の側面は、外部装置にモジュールを提供する処理をコンピュータ・システム上で実行するように記述されたコンピュータ・ソフトウェアをコンピュータ可読形式で物理的に格納した記憶媒体であって、前記コンピュータ・ソフトウェアは、
モジュールの基本構成要素をそれぞれの特性を基に分類して、複数の基本構成要素からなる新規構成要素によりモジュールを再構成するモジュール再構成ステップと、
それぞれの新規構成要素に対して該当する特性を特性情報として記述する特性情報記述ステップと、
外部装置からの要求に応答して、再構成された新規構成要素並びにその特性情報を送信する情報送信ステップと、
を具備することを特徴とする記憶媒体である。
【００５７】
また、本発明の第７の側面は、モジュールを利用する処理をコンピュータ・システム上で実行するように記述されたコンピュータ・ソフトウェアをコンピュータ可読形式で物理的に格納した記憶媒体であって、前記コンピュータ・ソフトウェアは、
外部装置からモジュールを移動するデータ移動ステップと、
モジュールを利用するモジュール利用ステップと、
を備え、
モジュールは、基本構成要素をそれぞれの特性を基に分類して、複数の基本構成要素からなる新規構成要素により再構成されており、
前記データ移動ステップにより移動したモジュールを前記モジュール利用ステップにおいて利用する際には、新規構成要素に関連付けられた特性情報に応じた処理をモジュールの利用とは透過的に実行する、
ことを特徴とする記憶媒体である。
【００５８】
本発明の第５乃至第７の各側面に係る記憶媒体は、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ・ソフトウェアをコンピュータ可読な形式で提供する媒体である。このような媒体は、例えば、ＤＶＤ（Digital Versatile Disc）やＣＤ（Compact Disc）、ＦＤ（Floppy Disk）、ＭＯ（Magneto-Optical disc）などの着脱自在で可搬性の記憶媒体である。あるいは、ネットワーク（ネットワークは無線、有線の区別を問わない）などの伝送媒体などを経由してコンピュータ・ソフトウェアを特定のコンピュータ・システムに提供することも技術的に可能である。
【００５９】
本発明の第５乃至第７の各側面に係る記憶媒体は、コンピュータ・システム上で所定のコンピュータ・ソフトウェアの機能を実現するための、コンピュータ・ソフトウェアと記憶媒体との構造上又は機能上の協働的関係を定義したものである。換言すれば、本発明の第５乃至第７の各側面に係る記憶媒体を介して所定のコンピュータ・ソフトウェアをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第１及び第２の各側面に係るデータ処理システム又はデータ処理方法、本発明の第３の側面に係る情報処理装置又は情報処理方法、並びに、本発明の第４の側面に係る情報処理装置又は情報処理方法のそれぞれと同様の作用効果を得ることができる。
【００６０】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００６１】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【００６２】
Ａ．第１の実施形態
図１には、本発明の第１の実施形態に係るデータ処理システムの構成を模式的に示している。同図に示すように、システムは、ＤＶＤ１と、クライアント２と、これらを接続するシステム・バス３で構成される。
【００６３】
ＤＶＤ１は、ＤＶＤ（Digital Versatile Disc）の記録面にデータを読み書きする周辺機器であり、この場合は、クライアント２において実行するプログラムすなわちモジュールを記憶・管理するモジュール管理装置として機能する。
【００６４】
クライアント２は、プログラム５を実行する際には、システム・バス３経由でＤＶＤ１よりプログラムのダウンロードを行い、実行するものとする。また、クライアント２は、ダウンロード実行の高速化のために、その内部にキャッシュ４を持ち、必要に応じてプログラムの一部をキャッシュ４に配置することができる。
【００６５】
図２には、ＤＶＤ１により記録されるプログラムを拡大して示している。同図に示すように、本実施形態に係るプログラム５は、複数のフレーズ５−１と、複数のアノテーション５−２で構成される。
【００６６】
フレーズ５−１は、プログラムを本来構成するメソッドやインスタンスを特定の特性に基づいて分類したものである。特性としては、例えば、プログラムの起動時に使用されるメソッドやインスタンス、プログラムのユーザ・インタフェースの特定のボタンを押したときに使用されるメソッドやインスタンスといった、メソッドやインスタンスの参照特性を用いる。分類は、プログラムを実際に実行して得られるプロファイル・データや、プログラムを解析することによって得られる静的データ、又は、プログラム作成者によって与えられるデータを用いて行う。
【００６７】
アノテーションは、フレーズの特性を記述する目的で、フレーズに対応付けられる。本実施形態では、１つのフレーズに複数のアノテーションを対応付けすることが可能である。
【００６８】
図３には、アノテーションの構成例を模式的に示している。同図に示すように、アノテーション６は、アノテーション・タイプ６−１とアノテーション・パラメータ６−２の大きく２つの部分で構成される。
【００６９】
アノテーション・タイプ６−１は、アノテーション６が保持する特性の型を示し、アノテーション・パラメータ６−２はその型の値を持つ。本実施形態では、アノテーション・タイプとして、Ｒｅｆｅｒの１つの型を使用する。ここで、Ｒｅｆｅｒはフレーズ間の参照関係を示す。
【００７０】
図示のフレーズの次に実行されると予測されるフレーズのＩＤがアノテーション・パラメータとして記述されている。また、ｆｒｅｑｕｅｎｃｙには、このフレーズが利用される頻度が記述されており、これを基にクライアントはキャッシュにこのフレーズを保持するかどうかを判断を行うことができる。
【００７１】
Ｉｎｖｏｋｅは、そのフレーズがプログラムの実行の最初に参照される部分であることを示す。これらの型のアノテーションがすべてフレーズに対応付けられる訳ではなく、フレーズの特性に応じて必要なアノテーションのみが対応付けられる。
【００７２】
図４には、図１に示したクライアント２の構成をより詳細に示している。図示のクライアント２は、ＤＶＤ１からフレーズと対応するアノテーションを単位としてプログラムをダウンロードすることで、ダウンロード実行を行う。
【００７３】
同図に示す構成例では、クライアント２は複数の並行オブジェクトで構成されている。並行オブジェクトは、外部に公開された複数のメソッドと、オブジェクトの状態やメソッド本体を保持するメモリと、メソッドを実行するための単一のコンテキストと、未処理のメッセージを管理するメッセージ・キューより構成される。並行オブジェクトは、公開されたメソッドに対するメッセージを受信して、１度に１つのメッセージを処理する。また、メッセージ処理中に受けたメッセージはメッセージ・キューに保管される。
【００７４】
以下に、クライアント２を構成する各オブジェクトについて説明する。
【００７５】
実行環境（ＥｘｅｃＳｐａｃｅ）２−１：
実行環境２−１は、プログラムの実行やさまざまなサービスを提供するオブジェクトであり、実際にはさまざまなオブジェクトやモジュールによって構成されるが、本明細書では説明の便宜上まとめて１つのオブジェクトとして扱うことにする。
【００７６】
実行環境２−１は、ダウンロード実行機能に関して１つのメソッドＲｅｓｕｍｅを持つ。実際には実行環境２−１はこれ以外の多くのメソッド又はサービスを持つが、ダウンロード実行に関連がないので、ここでは説明を省略する。Ｒｅｓｕｍｅの動作について以下に説明する。
【００７７】
Ｒｅｓｕｍｅ：
１．引数で指定されたプログラム部分を、プログラムが利用可能に設定する。具体的には、プログラムのメモリ空間への割り付けや登録などの作業を行う。
２．引数でＩＤが指定された場合には、対応するプログラムの実行を再開する。ＩＤの意味付けは実行環境２−１によって行われる。Ｒｅｓｕｍｅに指定するＩＤは、実行環境２−１がＲｅｆｅｒを発行したときに指定したＩＤがそのまま指定される。本実施形態では、実行環境２−１は、Ｒｅｆｅｒ発行時にＴｈｒｅａｄＩＤを指定する。このため、Ｒｅｓｕｍｅメソッドの実行ではＴｈｒｅａｄＩＤに対応するｔｈｒｅａｄの実行再開を行う。
【００７８】
ダウンローダ２−２：
ダウンローダ２−２は、実行環境２−１からの実行要求や参照を解決し、また、ＤＶＤ１に対してプリフェッチを行うことや、キャッシュ２−３を利用することでダウンロード実行の実現と高速化を行う。
【００７９】
ダウンローダ２−２は、ＰｈｒａｓｅＴａｂｌｅとＰｈｒａｓｅＭａｐ、並びに、ＰｒｏｇｒａｍＭａｐをその内部に持つ。まず、これらについて説明する。
【００８０】
ＰｈｒａｓｅＴａｂｌｅ：
ＰｈｒａｓｅＴａｂｌｅは、フレーズを管理するテーブルである。ＰｈｒａｓｅＩＤに対応するエントリを持ち、各エントリは対応するフレーズのダウンロード状態を保持する。初期化時にはすべてのエントリがまだダウンロードされていないことを示す、"ｎｏｔ_ｌｏａｄｅｄ"でマークされている。また、各エントリは、対応するフレーズとアノテーションがダウンロードされていれば、それを登録することができる。また、ＰｈｒａｓｅＴａｂｌｅは対応するＰｈｒａｓｅＩＤがＤＶＤ１のどのセクタに保存されているかを示すセクタ情報を持っている。
【００８１】
ＰｈｒａｓｅＭａｐ：
ＰｈｒａｓｅＭａｐは、ＳｙｍｂｏｌＩＤとＰｈｒａｓｅＩＤの対応関係を管理するデータである。このデータを用いることで、ＳｙｍｂｏｌＩＤからＰｈｒａｓｅＩＤへの変換を行うことができる。ＰｈｒａｓｅＭａｐはＤＶＤ１から得たデータを基に実行時に生成される。
【００８２】
ＰｒｏｇｒａｍＭａｐ：
ＰｒｏｇｒａｍＭａｐは、プログラム名とプログラムが最初に必要とするＰｈｒａｓｅＩＤの対応関係を管理するデータである。このデータを用いることで、プログラム名からＰｈｒａｓｅＩＤへの変換を行うことができる。ＰｒｏｇｒａｍＭａｐはＤＶＤ１の特定位置のセクタに記録されていて、Ｄｏｗｎｌｏａｄｅｒは最初に変換が必要となった時点でＤＶＤ１からこれを読み込みＰｒｏｇｒａｍＭａｐを作成する。
【００８３】
また、ダウンローダ２−２は、Ｉｎｖｏｋｅ、Ｒｅｆｅｒ、Ｐｒｅｆｅｔｃｈというメソッドを備えている。以下、各メソッドの動作について説明する。
【００８４】
Ｉｎｖｏｋｅ：
１．ＰｒｏｇｒａｍＭａｐがまだ作成されていなければ、ＤＶＤ１に特定のセクタを指定してＬｏａｄメッセージを送り、ＰｒｏｇｒａｍＭａｐを作成する。
２．引数で指定されたプログラム名からＰｒｏｇｒａｍＭａｐを利用して、ＰｈｒａｓｅＩＤを得る。
３．ＰｈｒａｓｅＩＤを指定して、キャッシュ２−３にＧｅｔメッセージを送りフレーズを得る。
４．もし、キャッシュ２−３に存在しなかった場合は、ＤＶＤ１に対してＬｏａｄメッセージを発行する。
５．得られたフレーズに対応するアノテーションにＲｅｆｅｒ型のものがある場合は、
５−１．キャッシュ２−３に頻度情報とともにＰｕｔメッセージを送る。
５−２．ダウンローダ２−２に次のＰｈｒａｓｅＩＤを指定してＰｒｅｆｅｔｃｈメッセージを送る。
６．ＰｈｒａｓｅＴａｂｌｅとＰｈｒａｓｅＭａｐの初期化を行う。
７．実行環境２−１にＲｅｓｕｍｅメッセージを、送り実行を再開させる。
【００８５】
Ｒｅｆｅｒ：
１．ダウンローダ２−２自身のメッセージ・キューからＰｒｅｆｅｔｃｈメッセージをすべて削除する。
２．引数で指定されたＳｙｍｂｏｌＩＤをＰｈｒａｓｅＩＤに変換する。この変換にはＰｈｒａｓｅＭａｐを用いる。
３．ＰｈｒａｓｅＴａｂｌｅのＰｈｒａｓｅＩＤに対応するエントリがｎｏｔ_ｌｏａｄｅｄならば、
３−１．キャッシュ２−３にＧｅｔメッセージを送り、フレーズを得る。
３−２．もし、キャッシュ２−３に存在しなかった場合はＤＶＤ１に対してＬｏａｄメッセージを発行する。
３−３．得られたフレーズに対応するアノテーションにＲｅｆｅｒ型のものがある場合は、
（１）キャッシュ２−３に頻度情報とともにＰｕｔメッセージを送る。
（２）ダウンローダ２−２に次のＰｈｒａｓｅＩＤを指定してＰｒｅｆｅｔｃｈメッセージを送る。
３−４．ＰｈｒａｓｅＴａｂｌｅのＰｈｒａｓｅＩＤに対応する状態をダウンロード完了を示す"ｆｉｓｎｉｓｈｅｄ"でマークする。
４．実行環境２−１にＲｅｓｕｍｅメッセージを送り、実行を再開させる。
【００８６】
Ｐｒｅｆｅｔｃｈ：
ＰｈｒａｓｅＴａｂｌｅのＰｈｒａｓｅＩＤに対応するエントリがｎｏｔ_ｌｏａｄｅｄならば、
１．キャッシュ２−３にＧｅｔメッセージを送り、フレーズを得る。
２．もし、キャッシュ２−３に存在しなかった場合は、ＤＶＤ１に対してＬｏａｄメッセージを発行する。
３．得られたフレーズに対応するアノテーションにＲｅｆｅｒ型のものがある場合は、
３−１．キャッシュ２−３に頻度情報とともにＰｕｔメッセージを送る。
３−２．ダウンローダ２−２に次のＰｈｒａｓｅＩＤを指定してＰｒｅｆｅｔｃｈメッセージを送る。
４．ＰｈｒａｓｅＴａｂｌｅのＰｈｒａｓｅＩＤに対応する状態をダウンロード完了を示す"ｆｉｓｎｉｓｈｅｄ"でマークする。
【００８７】
キャッシュ２−３：
キャッシュ２−３は、フレーズやアノテーションをキャッシュ・メモリに保存し、必要に応じて取り出すことで、ダウンロード実行の高速化を行うオブジェクトである。キャッシュ２−３は、Ｇｅｔ、Ｐｕｔというメソッドを備えている。以下、これらのメソッドの動作について説明する。
【００８８】
Ｇｅｔ：
１．引数で指定されたＰｈｒａｓｅＩＤに対応するフレーズとそれに対応するアノテーションが、キャッシュ・メモリに保存されているかを調べる。
２．保存されている場合には、それらフレーズとアノテーションの内容を返す。
【００８９】
Ｐｕｔ：
１．引数で指定された頻度情報を用いて、引数で指定されたフレーズとそのアノテーションをキャッシュ・メモリに保存するかどうかを決定する。
２．保存する領域が足りない場合には、保存する領域が確保できるまで最も不要と判断するフレーズとアノテーションを削除する。
３．指定されたフレーズとアノテーションを引数で指定されたＰｈｒａｓｅＩＤと関連付けてキャッシュ・メモリに保存する。
【００９０】
ＤＶＤ１：
ＤＶＤ１は、クライアント２に接続され、ダウンロード実行するプログラムを管理、記憶するモジュール管理装置である。ＤＶＤ１は、そのメディアをセクタに分割して管理を行う。また、ＤＶＤ１は特定のセクタに、このメディアが持つプログラムに関する情報を持つ。
【００９１】
ＤＶＤ１は、Ｌｏａｄというメッセージを備えている。Ｌｏａｄは、引数で指定されたセクタ情報のデータを返すメッセージである。
【００９２】
起動シナリオ：
次いで、第１の実施形態に係るシステムの動作について説明する。図５には、実行環境２−１がプログラムの起動要求を発行したときの処理の流れを示している。
【００９３】
ユーザからのプログラム起動要求を受け取ると、実行環境２−１は、プログラム名とそれを実行するＴｈｒｅａｄＩＤを指定して、ダウンローダ２−２にＩｎｖｏｋｅメッセージを送る。
【００９４】
ダウンローダ２−２は、ＰｒｏｇｒａｍＭａｐが初期化されていなければ特定のセクション情報を引数としてＬｏａｄメッセージをＤＶＤ１に送り、ＰｒｏｇｒａｍＭａｐを作成する。図５に示した起動シナリオでは、ＰｒｏｇｒａｍＭａｐは既に作成されているものとする。
【００９５】
次に、ダウンローダ２−２は、ＰｒｏｇｒａｍＭａｐを利用して指定されたプログラム名から最初に必要とするＰｈｒａｓｅＩＤを得る。そして、ＰｈｒａｓｅＩＤを指定して、キャッシュ２−３にＧｅｔメッセージを送る。キャッシュ２−３が対応するフレーズとアノテーションを保持していれば、それが返される。図５に示した起動シナリオでは、プログラムの初めての起動なので、キャッシュ２−３は何も保持していないものとする。ダウンローダ２−２は、キャッシュ２−３からデータを得ることができなかったため、ＤＶＤ１にＬｏａｄメッセージを発行する。
【００９６】
ＤＶＤ１は、引数で指定されたＰｈｒａｓｅＩＤに対応する最初のフレーズとアノテーションをダウンローダ２−２に返す。
【００９７】
ダウンローダ２−２は、得られたアノテーションにＲｅｆｅｒ型のものがあれば、キャッシュ２−３に、そのフレーズとアノテーションをＰｕｔメッセージとして送る。
【００９８】
キャッシュ２−３は、指定されたアノテーションの頻度情報を利用して、このアノテーションとフレーズをキャッシュ・メモリに保存するかどうかを決定する。保存を行う場合には、キャッシュ・メモリの空き領域を確認して保存を行う。空き領域が不足している場合は、保持しているフレーズに対応するアノテーションの頻度情報を利用して、削除すべきフレーズとアノテーションを決定して、削除を行う。これを保存に必要な空き領域が確保できるまで繰り返す。
【００９９】
ダウンローダ２−２は、自分に対してＲｅｆｅｒ型のアノテーションが持つ次のＰｈｒａｓｅＩＤを引数としてＰｒｅｆｅｔｃｈメッセージを発行する。このメッセージはダウンローダ２−２のメッセージ・キューに格納される。
【０１００】
次いで、ダウンローダ２−２は、ＰｈｒａｓｅＴａｂｌｅとＰｈｒａｓｅＭａｐの初期化を行い、実行環境２−１にＲｅｓｕｍｅメッセージを発行する。
【０１０１】
実行環境２−１は、Ｒｅｓｕｍｅメッセージに応答してプログラムの実行を開始するが、それと同時にダウンローダ２−２は次のメッセージの処理を開始する。
【０１０２】
図５に示した起動シナリオでは、先のＰｒｅｆｅｔｃｈメッセージがメッセージ・キューから取り出され、それの処理が行われる。まず、引数で指定されたＰｈｒａｓｅＩＤに対応するＰｈｒａｓｅＴａｂｌｅのエントリが調べられる。エントリが保持するフレーズの状態がこのシナリオではｎｏｔ_ｌｏａｄｅｄであるため、キャッシュ２−３にＧｅｔメッセージを送る。そして、キャッシュ・メモリに対応するフレーズとアノテーションが存在しないので、ＤＶＤ１に対してフレーズとアノテーションに対応するセクタ・データを得るＬｏａｄメッセージを発行する。
【０１０３】
ＤＶＤ１は、引数で指定されたセクタ情報に対応するセクタ・データをダウンローダ２−２に返す。
【０１０４】
ダウンローダ２−２は、得られたアノテーションにＲｅｆｅｒ型のものがあれば、そのフレーズとアノテーションをキャッシュ２−３にＰｕｔメッセージとして送る。そして、ＰｈｒａｓｅＴａｂｌｅの状態を"ｆｉｎｉｓｈｅｄ"に変更して、フレーズとアノテーションをそこに登録する。また、ダウンローダ２−２は、最後に自分に対してＲｅｆｅｒ型のアノテーションが持つ次のＰｈｒａｓｅＩＤを引数としてＰｒｅｆｅｔｃｈメッセージを発行する。
【０１０５】
これらの処理の間、実行環境２−１によるプログラムの実行が次のフレーズへの実行に及ぶと、Ｒｅｆｅｒメッセージがダウンローダ２−２に送られる。
【０１０６】
ダウンローダ２−２は、次のメッセージの処理を開始する。図５に示した起動起動シナリオでは、２回目のＰｒｅｆｅｔｃｈメッセージよりも実行環境２−１からのＲｅｆｅｒメッセージが先にメッセージ・キューに入れられたものとする。このような場合、ダウンローダ２−２は、自身のメッセージ・キューからＰｒｅｆｅｔｃｈメッセージをすべて削除する。
【０１０７】
次いで、ダウンローダ２−２は、引数で指定されたＳｙｍｂｏｌＩＤを、ＰｈｒａｓｅＭａｐを用いてＰｈｒａｓｅＩＤへと変換する。そして、ＰｈｒａｓｅＴａｂｌｅを参照して状態の確認を行う。図５に示した起動シナリオでは、次のフレーズとアノテーションが１回目のＰｒｅｆｅｔｃｈメッセージによりＰｈｒａｓｅＴａｂｌｅに登録されているので、ＤＶＤ１にＬｏａｄメッセージを発行することなく、実行環境２−１にＲｅｓｕｍｅメッセージを送る。
【０１０８】
以上により、プログラムのダウンロード実行がプリフェッチとキャッシュを利用して可能となる。また、キャッシュを持たないクライアントに対してもキャッシュ２−３へのＧｅｔメッセージを行わないことで、同じＤＶＤ１を利用して対応することができる。
【０１０９】
本実施形態では、プログラムを実行時の参照関係やダウンロード効率を考慮して、プログラムの基本構成要素をフレーズに分類再構成をし直す。そして、各フレーズにそのフレーズの特性を示すものとしてアノテーションを対応させて、モジュール管理装置に置く。クライアント側ではアノテーションの情報を利用して、プリフェッチやキャッシュの手法を柔軟に組み合わせることで、ダウンロード実行の速度を向上させることができる。
【０１１０】
Ｂ．第２の実施形態
図６には、本発明に係るデータ処理が実現されるコンピュータ・ネットワーク構成例を模式的に示している。図示のネットワーク・システムは、サーバ１１と、１以上のクライアント１２及び１３と、ネットワーク１４とで構成されている。
【０１１１】
サーバ１１は、プログラム１１−１、プログラム１１−２などの複数のプログラムを持ち、これらをネットワーク１４経由でクライアント１２，１３に提供することができる。図６に示す実施形態では、プログラム１１−１は圧縮の行われていないプログラムであり、また、プログラム１１−２は圧縮によって大きさが縮小されたプログラムである。
【０１１２】
また、図６に示す実施形態では、ネットワーク１４上には、クライアント１２とクライアント１３という２種類のクライアントが存在することを想定する。一方のクライアント１２は、その内部にキャッシュ・オブジェクト１２−１と圧縮伸張機能１２−２を備えている。また、他方のクライアント１３はそれらの機能を持たないものとする。
【０１１３】
これらサーバ１１とクライアント１２、クライアント１３は、図示の通り、ネットワーク１４によって相互接続されている。このネットワーク１４はクライアント１２、クライアント１３の状態、又は、ネットワーク１４自身の状態によりその転送速度が動的に変動するものとする。例えば、クライアントが静止時と移動時では転送速度が異なったり、同時にサーバ１１と通信するクライアント数の変化により各クライアントに割り当てられるネットワークの速度が変化する。
【０１１４】
なお、サーバ１１や各クライアント１２，１３は、一般的なコンピュータ・システムである以外に、所定のプログラム・コードを実行して演算処理を行うプロセッサで構成されるその他のタイプの情報機器であってもよい。
【０１１５】
図７には、サーバ１１により保持されるプログラムの構成を模式的に示している。同図に示すように、本実施形態に係るプログラム１５は、複数のフレーズ１５−１と、各フレーズ毎に設けられた複数のアノテーション１５−２とで構成される。
【０１１６】
フレーズ１５−１は、プログラムを本来構成するメソッドやインスタンスを特定の特性に基づいて分類したものである。特性としては、例えば、プログラムの起動時に使用されるメソッドやインスタンス、プログラムのユーザ・インタフェースの特定のボタンを押したときに使用されるメソッドやインスタンスといった、メソッドやインスタンスの参照特性を用いることができる。このような参照特性に応じてメソッドやインスタンスの分類を行う。分類は、プログラムを実際に実行して得られるプロファイル・データや、プログラムを解析することで得られる静的データや、プログラム作成者によって与えられるデータを用いて行う。
【０１１７】
アノテーションはフレーズの特性を記述する目的で、フレーズに対応付けられる。１つのフレーズに複数のアノテーションを対応付けることが可能である。 図８には、アノテーションの構成例を模式的に示している。同図において、アノテーション１６は、 アノテーション・タイプ１６−１と、アノテーション・パラメータ１６−２とで構成される。アノテーション・タイプ１６−１はアノテーション１６が保持する特性のタイプを示し、アノテーション・パラメータ１６−２はその型の値を持つ。
【０１１８】
本実施形態では、 アノテーション・タイプとして、Ｒｅｆｅｒ，Ｃｏｍｐｒｅｓｓｅｄ，Ｉｎｖｏｋｅ，Ｍａｐの４つの型を使用する。Ｒｅｆｅｒは、フレーズ間の参照関係を示す。Ｃｏｍｐｒｅｓｓｅｄは、フレーズの圧縮を示す。Ｉｎｖｏｋｅは、そのフレーズがプログラムの実行の最初に参照される部分であることを示す。Ｍａｐは、フレーズのダウンロード先での制御情報を含むことを示す。これらのタイプのアノテーションがすべてフレーズに対応付けられる訳ではなく、フレーズの特性に応じて必要なアノテーションのみが対応付けられる。
【０１１９】
図８に示すアノテーション構成例では、アノテーション・タイプとしてフレーズの参照関係を示すＲｅｆｅｒが指定され、その型の値を示すアノテーション・パラメータとして、ｐｈｒａｓｅ_ｓｉｚｅ，ｅｘｅｃ_ｓｉｚｅ，ｆｒｅｑｕｅｎｃｙ，ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅを持っている。
【０１２０】
ｐｈｒａｓｅ_ｓｉｚｅは、対応するフレーズの大きさを示している。また、ｅｘｅｃ_ｓｉｚｅは、フレーズの命令数を示している。この命令数は、フレーズ中に含まれる命令数ではなく、フレーズが最初に参照されるときの典型的な命令数で、命令中にループがあれば典型的なループ回数に要する命令数やＩ／Ｏ待ちやユーザの入力待ちなどがある場合にはそれも命令数に換算して示す。また、ｆｒｅｑｕｅｎｃｙは、このフレーズが参照される頻度を示している。また、ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅは、このフレーズが参照する別のフレーズに関する情報であり、参照するフレーズの個数分だけ存在する。但し、参照の可能性を持つすべてのフレーズに関するｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅを持つ必要はなく、このフレーズの最初の参照時にｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅへの参照の頻度の低い参照についてはｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅが存在しなくてよい。
【０１２１】
ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅは、その中にＰｈｒａｓｅＩＤとｒｅｆｅｒｅｎｃｅ_ｐｏｓｉｔｉｏｎを持つ。ＰｈｒａｓｅＩＤは、フレーズを識別する識別情報（ＩＤ）のことであり、各プログラム毎に対応する フレーズが決められる。ｒｅｆｅｒｅｎｃｅ_ｐｏｓｉｔｉｏｎは、ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅの参照間での命令数がこのフレーズの実行開始からの相対値で記述する。ｒｅｆｅｒｅｎｃｅ_ｐｏｓｉｔｉｏｎの命令数も、ｅｘｅｃ_ｓｉｚｅと同様に、フレーズが最初に参照されるときのｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅ参照までの典型的な命令数であり、命令中にループがあれば典型的なループ回数に要する命令数やＩ／Ｏ待ちやユーザの入力待ちなどがある場合にはそれも命令数に換算して示す。
【０１２２】
図９には、図６で示したクライアント１２の機能構成を模式的に示している。クライアント１２はサーバ１１とメッセージをやり取りすることで、プログラムのダウンロード実行を行う。既に述べたように、クライアント１２は、ダウンロードしたプログラムを一時的に格納するキャッシュ１２−１と、圧縮データを伸張処理する圧縮伸張器１２−２を備えている。
【０１２３】
本実施形態では、クライアント１２は、並行オブジェクトという形態で構成されるものとする。ここで言う「並行オブジェクト」は、外部に公開された複数のメソッドと、オブジェクトの状態やメソッド本体を保持するメモリと、メソッドを実行するための単一のコンテキストと未処理のメッセージを管理するメッセージ・キューにより構成される。並行オブジェクトは、公開されたメソッドに対するメッセージを受信して、１度に１つのメッセージを処理する。メッセージ処理中に受けたメッセージはメッセージ・キューに保管される。
【０１２４】
クライアント１２は、ネットワーク１４経由でサーバ１１からのプログラムのダウンロードを管理するダウンローダ（Ｄｏｗｎｌｏａｄｅｒ）１２−３と、ダウンロードしたプログラムの実行環境（ＥｘｅｃＳｐａｃｅ）１２−４と、ダウンロードしたプログラムの一時記憶を管理するキャッシュ・オブジェクト（ＣａｃｈｅＯｂｊｅｃｔ）１２−１と、圧縮データの伸張処理を管理する圧縮伸張器（Ｅｘｐａｎｄａｒ）１２−２というそれぞれの並行オブジェクトにより構成される。
【０１２５】
実行環境１２−４は、実際には並行オブジェクトではなく、プログラムの動作環境を提供するオペレーティング・システム（ＯＳ）、あるいは、オペレーティング・システム上で構築されるプログラムの実行環境のことであるが、本明細書中では便宜上、擬似的に並行オブジェクトとして説明する。また、サーバ１１側の実行環境についても、同様に擬似的に並行オブジェクトとして説明をする。
【０１２６】
クライアント１２においては、キャッシュ・メモリを管理するキャッシュ・オブジェクト１２−１と、圧縮伸張機構を管理する圧縮伸張器１２−２ を備えている。また、本明細書中では、説明の簡素化のため、同一プログラムの複数起動やプログラムのバージョン管理の機能は省略している。
【０１２７】
また、セマンティクス（Ｓｅｍａｎｔｉｃｓ）１２−５は、並行オブジェクトではなく ダウンローダ１２−３により参照されるテーブルである。本実施形態では、セマンティクス１２−５をダウンローダ１２−３から分離して構成することによって、セマンティクス１２−５の書き換えだけでダウンローダ１２−３の振る舞いすなわち動作特性を容易に変更できるようにしている。
【０１２８】
また、図１０には、図６で示したクライアント１３の機能構成を模式的に示している。図示の通り、クライアント１３は、ネットワーク経由でサーバからのプログラムのダウンロードを管理するダウンローダ（Ｄｏｗｎｌｏａｄｅｒ）１３−１と、 ダウンロードしたプログラムの実行環境（ＥｘｅｃＳｐａｃｅ）１３−２というそれぞれの並行オブジェクトにより構成される。
【０１２９】
セマンティクス（Ｓｅｍａｎｔｉｃｓ）１３−３は、並行オブジェクトではなく、ダウンローダ１３−１により参照されるテーブルである。セマンティクス１２−５をダウンローダ１３−１から分離して構成することによって、セマンティクス１３−３の書き換えだけでダウンローダ１３−１の振る舞いすなわち動作特性を容易に変更できるようにしている。
【０１３０】
以下では、クライアント１２又は１３を構成する各オブジェクトについて説明する。
【０１３１】
実行環境（ＥｘｅｃＳｐａｃｅ）：
実行環境は、プログラムの実行や様々なサービスを提供するプログラムであり、実際には、さまざまなオブジェクトやモジュールによって構成される。本明細書では、説明の便宜上、これらをまとめて１つのオブジェクトとして扱う。
【０１３２】
実行環境は、ダウンロード実行機能に関して２つのメソッドを持つ。実際には、実行環境は、以下で述べる以外の多くのメソッド又はサービスを持つが、ダウンロード実行すなわち本発明の要旨に直接関連がないため、説明を省略する。実際には、オペレーティング・システム（ＯＳ）やＶｉｒｔｕａｌ Ｍａｃｈｉｎｅ（ＶＭ：仮想マシン）がここで言う実行環境に相当する。
【０１３３】
本実施形態では、実行環境は、Ｍａｐ，ＳｅｔＴｉｍｅＥｖｅｎｔ，ＣａｎｃｅｌＴｉｍｅＥｖｅｎｔという３種類のメソッドを動作させることができる。
【０１３４】
Ｍａｐメソッドは、引数で指定されたプログラム部分を、プログラムが利用可能に設定する。具体的にはプログラムのメモリ空間への割り付けや登録などの作業を行う。
【０１３５】
また、Ｍａｐメソッドは、引数でＩＤ が指定された場合には、対応するプログラムの実行を再開する。ＩＤの意味付けは実行環境によって行われる。Ｒｅｓｕｍｅに指定するＩＤは、実行環境がＲｅｆｅｒメソッドを発行したときに指定したＩＤがそのまま指定される。本実施形態では、実行環境は、Ｒｅｆｅｒ発行時にスレッドＩＤを指定する。このためＲｅｓｕｍｅメソッドの実行ではスレッドＩＤに対応するスレッドの実行再開を行う。
【０１３６】
ＳｅｔＴｉｍｅＥｖｅｎｔは、引数で指定された時刻に、引数で指定されたエントリに、引数で指定された引数でメッセージを送る。また、イベントＩＤを返す。
【０１３７】
ＣａｎｃｅｌＴｉｍｅＥｖｅｎｔは、引数で指定されたイベントＩＤ のイベントをキャンセルする。
【０１３８】
サーバ：
サーバは、クライアントとは異なるネットワークで接続されたホスト上で動作するオブジェクトであり、クライアントでダウンロード実行されるプログラムを管理するとともに、要求に応じてプログラムのダウンロードをクライアントに対して行う。
【０１３９】
本実施形態では、サーバは、Ｆｅｔｃｈ及びＣａｎｃｅｌという各メッセージを発行する。
【０１４０】
Ｆｅｔｃｈメソッドは、引数で指定されたフレーズＩＤに対応するフレーズ、又は、アノテーションを引数で指定されたタイプをダウンロードする要求を受け付ける。ダウンロードの完了は、Ｅｖａｌメッセージをダウンローダ・オブジェクトに発行することで通知される。
【０１４１】
Ｃａｎｃｅｌメソッドは、引数で指定されたフレーズＩＤとタイプに対応するダウンロード処理をキャンセルする。 キャンセルが行われると、ダウンロード・リクエストに対する完了を示すＥｖａｌメッセージは発行されない。
【０１４２】
キャッシュ・オブジェクト：
キャッシュ・オブジェクトは、フレーズやアノテーションをキャッシュ・メモリに保存し、必要に応じて取り出すことで、ダウンロード実行の高速化を行うオプショナルなオブジェクトである。クライアント機器がキャッシュ・メモリを利用可能である場合に使用するオブジェクトである。
【０１４３】
本実施形態では、キャッシュ・オブジェクトは、Ｇｅｔ並びにＰｕｔという２種類のメソッドを動作する。
【０１４４】
Ｇｅｔメソッドは、引数で指定されたフレーズＩＤ に対応するフレーズ又はアノテーションが、キャッシュ・メモリに保存されているか否かを調べる。そして、キャッシュ・メモリ中に保存されている場合にはそれらの内容を返す。また、フレーズがキャッシュ・メモリへ保存されていたかを示すステータス・コードを返す。また、アノテーションがキャッシュ・メモリへ保存されていたかを示すステータス・コードを返す。
【０１４５】
Ｐｕｔメソッドは、引数で指定されたフレーズ又はアノテーションを保存する領域がキャッシュ・メモリにあるか否かを検査する。もしキャッシュ・メモリ中に領域がなければ、適切なアルゴリズム（例えば、ＬＲＵ（Least Recently Used）論理など）で不要と判断するフレーズ又はアノテーションを領域が確保できるまで削除する。そして、指定されたフレーズ又は アノテーションを、引数で指定されたフレーズＩＤと関連付けて、キャッシュ・メモリに保存する。
【０１４６】
圧縮伸張器（Ｅｘｐａｎｄｅｒ）：
圧縮伸張器は、複数の圧縮方法に対する展開機能を備えたオブジェクトである。このオブジェクトは、クライアントが展開を行うだけ充分なＣＰＵ（Central Processing Unit）性能や展開処理用のハードウェアなどを持つ場合に、ダウンロード実行の高速化のためにオプショナルで追加される。
【０１４７】
本実施形態では、圧縮伸張器は、Ｅｘｐａｎｄメソッドを動作する。Ｅｘｐａｎｄメソッドは、引数で指定された展開アルゴリズムを用いて、引数で指定された内容を展開し、その内容を返す。
【０１４８】
ダウンローダ（Ｄｏｗｎｌｏａｄｅｒ）：
ダウンローダは、オペレーティング・システムからの実行要求や参照を解決し、また、サーバ・オブジェクトに対してプリフェッチを行うことで、プログラムのダウンロード実行の実現と高速化を行う。本実施形態では、ダウンローダの一部を セマンティクスとして分離することで、異なるクライアント機器への適合を容易にしている（前述）。ここでは、セマンティクスを含まないダウンローダ本来の部分について説明をする。
【０１４９】
ダウンローダは、フレーズ・テーブル（ＰｈｒａｓｅＴａｂｌｅ）と、フレーズ・マップ（ＰｈｒａｓｅＭａｐ）と、リクエスト・キュー（ＲｅｑｕｅｓｔＱｕｅｕｅ）と、現実行速度（ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄ）と、現在時刻（ＣｕｒｒｅｎｔＴｉｍｅ）と、現帯域幅（ＣｕｒｒｅｎｔＢａｎｄｗｉｄｔｈ）をその内部に持つ。まず、これらについて説明する。
【０１５０】
フレーズ・テーブル（ＰｈｒａｓｅＴａｂｌｅ）：
フレーズ・テーブルは、フレーズを管理するテーブルである。フレーズＩＤに対応するエントリを持ち、各エントリは、フレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）、登録ＩＤ（ｒｅｇｉｓｔｅｒｅｄＩＤ）、参照時刻（ｒｅｆｅｒｅｎｃｅ_Ｔｉｍｅ）の各メンバで構成される。
【０１５１】
フレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）とアノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）には、それぞれフレーズ又はアノテーションのダウンロードの状態を示す値が書き込まれる。取り得る値としては、ｎｏｔｈｉｎｇ，ｒｅｑｕｅｓｔｅｄ，ｌｏａｄｅｄがある。
【０１５２】
登録ＩＤ（ｒｅｇｉｓｔｅｒｅｄＩＤ）は、このエントリに該当するフレーズがＲｅｆｅｒメソッドで参照されているかそうでないかを示し、Ｒｅｆｅｒ で参照された場合にはそのとき指定されたＩＤが登録される。
【０１５３】
参照時刻（ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ）は、このエントリに該当するフレーズが参照される時刻を保持する。また、できるだけ早い時点で必要な場合にはそれを示す値が保持される。
【０１５４】
フレーズ・テーブルは、サーバ・オブジェクトから得たデータを基に実行時に生成される。
【０１５５】
フレーズ・マップ（ＰｈｒａｓｅＭａｐ）：
フレーズ・マップは、アドレスとフレーズＩＤの対応関係を管理するデータである。このデータを用いることで、アドレスからフレーズＩＤへの変換を行うことができる。フレーズ・マップは、サーバ・オブジェクトから得たデータを基に実行時に生成される。
【０１５６】
リクエスト・キュー（ＲｅｑｕｅｓｔＱｕｅｕｅ）：
リクエスト・キューは、サーバ・オブジェクトへのダウンロード要求を管理するキューである。リクエスト発行時には、参照時刻と優先順位（ｐｒｉｏｒｉｔｙ） が指定される。優先順位としては、ｈｉｇｈ又はｌｏｗのいずれかの値が指定され、ｈｉｇｈの場合には、リクエストは参照時刻にかかわらずリクエストの発生順にキューの前の方に入れられる。また、優先順位がｌｏｗの場合には、参照時刻順でソートされ、参照時刻が早いほどキューの前の方に入れられる。サーバ・オブジェクトへのダウンロード要求は、このリクエスト・キューの前から順に行われる。
【０１５７】
現実行速度（ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄ）：
現実行速度（ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄ）は、現在のＣＰＵの単位時間当りの平均的な命令実行数を示す。
【０１５８】
現在時刻（ＣｕｒｒｅｎｔＴｉｍｅ）：
現在時刻（ＣｕｒｒｅｎｔＴｉｍｅ）は、現在の時刻をＲｅｆｅｒメソッドが発生したときを起点に示す。
【０１５９】
現帯域幅（ＣｕｒｒｅｎｔＢａｎｄｗｉｄｔｈ）：
現帯域幅（ＣｕｒｒｅｎｔＢａｎｄｗｉｄｔｈ）は、現在のネットワークの平均的なダウンロード速度を示す。
【０１６０】
次に、ダウンローダが動作するメソッドについて説明する。本実施形態では、ダウンローダは、Ｒｅｆｅｒ，Ｅｖａｌ，Ｄｏｗｎｌｏａｄ，ＣａｎｃｅｌＤｏｗｎｌｏａｄというそれぞれのメソッドを動作する。
【０１６１】
Ｒｅｆｅｒ：
Ｒｅｆｅｒメソッドは、引数で指定されたアドレス又はプログラム名を フレーズＩＤに変換する。プログラム名の場合には、あらかじめ決められたフレーズＩＤ に変換する。アドレスの場合には、アドレスからフレーズＩＤへの変換データ ・フレーズ・マップを用いて変換を行う。また、フレーズＩＤと優先順位ｈｉｇｈを指定して、ダウンローダのＥｖａｌメソッドを呼び出す。
【０１６２】
Ｅｖａｌ：
Ｅｖａｌメソッドは、引数で指定されたフレーズＩＤに対応するフレーズ・テーブルのエントリを得る。引数でアノテーションが指定されている場合は、フレーズ・テーブルの該当エントリのメンバであるアノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）をｌｏａｄｅｄに更新する。また、引数でフレーズが指定されている場合は、フレーズ・テーブルのエントリの該当エントリのメンバであるフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）をｌｏａｄｅｄに更新する。
【０１６３】
下表には、アノテーション状態とフレーズ状態に対応するエントリの関係をまとめている。
【０１６４】
【表１】
0003687587.tif 000002
【０１６５】
この表において、引数で指定されたアノテーションの複数のアノテーション・タイプ（ａｎｎｏｔａｔｉｏｎ_ｔｙｐｅ）に対応する動作（Ａｃｔｉｏｎ）がエントリにある場合には、引数にフレーズＩＤと、アノテーションと、フレーズを指定して、該当するエントリにある順序で動作（Ａｃｔｉｏｎ）を呼び出す。アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）がｏｔｈｅｒの場合には、該当するエントリにあるすべての 動作（Ａｃｔｉｏｎ）がエントリに記述された順序で呼び出される。
【０１６６】
ダウンロード・チャネルに空きがあるうちは、リクエスト・キューの先頭からリクエストを１つ取り出して、サーバ・オブジェクトに対してフレーズＩＤとタイプにアノテーション又はフレーズを指定して、Ｆｅｔｃｈメッセージ（上述）を発行するという動作を繰り返す。
【０１６７】
Ｄｏｗｎｌｏａｄ：
Ｄｏｗｎｌｏａｄメソッドは、引数で指定されたタイプがアノテーション又はフレーズのいずれであるかに応じて、引数で指定されたフレーズＩＤに対応するフレーズ・テーブルのエントリのアノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）又はフレーズ状態（ｐｈａｒｓｅ_ｓｔａｔｕｓ）をｒｅｑｕｅｓｔｅｄに設定する。引数で指定されたタイプのアノテーション又はフレーズと、引数で指定された優先順位又は参照時刻（ｒｅｆｅｒｅｎｃｅ ｔｉｍｅ）に従って、リクエスト・キューに登録（ｅｎｑｕｅｕｅ）する。ダウンロード・チャネルに空きがあるうちは、リクエスト・キューの先頭からリクエストを１つ取り出して、サーバ・オブジェクトへフレーズＩＤとタイプにアノテーション又はフレーズを指定して、さらに圧縮伸張器（Ｅｘｐａｎｄｅｒ）が利用可能かどうかを含むクライアント情報をつけてＦｅｔｃｈ（上述）メッセージを発行する。という動作を繰り返す。
【０１６８】
ＣａｎｃｅｌＤｏｗｎｌｏａｄ：
ＣａｎｃｅｌＤｏｗｎｌｏａｄメソッドは、優先順位がｌｏｗに指定されたリクエストをすべてリクエスト・キューから削除する。また、現在ダウンロード中のリクエストのうち優先順位がｌｏｗに指定されているリクエストについて、サーバ・オブジェクトにフレーズＩＤとタイプを指定してＣａｎｃｅｌメッセージ（前述）を発行する。また、ＳｅｔＴｅｍｅＥｖｅｎｔメソッド（前述）を実行したイベントに対してＣａｎｃｅｌＴｉｍｅＥｖｅｎｔメソッド（前述）を発行する。また、現在時刻（ＣｕｒｒｅｎｔＴｉｍｅ）を無効（ｉｎｖａｌｉｄ）にする。また、フレーズ・テーブル中で削除した各リクエストに対応するのエントリのアノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）とフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）をそれぞれｎｏｔｈｉｎｇにする。
【０１６９】
セマンティクス（Ｓｅｍａｎｔｉｃｓ）：
セマンティクスは、オブジェクトではなく、上述のダウンローダにより参照されるテーブルである。本実施形態では、セマンティクスをダウンローダから分離して構成することで、クライアントの仕様などに応じてダウンローダの振る舞いの変更を容易にしている。
【０１７０】
セマンティクスは、フレーズ及びアノテーションのダウンロード状態と、アノテーションのアノテーション・タイプ（ａｎｎｏｔａｔｉｏｎ_ｔｙｐｅ）に対応したエントリを持っている。エントリはアクションのリストで構成される。アクションは対応するアノテーション・タイプを持つアノテーションが存在した場合に、ダウンローダにより呼び出される。呼び出し順序は、リストで指定された順序で行われる。アノテーションがダウンロードされていない場合、リストのすべてのアクションがその順序で呼び出される。
【０１７１】
以下の表２ではクライアント２のセマンティクスを、表３ではクライアント１３のセマンティクスをそれぞれ示している。各表では、アクション欄の括弧内は対応するアノテーション・タイプを示している。クライアント１２はキャッシュと圧縮伸張機能を持つので、それらのためのアクションがクライアント１３と比較して追加されている。また、クライアント１３はクライアント１２と比較して簡単なプリフェッチ機構の実装に置き換えられている。
【０１７２】
【表２】
0003687587.tif 000003
【０１７３】
【表３】
0003687587.tif 000004
【０１７４】
以下に、これらのアクションの動作について説明する。
【０１７５】
ＧｅｔＣａｃｈｅＡｃｔｉｏｎ：
ＧｅｔＣａｃｈｅＡｃｔｉｏｎアクションでは、まず、キャッシュ・オブジェクトに引数で指定されたフレーズＩＤを指定してＧｅｔメッセージを発行する。アノテーションが保存されていて、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）がｎｏｔｈｉｎｇならば、フレーズＩＤに対応するフレーズ・テーブル・エントリの アノテーション状態をｒｅｑｕｅｓｔｅｄに設定し、次いで、アノテーションとフレーズＩＤを指定して、ダウンローダにＥｖａｌメッセージを発行する。また、フレーズが保存されていて、フレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）がｎｏｔｈｉｎｇならば、フレーズＩＤに対応するフレーズ・テーブル・エントリのフレーズ状態をｒｅｑｕｅｓｔｅｄに設定し、次いで、フレーズとフレーズＩＤを指定して、ダウンローダにＥｖａｌメッセージを発行する。
【０１７６】
ＲｅｆｅｒＡｃｔｉｏｎ：
ＲｅｆｅｒＡｃｔｉｏｎアクションでは、まず、引数で指定されたフレーズＩＤに対応するフレーズ・テーブルのエントリを調べる。そして、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）又はフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）のどちらかがｎｏｔｈｉｎｇであった場合は、ダウンローダのＣａｎｃｅｌＤｏｗｎｌｏａｄメソッドを呼び出す。そして、フレーズ・テーブルのエントリの参照時刻（ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ）に引数で指定された優先順位又は参照時刻を示す値を設定する。アノテーション状態がｎｏｔｈｉｎｇであった場合は、引数で指定された 優先順位又は参照時刻とアノテーション・タイプ、フレーズＩＤを指定して、ダウンローダにＤｏｗｎｌｏａｄメッセージを発行する。
【０１７７】
ＮｕｌｌＡｃｔｉｏｎ：
ＮｕｌｌＡｃｔｉｏｎアクションが呼び出されたときには何もしない。
【０１７８】
ＩｎｉｔｉａｌＡｃｔｉｏｎ：
ＩｎｉｔｉａｌＡｃｔｉｏｎアクションでは、引数で指定されたアノテーションを使い、フレーズ・テーブルを作成するとともに、フレーズ・マップを作成する。
【０１７９】
ＧｅｔＬｉｓｔＣａｃｈｅＡｃｔｉｏｎ：
ＧｅｔＬｉｓｔＣａｃｈｅＡｃｔｉｏｎアクションでは、まず、引数で指定されたアノテーションの参照フレーズ（ＲｅｆｅｒｅｎｃｅＰｈｒａｓｅ）に含まれる複数のフレーズＩＤのリストを得る。そして、得られたリストの各フレーズＩＤに対応するフレーズ・テーブルのエントリを調べて、フレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）がｎｏｔｈｉｎｇ以外のフレーズＩＤをリストから取り除く。そして、リストにあるすべてのフレーズに対して以下を行う。
【０１８０】
（ａ）引数で指定されたフレーズＩＤ に対応するフレーズ・テーブルの参照時刻（ｒｅｆｅｒｅｎｃｅ ｔｉｍｅ）の値と各参照フレーズ（ｒｅｆｅｒｅｎｃｅ ｐｈｒａｓｅ）の参照位置（ｒｅｆｅｒｅｎｃｅ ｐｏｓｉｔｉｏｎ）を使って、各参照フレーズの参照時刻を計算し、それを対応するフレーズ・テーブルのエントリに設定する。
（ｂ）フレーズＩＤを指定して、ＧｅｔＣａｃｈｅＡｃｔｉｏｎ（前述）を実行する。
【０１８１】
ＰｒｅｆｅｔｃｈＡｃｔｉｏｎ：
ＰｒｅｆｅｔｃｈＡｃｔｉｏｎでは、まず、引数で指定されたアノテーションのフレーズ・サイズ（ｐｈｒａｓｅ_ｓｉｚｅ）と現帯域幅（ＣｕｒｒｅｎｔＢａｎｄｗｉｄｔｈ）の値を使って、フレーズのダウンロード時間（ｄｏｗｎｌｏａｄ_ｔｉｍｅ）を以下の式で計算する。
【０１８２】
【数１】
download_time ＝ phrase_size × CurrentBandwidht
【０１８３】
次いで、引数で指定されたフレーズＩＤに対応するフレーズ・テーブルの参照時刻（ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ）の値を使い、開始時刻（ｓｔａｒｔ_ｔｉｍｅ）を以下の式で計算する。
【０１８４】
【数２】
start_time ＝ reference_time − download_time
【０１８５】
ＣｕｒｒｅｎｔＴｉｍｅ≧ｓｔａｒｔ_ｔｉｍｅ（すなわち現在時刻が開始時刻を経過している）であれば、優先順位ｌｏｗと、フレーズ・タイプ、フレーズＩＤ、開始時刻を指定して、ダウンローダにＤｏｗｎｌｏａｄメッセージを発行する。そうでなければ、実行環境（ＥｘｅｃＳｐａｃｅ）に開始時刻とダウンローダのＤｏｗｍｌｏａｄをエントリとして指定して、ＳｅｔＴｉｍｅＥｖｅｎｔメッセージを送る。Ｄｏｗｎｌｏａｄへの引数としては、フレーズＩＤと、フレーズ・タイプと、優先順位ｌｏｗと、開始時刻が指定されるようにする。
【０１８６】
次いで、引数で指定されたアノテーションの参照フレーズ（ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅ）に含まれる複数のフレーズＩＤのリストを得る。得られたリストの各フレーズＩＤに対応するフレーズ・テーブルのエントリを調べて、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）がｎｏｔｈｉｎｇ以外のフレーズＩＤをリストから取り除く。 そして、リストにあるすべてのフレーズＩＤに対して以下の処理を行う。
【０１８７】
（ａ）引数で指定されたフレーズＩＤに対応するフレーズ・テーブル・エントリの参照時刻（ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ）の値と各参照フレーズ（ｒｅｆｅｒｅｎｃｅ ｐｈｒａｓｅ）の参照位置（ｒｅｆｅｒｅｎｃｅ ｐｏｓｉｔｉｏｎ）と現実行速度（ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄ）を使って 、式ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ＋ｒｅｆｅｒｅｎｃｅ_ｐｏｓｉｔｉｏｎ×ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄにより各参照フレーズの参照時刻を計算して、それを対応するフレーズ・テーブル のエントリに設定する。
（ｂ）優先順位ｌｏｗとアノテーション・タイプ、フレーズＩＤ、参照時刻を指定して、ダウンローダにＤｏｗｎｌｏａｄメッセージを発行する。
【０１８８】
ＳｉｍｐｌｅＰｒｅｆｅｔｃｈＡｃｔｉｏｎ：
ＳｉｍｐｌｅＰｒｅｆｅｔｃｈＡｃｔｉｏｎでは、まず、引数で指定されたフレーズＩＤを、優先順位ｌｏｗと、フレーズ・タイプと、フレーズＩＤと、開始時刻を指定して、ダウンローダにＤｏｗｎｌｏａｄメッセージを発行する。次いで、引数で指定されたアノテーションの参照フレーズ（ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅ）に含まれる複数のフレーズＩＤのリストを得る。そして、得られたリストの各フレーズＩＤに対応するフレーズ・テーブルのエントリを調べて、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）がｎｏｔｈｉｎｇ以外のフレーズＩＤをリストから取り除く。そして、リストにあるすべてのフレーズＩＤに対して以下の処理を行う。
【０１８９】
（ａ）引数で指定されたフレーズＩＤに対応するフレーズ・テーブルの参照時刻（ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ）の値と各参照フレーズ（ｒｅｆｅｒｅｎｃｅ ｐｈｒａｓｅ）の参照位置（ｒｅｆｅｒｅｎｃｅ ｐｏｓｉｔｉｏｎ）と現実行速度（ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄ）を使って、式ｒｅｆｅｒｅｎｃｅ_ｔｉｍｅ＋ｒｅｆｅｒｅｎｃｅ_ｐｏｓｉｔｉｏｎ×ＣｕｒｒｅｎｔＥｘｅｃＳｐｅｅｄにより、各参照フレーズの参照時刻を計算し、それらをフレーズ・テーブル中の対応するエントリにそれぞれ設定する。
（ｂ）優先順位ｌｏｗとアノテーション・タイプ、フレーズＩＤ、参照時刻を指定して、ダウンローダにＤｏｗｎｌｏａｄメッセージを発行する。
【０１９０】
ＳｔｏｒｅＣａｃｈｅＡｃｔｉｏｎ：
ＳｔｏｒｅＣａｃｈｅＡｃｔｉｏｎでは、引数で指定されたアノテーションを基に、フレーズをキャッシュ・メモリに保存するかを判断する。保存する場合は、キャッシュ・オブジェクトにフレーズＩＤとアノテーション又はフレーズを指定して、Ｐｕｔメッセージ（Ｐｕｔ）を発行する。
【０１９１】
ＥｘｐａｎｄＡｃｔｉｏｎ：
ＥｘｐａｎｄＡｃｔｉｏｎでは、引数で指定されたアノテーションで指定される伸張方式やパラメータを利用して、引数で指定されたフレーズの伸張を行い、伸張したフレーズを返す。
【０１９２】
ＭａｐＡｃｔｉｏｎ：
ＭａｐＡｃｔｉｏｎでは、引数で指定されたアノテーションの情報を基に、実行環境（ＥｘｅｃＳｐａｃｅ）にＭａｐメッセージを発行する。このとき、引数で指定されたフレーズＩＤに対応するフレーズ・テーブル・エントリにＩＤが設定されていれば、このＩＤをＭａｐメッセージに付加する。そして、引数で指定されたフレーズＩＤに対応するフレーズ・テーブル・エントリにこのＩＤが設定されていれば、現在時刻（ＣｕｒｒｅｎｔＴｉｍｅ）を設定する。
【０１９３】
次いで、本実施形態に係るクライアント〜サーバ間におけるプログラム起動のための動作について説明する。
【０１９４】
起動シナリオ１：
まず、キャッシュと圧縮展開機能を持つクライアント１２のプログラム起動のシナリオを説明する。図１１には、クライアント１２の実行環境（ＥｘｅｃＳｐａｃｅ）１２−４がプログラムの起動要求を発行したときの処理の流れを示している。
【０１９５】
実行環境１２−４は、ユーザからのプログラム起動要求を受け取ると、プログラム名とそれを実行するスレッドＩＤを指定して、ダウンローダ１２−３にＲｅｆｅｒメッセージを発行する。
【０１９６】
ダウンローダ１２−３は、プログラム名とプログラムの実行の最初を示すフレーズＩＤを指定して、ダウンローダ１２−３のＥｖａｌを呼び出す。
【０１９７】
Ｅｖａｌの実行により、アノテーション状態及びフレーズ状態がいずれもｏｔｈｅｒであることから、セマンティクス１２−５のＲｅｆｅｒＥｎｔｒｙアクションが呼び出される（表１を参照のこと）。これにより、まずＧｅｔＣａｃｈｅＡｃｔｉｏｎが呼び出される（表２を参照のこと）。
【０１９８】
ＧｅｔＣａｃｈｅＡｃｔｉｏｎでは、フレーズＩＤを指定して、キャッシュ・オブジェクトに対してＧｅｔメッセージを送る。これにより、キャッシュにアノテーション又はフレーズが保存されていれば（キャッシュ・ヒット）、それが取り出される。保存されていない場合には（キャッシュ・ミス）、ＰｈｒａｓｅＭａｐが更新されないため、次にＲｅｆｅｒＡｃｔｉｏｎが実行される（［表２を参照のこと）。
【０１９９】
ＲｅｆｅｒＡｃｔｉｏｎでは、ダウンローダ１２−３のＣａｎｃｅｌＤｏｗｎｌｏａｄを呼び出して、それまでのＰｒｅｆｅｔｃｈアクションをキャンセルする。図１１に示す起動シナリオでは、プログラムの初めての起動なので、キャンセルするものはない。
【０２００】
次に、優先順位をｈｉｇｈに指定して、ダウンローダ１２−３に対してアノテーションのＤｏｗｎｌｏａｄメッセージを発行する。
【０２０１】
ダウンローダ１２−３は、Ｄｏｗｎｌｏａｄメッセージを受け取ると、それをリクエスト・キューに入れて、次に先頭の要素を取り出しこれをＦｅｔｃｈメッセージとしてサーバ１１に発行する。図１１に示すシナリオでは、先にキューに入れられた要求がそのままサーバ１１に要求される。このとき、クライアント１２の情報も引数として渡される。この例ではクライアント１２が圧縮展開機能を持つこととその種類が引数として指定される。
【０２０２】
サーバ１１は、Ｆｅｔｃｈメッセージを受け取ると、指定されたプログラムの指定されたフレーズＩＤを検索する。このとき、圧縮展開機能があることが指定されている場合には、圧縮されたフレーズが存在するかを検索し、あればそれを選択する。なければ非圧縮のフレーズを選択する。図１１に示す起動シナリオではアノテーションが要求されているので、サーバ１１は対応するアノテーションをＥｖａｌメッセージとしてダウンローダ１２−３に発行する。
【０２０３】
ダウンローダ１２−３は、Ｅｖａｌメッセージを受け取ると、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）とフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）がそれぞれｌｏａｄｅｄ並びにｏｔｈｅｒであることを基に、 ＡｎｎｏｔａｔｉｏｎＬｏａｄｅｄＥｎｔｒｙにあるアクションを、アノテーションの持つ型に応じて順に実行する（表１及び表２を参照のこと）。図１１に示す起動シナリオでは アノテーションはＩｎｖｏｋｅ，Ｒｅｆｅｒ，Ｃｏｍｐｒｅｓｓｅｄ，Ｍａｐという４つの型のアノテーション が得られるが、ＡｎｎｏｔａｔｉｏｎＬｏａｄｅｄＥｎｔｒｙにはＩｎｖｏｋｅとＲｅｆｅｒに対応するアクションが３つあるので（表２を参照のこと）、これらが順に呼ばれる。
【０２０４】
まず、ＩｎｉｔｉａｌＡｃｔｉｏｎにより、Ｉｎｖｏｋｅ型のアノテーションを用いてダウンローダ１２−３内にフレーズ・テーブルとフレーズ・マップが構成される。
【０２０５】
次に、Ｒｅｆｅｒ型のアノテーションを用いて、ＧｅｔＣａｃｈｅＬｉｓｔＡｃｔｉｏｎが実行され、キャッシュ・オブジェクト１２−１内に保存されているフレーズがあれば、それがダウンローダ１２−３に対してＥｖａｌメッセージとして送られる。
【０２０６】
最後に、再びＲｅｆｅｒ型のアノテーションを用いてＰｒｅｆｅｔｃｈＡｃｔｉｏｎが実行される。ＰｒｅｆｅｔｃｈＡｃｔｉｏｎでは、まずアノテーションに対応するフレーズをいつダウンロード開始すれば参照に間に合うかが計算され、それを現在の時刻と比較が行われる。ダウンロード開始時刻を過ぎていれば、すぐにダウンローダ１２−３にＤｏｗｎｌｏａｄメッセージを送ることでプリフェッチ要求を行う。まだダウロード開始時刻を過ぎていなければ、ＳｅｔＴｉｍｅＥｖｅｎｔメッセージを用いてダウンロード開始時刻にダウンローダ２−３のＤｏｗｎｌｏａｄメッセージが呼ばれるように設定する。図１１に示す起動シナリオでは、すでにダウンロード開始時刻が過ぎているとして、ダウンローダ１２−３にＤｏｗｎｌｏａｄメッセージが送られる。
【０２０７】
次に、アノテーションの参照フレーズ（ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅ）の項を検査して、参照が発生するフレーズのアノテーションのプリフェッチ要求を生成して、これもダウンローダ１２−３のＤｏｗｎｌｏａｄメッセージとして送る。
【０２０８】
このようにダウンロード開始時刻に応じて自動的にフレーズのプリフェッチを行うことにより、プログラム実行とダウンロードの並行性やダウンロード速度の高速化を実現することができる。
【０２０９】
ダウンローダ１２−３は、Ｄｏｗｎｌｏａｄメッセージを受け取ると、それをリクエスト・キューに入れ、次に先頭の要素を取り出してこれをＦｅｔｃｈメッセージとしてサーバ１１に発行する。図１１に示す起動シナリオでは、先にキューに入れられた要求がそのままサーバ１１に要求される。このとき、クライアント１２の情報も引数として渡される。この例では、クライアント１２が圧縮展開機能を持つこととその種類が引数として指定される。
【０２１０】
サーバ１１は、Ｆｅｔｃｈメッセージを受け取ると、指定されたプログラムの指定されたフレーズＩＤを検索する。このとき、圧縮展開機能があることが指定されている場合には、圧縮されたフレーズが存在するかを検索して、あればそれを選択する。なければ非圧縮のフレーズを選択する。ここでは、フレーズが要求されているので、サーバ１１は、圧縮されたフレーズをＥｖａｌメッセージとして ダウンローダ１２−３に発行する。
【０２１１】
ダウンローダ１２−３は、Ｅｖａｌメッセージを受け取ると、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）とフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）がいずれもｌｏａｄｅｄであることを基に、ＬｏａｄＣｏｍｐｌｅｔｅＥｎｔｒｙにあるアクションをアノテーションの持つ型に応じて順に実行する（表１及び表２を参照のこと）。図１１に示す起動シナリオでは、アノテーションは、Ｉｎｖｏｋｅ，Ｒｅｆｅｒ，Ｃｏｍｐｒｅｓｓｅｄ，Ｍａｐという４つの型のアノテーションがすでに得られているが、ＬｏａｄＣｏｍｐｌｅｔｅＥｎｔｒｙにはＲｅｆｅｒ，Ｃｏｍｐｒｅｓｓｅｄ，Ｍａｐのそれぞれに対応するアクションが３つあるので、これらが順に呼ばれる。（表２を参照のこと）
【０２１２】
まず、Ｒｅｆｅｒ型のアノテーションを用いて、ＳｔｏｒｅＣａｃｈｅＡｃｔｉｏｎが実行される。ＳｔｏｒｅＣａｃｈｅＡｃｔｉｏｎは、アノテーションのｆｒｅｑｕｅｎｃｙ情報を利用して、フレーズをキャッシュに保存するかどうかを決定する。保存する場合には、キャッシュ・オブジェクト１２−１に対してＰｕｔ メッセージが発行される。
【０２１３】
次に、Ｃｏｍｐｒｅｓｓｅｄ型のアノテーションを用いて、ＥｘｐａｎｄＡｃｔｉｏｎが実行される。ＥｘｐａｎｄＡｃｔｉｏｎはアノテーションの情報を用いて、圧縮伸張器１２−２ にＥｘｐａｎｄメッセージを送り、フレーズの内容を伸張して元の内容に戻してそれを返す。
【０２１４】
最後に、Ｍａｐ型のアノテーションを用いて、ＭａｐＡｃｔｉｏｎが実行される。ＭａｐＡｃｔｉｏｎは、実行環境（ＥｘｅｃＳｐａｃｅ）１２−４がフレーズの利用に必要とする情報をアノテーションから得て、それを実行環境１２−４にＭａｐメッセージとして送ることで、フレーズを実行環境１２−４ 上で動作するプログラムが利用可能にする。また、図１１に示す起動シナリオでは、Ｒｅｆｅｒ時にＩＤが指定されていたため、それも同時にＭａｐメッセージに指定される。実行環境１２−４はこれを使いスレッドをプログラム上で実行を開始させる。
【０２１５】
Ｅｖａｌの実行の最後では、リクエスト・キューにメッセージがありダウンロード・リクエストが可能な場合は、Ｆｅｔｃｈメッセージをサーバ１１に発行する。図１１に示す起動シナリオでは、アノテーションのプリフェッチ・リクエストがリクエスト・キューに入るため、これがサーバ１１に送られて、プリフェッチ処理が行われる。このアノテーションのプリフェッチは、フェッチ済みフレーズの次のフレーズのために、前以って行われるものであり、ダウンロードの高速化と並行性を実現することができる。
【０２１６】
これにより、プログラムのダウンロード実行がプリフェッチとキャッシュ、圧縮を利用して可能となる。
【０２１７】
起動シナリオ２：
次に、キャッシュや圧縮展開機能を持たないクライアント１３におけるプログラム起動のシナリオについて説明する。図１２には、クライアント１３の実行環境（ＥｘｅｃＳｐａｃｅ）１３−２がプログラムの起動要求を発行したときの処理の流れを模式的に示している。
【０２１８】
ユーザからのプログラム起動要求を受け取ると、実行環境１３−２は、プログラム名とそれを実行するスレッドＩＤを指定して、ダウンローダ１３−１にＲｅｆｅｒメッセージを発行する。
【０２１９】
ダウンローダ１３−１は、プログラム名とプログラムの実行の最初を示すフレーズＩＤを指定して、ダウンローダ１３−１のＥｖａｌを呼び出す。
【０２２０】
Ｅｖａｌの実行により、アノテーション状態及びフレーズ状態がいずれもｏｔｈｅｒであることから、セマンティクス１３−３のＲｅｆｅｒＥｎｔｒｙのアクションが呼び出される（表１を参照のこと）。これにより、ＲｅｆｅｒＡｃｔｉｏｎ が実行される（表３を参照のこと）。
【０２２１】
ＲｅｆｅｒＡｃｔｉｏｎでは、ダウンローダ１３−１のＣａｎｃｅｌＤｏｗｎｌｏａｄメソッドを呼び出して、それまでのｐｒｅｆｅｔｃｈアクションをキャンセルする。図１２に示す起動シナリオでは、プログラムの初めての起動なので、キャンセルするものはない。次に、優先順位をｈｉｇｈに指定して、アノテーションのＤｏｗｎｌｏａｄメッセージを発行する。
【０２２２】
ダウンローダ１３−１は、Ｄｏｗｎｌｏａｄメッセージを受け取ると、それをリクエスト・キューに入れ、次に先頭の要素を取り出して、これをＦｅｔｃｈメッセージとしてサーバ・オブジェクト１１に発行する。
【０２２３】
図１２に示す起動シナリオでは、先にキューに入れられた要求がそのままサーバ・オブジェクト１１に要求される。このとき、クライアント１３の情報も引数として渡される。この実施形態では、クライアント１３が圧縮展開機能を持たないことが引数として指定される。
【０２２４】
サーバ・オブジェクト１１は、Ｆｅｔｃｈメッセージを受け取ると、指定されたプログラムの指定されたフレーズＩＤを検索する。このとき、圧縮展開機能があることが指定されている場合には、圧縮されたフレーズが存在するかを検索し、あればそれを選択する。なければ非圧縮のフレーズを選択する。ここではアノテーションが要求されているので、サーバ・オブジェクト１１は、対応するアノテーションをＥｖａｌメッセージとしてダウンローダ１３−１に発行する。
【０２２５】
ダウンローダ１３−１は、Ｅｖａｌメッセージを受け取ると、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）とフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）がそれぞれｌｏａｄｅｄ及びｏｔｈｅｒの各状態であることから 、ＡｎｎｏｔａｔｉｏｎＬｏａｄｅｄＥｎｔｒｙにあるアクションをアノテーションの持つ型に応じて順に実行する（表１を参照のこと）。図１２に示す起動シナリオでは、アノテーションはＩｎｖｏｋｅ，Ｒｅｆｅｒ，Ｍａｐという３つの型のアノテーションが得られるが、ＡｎｎｏｔａｔｉｏｎＬｏａｄｅｄＥｎｔｒｙにはＩｎｖｏｋｅとＲｅｆｅｒに対応するアクションが２つあるので（表３を参照のこと）、これらが順に呼び出される。まずＩｎｉｔｉａｌＡｃｔｉｏｎにより、Ｉｎｖｏｋｅ型のアノテーションを用いて、ダウンローダ３−１内にフレーズ・テーブルとフレーズ・マップが構成される。次に、Ｒｅｆｅｒ型のアノテーションを用いて、ＳｉｍｐｌｅＰｒｅｆｅｔｃｈＡｃｔｉｏｎが実行される。
【０２２６】
ＳｉｍｐｌｅＰｒｅｆｅｔｃｈＡｃｔｉｏｎでは、まず、すぐにダウンローダ１３−１にＤｏｗｎｌｏａｄメッセージを送ることで、アノテーションに対応するフレーズのプリフェッチ要求を行う。次に、アノテーションの参照フレーズ（ｒｅｆｅｒｅｎｃｅ_ｐｈｒａｓｅ）の項を検査して、参照が発生するフレーズのアノテーションのプリフェッチ要求を生成して、これもダウンローダ１３−１のＤｏｗｎｌｏａｄメッセージとして送る。
【０２２７】
ダウンローダ１３−１は、Ｄｏｗｎｌｏａｄメッセージを受け取ると、それをリクエスト・キューに入れ、次に先頭の要素を取り出しこれをＦｅｔｃｈメッセージとしてサーバ・オブジェクト１１に発行する。図１２に示す起動シナリオでは、先にキューに入れられた要求がそのままサーバ・オブジェクト１１に要求される。このとき、クライアントの情報も引数として渡される。ここでは、クライアント１３が圧縮展開機能を持たないことが引数として指定される。
【０２２８】
サーバ・オブジェクト１１はＦｅｔｃｈメッセージを受け取ると、指定されたプログラムの指定されたフレーズＩＤを検索する。このとき、圧縮展開機能があることが指定されている場合には、圧縮されたフレーズが存在するかを検索し、あればそれを選択する。なければ非圧縮のフレーズを選択する。ここではフレーズが要求されているので、サーバ・オブジェクト１１は、非圧縮のフレーズをＥｖａｌメッセージとしてダウンローダ１３−１に発行する。
【０２２９】
ダウンローダ１３−１は、Ｅｖａｌメッセージを受け取ると、アノテーション状態（ａｎｎｏｔａｔｉｏｎ_ｓｔａｔｕｓ）とフレーズ状態（ｐｈｒａｓｅ_ｓｔａｔｕｓ）がいずれもｌｏａｄｅｄの状態であることから、ＬｏａｄＣｏｍｐｌｅｔｅＥｎｔｒｙにあるアクションをアノテーションの持つ型に応じて順に実行する（表１を参照のこと）。図１２に示す起動シナリオでは、アノテーションはＩｎｖｏｋｅ，Ｒｅｆｅｒ，Ｍａｐという３つの型のアノテーションがすでに得られているが、ＬｏａｄＣｏｍｐｌｅｔｅＥｎｔｒｙにはＭａｐに対応するアクションが１つあるのみである。Ｍａｐ型のアノテーションを用いて、ＭａｐＡｃｔｉｏｎが実行される（表３を参照のこと）。
【０２３０】
ＭａｐＡｃｔｉｏｎは、実行環境（ＥｘｅｃＳｐａｃｅ）１３−２がフレーズの利用に必要とする情報をアノテーションから得て、それを実行環境１３−２にＭａｐメッセージとして送ることで、フレーズを実行環境１３−２上で動作するプログラムが利用可能にする。また、図１２に示す起動シナリオでは、Ｒｅｆｅｒ時にＩＤが指定されていたため、それも同時にＭａｐメッセージに指定される。実行環境１３−２は、これを使いスレッドをプログラム上で実行を開始させる。
【０２３１】
Ｅｖａｌの実行の最後では、リクエスト・キューにメッセージがありダウンロード・リクエストが可能な場合は、サーバ・オブジェクト１１にＦｅｔｃｈメッセージを発行する。図１２に示す起動シナリオでは、アノテーションのプリフェッチ・リクエストがリクエスト・キューに入るため、これがサーバ・オブジェクト１１に送られプリフェッチ処理が行われる。
【０２３２】
これにより、プログラムのダウンロード実行が簡単なプリフェッチを利用して可能となる。
【０２３３】
［追補］
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０２３４】
【発明の効果】
以上詳記したように、本発明によれば、クライアント機器の能力や機能、モジュール管理装置とクライアント機器間の転送速度の多様性に柔軟に対応して、ダウンロード実行遅延を改善することができる、優れたデータ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びに記憶媒体を提供することができる。
【０２３５】
また、本発明によれば、クライアント機器の能力や機能、ネットワークの転送速度の多様性に柔軟に対応し、ダウンロード実行遅延を改善することができる、優れたデータ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びに記憶媒体を提供することができる。
【０２３６】
本発明によれば、プログラムをフレーズ（ｐｈｒａｓｅ）により構成させることで、プログラムの実行に不要な部分を分類可能とし、実行に必要なプログラム部分のみのダウンロードを可能とする。さらにフレーズにアノテーション（ａｎｎｏｔａｔｉｏｎ）を対応させることで、同じプログラムに対してクライアント機器のさまざまな構成に応じてそれぞれに最適な形で、プリフェッチ、キャッシュといった異なる複数の手法の利用を柔軟に組み合わせた、ダウンロード実行の高速化を行うことができる。
【０２３７】
また、本発明によれば、サーバ側では、プログラムを実行時の参照関係やダウンロード効率を考慮して、元のプログラムをフレーズに分類再構成をし直すようにした。そして、各フレーズにそのフレーズの特性を示す情報としてアノテーションを対応させるようにした。また、クライアント側では、アノテーションの情報を利用して、そのクライアント機器に適したプリフェッチ手法、キャッシュ、圧縮などの手法を柔軟に組み合わせることで、ダウンロード実行の速度を向上させることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るデータ処理システムの構成を模式的に示した図である。
【図２】ＤＶＤ１により記録されるプログラムを拡大して示した図である。
【図３】アノテーションの構成例を模式的に示した図である。
【図４】図１に示したクライアント２の構成をより詳細に示した図である。
【図５】実行環境２−１がプログラムの起動要求を発行したときの処理の流れを示したシーケンス図である。
【図６】本発明の第２の実施形態に係るデータ処理が実現されるコンピュータ・ネットワーク構成例を模式的に示した図である。
【図７】サーバ１１により保持されるプログラムの構成を模式的に示した図である。
【図８】アノテーションの構成例を模式的に示した図である。
【図９】図６で示したクライアント１２の機能構成を模式的に示したブロック図である。
【図１０】図６で示したクライアント１３の機能構成を模式的に示したブロック図である。
【図１１】クライアント１２の実行環境（ＥｘｅｃＳｐａｃｅ）１２−４がプログラムの起動要求を発行したときの処理の流れを示した図である。
【図１２】クライアント１３の実行環境（ＥｘｅｃＳｐａｃｅ）１３−２がプログラムの起動要求を発行したときの処理の流れを示した図である。
【符号の説明】
１…ＤＶＤ
２…クライアント
２−１…実行環境
２−２…ダウンローダ
２−３…キャッシュ
３…システム・バス
４…キャッシュ・メモリ
５…プログラム
５−１…フレーズ
５−２…アノテーション
１１…サーバ
１２，１３…クライアント
１２−１…キャッシュ・オブジェクト
１２−２…圧縮伸張器
１２−３…ダウンローダ
１２−４…実行環境
１２−５…セマンティクス
１３…クライアント
１３−１…ダウンローダ
１３−２…実行環境
１３−３…セマンティクス
【図１】
0003687587.tif 000005
【図２】
0003687587.tif 000006
【図３】
0003687587.tif 000007
【図４】
0003687587.tif 000008
【図５】
0003687587.tif 000009
【図６】
0003687587.tif 000010
【図７】
0003687587.tif 000011
【図８】
0003687587.tif 000012
【図９】
0003687587.tif 000013
【図１０】
0003687587.tif 000014
【図１１】
0003687587.tif 000015
【図１２】
0003687587.tif 000016