(57)【特許請求の範囲】
【請求項１】
ネットワークへの接続を有することができるコンピュータ環境において、クライアント・マシン上においてランタイム環境で実行されるアプリケーションを導入するためのシステムにおいて、
前記クライアント・マシン上の実行要求に応答して、導入されるべき前記アプリケーションの属性ファイルを自動的に検索する手段であって、前記属性ファイルが、（１）前記アプリケーションを記述し、（２）前記アプリケーションを実行するために要求される、０以上の実行可能な拡張機能を特定し、及び（３）前記アプリケーションを実行するために要求されるランタイム環境を特定する、手段と、
前記属性ファイルを使用して前記クライアント・マシン上に前記アプリケーションを導入する手段と、
前記アプリケーションの１又はそれ以上の依存を前記クライアント・マシンによって自動的に導入するために、前記アプリケーションを実行するために要求される前記拡張機能及び前記アプリケーションを実行するために要求されるランタイム環境のための各環境変数をセットする手段と、
を含み、前記セットする手段が、
前記属性ファイルを構文解析して、前記依存を探し当てる手段と、
前記クライアント・マシン上にまだ導入されていない前記探し当てた依存の各々について、（１）前記探し当てた依存のための属性ファイルを検索し、（２）前記探し当てた依存を導入し、及び（３）前記探し当てた依存の前記検索された属性ファイルを構文解析するときに識別された何らかの依存を導入することを自動的に繰り返す手段であって、ただし前記識別された依存は前記クライアント・マシンにまだ導入されていない、前記繰り返す手段と
をさらに含む、前記システム。
【請求項２】
前記アプリケーションの前記属性ファイルを更新する手段をさらに含み、前記自動的に検索すること及び前記セットすることが前記更新された属性ファイルを使用する、請求項１に記載のシステム。
【請求項３】
前記セットする手段が、前記少なくとも一つの依存について、前記少なくとも１つの依存がそこから導入されるところの位置を動的に決定する手段をさらに含む、請求項１に記載のシステム。
【請求項４】
前記クライアント・マシン上にレジストリ・ファイルを作成する手段であって、前記作成されたレジストリ・ファイルは前記属性ファイルに対応するエントリを含み、前記エントリは前記クライアント・マシンに適合されている、前記作成する手段と、
前記作成されたレジストリ・ファイルを用いて、前記クライアント・マシン上に前記アプリケーションの前記ランタイム環境を構築する手段と
をさらに含む、請求項１に記載のシステム。
【請求項５】
前記クライアント・マシン上で、選択された前記アプリケーションを実行するための要求を受信する手段と、
前記選択された前記アプリケーションに対応するレジストリ・ファイルを用いて、前記選択された前記アプリケーションのための適切なランタイム環境を構築する手段と、
前記構築された環境において、前記選択された前記アプリケーションの実行を開始する手段と
をさらに含む、請求項４に記載のシステム。
【請求項６】
前記構築する手段が、
前記対応するレジストリ・ファイルを読出して、前記アプリケーションの現在の依存を決定する手段であって、前記現在の依存は、前記アプリケーションの現在要求される拡張機能及び現在のランタイム環境を含む、前記決定する手段と、
前記現在のランタイム環境のために、適切な環境変数をセットする手段と、
前記現在要求される拡張機能のために、適切な環境変数をセットする手段と
をさらに含む、請求項５に記載のシステム。
【請求項７】
前記対応するレジストリ・ファイルにおいて特定された値を用いて、前記選択された前記アプリケーションの１つ以上のパラメータをセットする手段をさらに含む、請求項６に記載のシステム。
【請求項８】
前記レジストリ・ファイル内の前記パラメータを更新する手段をさらに含む、請求項７に記載のシステム。
【請求項９】
前記レジストリ・ファイル内の前記現在のランタイム環境を更新する手段と、
前記レジストリ・ファイル内の前記現在要求される拡張機能を更新する手段と
をさらに含む、請求項４に記載のシステム。
【請求項１０】
ネットワークへの接続を有することができるコンピュータ環境において、クライアント・マシン上においてランタイム環境で実行されるアプリケーションを導入する方法において、
前記クライアント・マシン上の実行要求に応答して、導入されるべき前記アプリケーションの属性ファイルを自動的に検索するステップであって、前記属性ファイルが、（１）前記アプリケーションを記述し、（２）前記アプリケーションを実行するために要求される、０以上の実行可能な拡張機能を特定し、及び（３）前記アプリケーションを実行するために要求されるランタイム環境を特定する、ステップと、
前記属性ファイルを使用して前記クライアント・マシン上に前記アプリケーションを導入するステップと、
前記アプリケーションの１又はそれ以上の依存を前記クライアント・マシンによって自動的に導入するために、前記アプリケーションを実行するために要求される前記拡張機能及び前記アプリケーションを実行するために要求されるランタイム環境のための各環境変数をセットするステップと、
を含み、前記セットするステップが、
前記属性ファイルを構文解析して、前記依存を探し当てるステップと、
前記クライアント・マシン上にまだ導入されていない前記探し当てた依存の各々について、（１）前記探し当てた依存のための属性ファイルを検索し、（２）前記探し当てた依存を導入し、及び（３）前記探し当てた依存の前記検索された属性ファイルを構文解析するときに識別された何らかの依存を導入することを自動的に繰り返すステップであって、ただし前記識別された依存は前記クライアント・マシンにまだ導入されていない、前記繰り返すステップと
をさらに含む、前記方法。
【請求項１１】
前記アプリケーションの前記属性ファイルを更新するステップをさらに含み、前記自動的に検索するステップ及び前記自動的に導入するステップが前記更新された属性ファイルを使用する、請求項１０に記載の方法。
【請求項１２】
前記セットするステップが、前記少なくとも一つの依存について、前記少なくとも１つの依存がそこから導入されるところの位置を動的に決定するステップをさらに含む、請求項１０に記載の方法。
【請求項１３】
前記クライアント・マシン上にレジストリ・ファイルを作成するステップであって、前記作成されたレジストリ・ファイルは前記属性ファイルに対応するエントリを含み、前記エントリは前記クライアント・マシンに適合されている、前記作成するステップと、
前記作成されたレジストリ・ファイルを用いて、前記クライアント・マシン上に前記アプリケーションの前記ランタイム環境を構築するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１４】
前記クライアント・マシン上で、選択された前記アプリケーションを実行するための要求を受信するステップと、
前記選択された前記アプリケーションに対応するレジストリ・ファイルを用いて、前記選択された前記アプリケーションのための適切なランタイム環境を構築するステップと、
前記構築された環境において、前記選択された前記アプリケーションの実行を開始するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１５】
前記構築するステップが、
前記対応するレジストリ・ファイルを読出して、前記アプリケーションの現在の依存を決定するステップであって、前記現在の依存は、前記アプリケーションの現在要求される拡張機能及び現在のランタイム環境を含む、前記決定するステップと、
前記現在のランタイム環境のために、適切な環境変数をセットするステップと、
前記現在要求される拡張機能のために、適切な環境変数をセットするステップと
をさらに含む、請求項１４に記載の方法。
【請求項１６】
前記対応するレジストリ・ファイルにおいて特定された値を用いて、前記選択された前記アプリケーションの１つ以上のパラメータをセットするステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記レジストリ・ファイル内の前記パラメータを更新するステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記レジストリ・ファイル内の前記現在のランタイム環境を更新するステップと、
前記レジストリ・ファイル内の前記現在要求される拡張機能を更新するステップと
をさらに含む、請求項１３に記載の方法。
【請求項１９】
ネットワークへの接続を有することができるコンピュータ環境において、クライアント・マシン上においてランタイム環境で実行されるアプリケーションを導入するためのコードを記録したコンピュータ読み取り可能な記録媒体であって、前記コードは、前記環境内のコンピュータ・システムにより読み取り可能であり、
前記コードは、前記クライアント・マシンに、請求項１０〜１８のいずれか１項に記載の方法の各ステップを実行させるコードを記録した、前記コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ・システムに関して、特に、Ｊａｖａ環境の管理可能性及び有用性を改善する方法、システム及びコンピュータ読取り可能コードに関する。
【０００２】
【従来の技術】
Ｊａｖａは、サン・マイクロシステムズ社により開発されたロバストな移植可能なオブジェクト指向プログラミング言語であり、インターネット及びワールド・ワイド・ウェブ（ＷＷＷ）用のコードを作成するために、現在広く受け入れられつつある。ほとんどのプログラミング言語用のコンパイラは、特定の動作環境のためのコードを生成するが、Ｊａｖａは"write once, run anywhere"パラダイムを用いて、プログラムを作成することを可能にする（"Ｊａｖａ"及び"write once, run anywhere"はサン・マイクロシステムズ社の商標である）。
【０００３】
Ｊａｖａは、特別に設計された仮想マシン（"ＶＭ"）の使用を通じて、その移植性を獲得する。この仮想マシンは、"Ｊａｖａ仮想マシン"または"ＪＶＭ"とも呼ばれる。仮想マシンは、基礎となるハードウェアの詳細を、Ｊａｖａプログラミング命令をコンパイルするために使用されるコンパイラから分離することを可能にする。それらの詳細は仮想マシンの実装により与えられ、それらには例えば、コンパイル済み命令を記憶するのに、リトル・エンディアンまたはビッグ・エンディアン形式のいずれが使用されるか、及び命令が一旦コンパイルされたときの長さなどが含まれる。これらのマシン依存詳細は、コンパイルされたコード内には反映されないので、コードは異なる環境（異なるハードウェア・マシン、異なるオペレーティング・システムなど）に移送され、コードの変更または再コンパイルを要求することなく、その環境内で実行され得る。それ故、"write once, run anywhere"と言われる所以である。コンパイルされたコードはＪａｖａ"バイトコード"と呼ばれ、ＪＶＭ上で実行され、ＪＶＭがその特定の動作環境に個別に適合化される。ＪＶＭのこの適合化の例として、バイトコードがリトル・エンディアン形式を用いて生成され、ビッグ・エンディアンを期待するマイクロプロセッサ上で実行される場合、ＪＶＭは命令をマイクロプロセッサに渡す前に、命令をバイトコードから変換する責任を負う。
【０００４】
Ｊａｖａで作成されたプログラムは、アプリケーション及びアプレットの２つの形式を取る。Ｊａｖａアプレットは、ウェブ・ページを有するユーザのマシンにダウンロードされるように意図されるアプリケーションであり、ウェブ・ページを表示するウェブ・ブラウザ内で実行される。Ｊａｖａは１９９５年に導入されて以来、非常に短期間の間に多くの劇的な変化を経てきた。この進化の間、アプリケーション及びアプレットのそれぞれを使用する場合の、多くの利点及び欠点が露見した。
【０００５】
アプリケーションとアプレットとの違いの１分野は、Ｊａｖａランタイム環境、及びそれに対する変化の影響にある。（ランタイム環境はＪＶＭ、及びＪａｖａアプリケーションまたはアプレットを実行するために要求される多数のファイル及びクラスを含む。以下では、用語"ＪＶＭ"及び"ランタイム環境"は、特に言及されない限り、互換に使用される。）アプレットについては、所与のバージョンのブラウザ内に１レベルのＪＶＭだけが存在する。言語の変化に歩調を合わせるように、ＪＶＭレベルを更新するために、新たなバージョンのブラウザが導入されなければならない。そして、新たなレベルのブラウザがクライアント・マシン上に導入されると、開発者はＪａｖａコードを更新及び保守するために、それを再コンパイル（及び再テスト）して、ブラウザのＪＶＭレベルに適合させなければならない。更に、Ｊａｖａ言語の進化は、場合によっては、Ｊａｖａレベル間で相容れない機能（例えば特定のアプリケーション・プログラミング・インタフェースすなわち"ＡＰＩ"など）を生じる。これはＪａｖａバージョン１．０．２で作成されたアプレットは、Ｊａｖａバージョン１．１では動作するが、ブラウザが次のバージョンＪａｖａ２を採用すると、動作しないことを意味する。アプレットを変更することなく、旧Ｊａｖａバージョンで作成されたアプレットを使用し続けるためには、旧ＪＶＭレベル（及び従って旧ブラウザ）が使用されなければならない。このアプローチは、旧Ｊａｖａバージョンで作成されたアプレットを実行する問題は解決するが、一般にこのブラウザ内での新たなアプレットの展開を可能にしない。なぜなら、展開ツールは一般に、旧レベルでのコードの生成をサポートしないからである。更に、既存のブラウザＪＶＭ内の欠陥が識別されるとき、アプレット開発者はしばしば次善策を作成し、その間にＪＶＭ開発者が問題を解決するのを待機する。一旦応急処置が適用されると、次善策がアプレット内で欠陥を生じ得る。更に、ブラウザの最新のリリースを獲得することは、必ずしもそれがＪＶＭレベルの最新のリリースを提供するとは限らない。なぜなら、ブラウザ内のＪＶＭのレベルは、現在リリースされているＪＶＭレベルよりも、６ヶ月乃至８ヶ月立ち後れる傾向があるからである。このことは、開発ツールキットを用いて作成される開発中のアプレットは、新たなブラウザ内で使用可能な新たなＪＶＭレベルを用いて作成されることを意味し得る。
【０００６】
アプリケーションでは、ランタイム環境の変化は容易に対処できる。なぜなら、ほとんどのＪａｖａアプリケーションは、それら自身のＪａｖａランタイム・レベル、及び要求Ｊａｖａランタイム・レベルを公式に述べないものと一緒にバンドルされて、出荷されるからである。しかしながら、ランタイムをアプリケーションと一緒に出荷することは、同一のＪＶＭレベルの複数のコピーがクライアント上に導入され得ることを意味し、記憶空間の浪費につながる。それに対して、アプリケーションがそのランタイムと一緒にバンドルされない場合、ユーザは正しいＪＶＭレベルが導入され、アプリケーションがそのレベルを使用するようにセットアップされることを確認する責任がある。Ｊａｖａプログラムが実行できるように、ランタイム・レベルを変更し、全てのシステム設定が新たなレベルに対して適切であることを確認することは、エンドユーザが今日の環境において実行するには、困難な課題である。この問題に対する１解決策は、Ｊａｖａプログラムが複数のＪａｖａランタイム・レベルに渡って正しく動作するように、それらを作成することである。しかしながら、これは開発者にとって非常に困難な課題であり、従って、実行可能な解決策ではない。
【０００７】
アプレットのランタイム環境に関する別の問題は、異なるベンダからのブラウザが、特定のＪＶＭレベルを実装する方法の違いである。今日最も一般に使用されるブラウザは、ネットスケープ・ナビゲータ及びインターネット・エクスプローラである。アプレット開発者は一般に、自分のアプリケーションを実行するのに、どちらのブラウザが使用されるかを予測することができないので、良い開発例では、各潜在的なブラウザによるアプレットのテストを要求する。容易に明らかなように、アプレットが複数のブラウザや、各ブラウザ内の複数のＪＶＭレベルなどに対してテストされる場合（或いは、異なるオペレーティング・システム・プラットフォーム上のブラウザのテストなど）、テストのために費やされる時間は大幅に増大する。サン・マイクロシステムズ社は、アプレットをブラウザにより提供されるランタイムの代わりに、サン社により提供されるランタイム環境により実行するためのＪａｖａプラグインを提供することにより、ブラウザ間の違いを解決しようとした（これはまたアプレット実行のために、最新のランタイム・レベルを有効にする方法を提供する）。ＪＶＭレベルが、プラグインによりサポートされるものの中から選択され得る。しかしながら、このアプローチは、ユーザが要求されるＪＶＭレベル、及びその選択の仕方を理解することを要求する。更に、プラグインは依然、ユーザが手動式に異なるレベルを選択するまで、単一のＪＶＭのレベルを提供するので、ＪＶＭレベル間の違いに関連する前述の問題を解決しない。
【０００８】
アプリケーションにとって、ＪＶＭ実装の違いは異なって現れる。通常、オペレーティング・システム・プラットフォームにつき、各ＪＶＭレベルの１つのバージョンだけしか存在しない。開発者にとって、自分のアプリケーションがどのオペレーティング・システム上で実行するかを予測することは、アプレットを実行するために使用されるブラウザを予測することよりも容易である。従って、テスト及びサポート要求は、アプレットに対するよりも、アプリケーションに対する方が遥かに単純である。アプリケーション開発において使用されるＪＶＭレベルと、結果のアプリケーションを実行するために使用されるＪＶＭレベルとの間の同期化は、誤り訂正に関する同期化問題と同様、前述のアプレットの状況に比較して、問題を提供しそうにない。なぜなら、アプリケーションの開発及びランタイム環境の両者は、同一のベンダにより提供されがちであるからである。更に、（例えば前述のように、相容れない機能などの変更により、）アプリケーションを旧ＪＶＭ上で実行することが望まれる場合、これはアプレットの場合よりも、アプリケーションの場合の方が厄介でない。アプリケーションの状況における唯一の要求は、旧ＪＶＭが依然使用可能であることである。
【０００９】
アプリケーションとアプレットとの別の重大な違いは、エンドユーザにとってのそれらの使用の容易性である。Ｊａｖａ対応ブラウザは、ユーザがＪａｖａアプレットを実行するのを非常に容易にし、そこではユーザはその実行のために、ブラウザ上のアプレットを指し示し、ボタンをクリックするだけでよい。ユーザはＪａｖａ言語及びアプレットについてほとんど知る必要はなく、アプレットが呼び出されていることさえ知らなくてもよい。従って、ユーザはＪａｖａアプレットの実行方法を訓練される必要はなく、時間と金を節約できる。それに対して、Ｊａｖａアプリケーションの実行（すなわちブラウザの外部でのＪａｖａプログラムの実行）は、相当に複雑である。Ｊａｖａアプリケーションは、サン・マイクロシステムズ社から提供されるＪＤＫ（Java Development Kit）製品などの、開発ツールキットから実行され得る。或いはアプリケーションは、同様にサン・マイクロシステムズ社から提供される"ＪＲＥ"（Java Runtime Environment）製品（以下"ＪＲＥ"）を用いて実行され得る。ＪＲＥはＪＤＫのサブセットであり、アプリケーションの実行のために要求される機能を提供する。ＪＲＥを使用するとき、プログラムはコマンド・ラインから実行される。アプリケーションをＪＤＫまたはＪＲＥのいずれかにより実行することは、Ｊａｖａ言語及びその環境に関する相当な知識を要求する。例えば、リンクされるライブラリ・パス及びクラス・パス環境変数が正しくセットされなければならず、これらは各異なるアプリケーション・プログラムに対して変化し得る。特定のアプリケーションを実行するために、多数の依存が存在し得る。例えば、アプリケーションが例えば"スイング・ユーザ・インタフェース・コンポーネント"などのＪａｖａ拡張機能を利用する場合、スイング・ライブラリが使用可能でなければならない。拡張機能のためのコードがユーザのマシン上に導入されていない場合、平均的なユーザがコードを探し当て、適切な導入を実行することは困難である（すなわち、クラス・ローダがランタイム時にコードを見い出すために要求される、全ての要求変数をセットすることを含む）。更に、ユーザはプログラムの実行のために、ＪＤＫまたはＪＲＥの操作方法を理解しなければならない。Ｊａｖａ開発者及びシステム管理者は、これらのタイプの情報を容易に理解し得るが、この負荷を単にプログラムを実行したい平均的なエンドユーザに課することは、合理的ではない。
【００１０】
ブラウザ実装の間の違いに関連する幾つかの問題について述べてきた。２つの追加の問題は、セキュリティ機構のサポートの違い、及びアーカイブ形式の違いである。セキュリティ機構は、ブラウザにより提供されるセキュリティＡＰＩを呼び出すことにより、アプレット内で使用される。今日使用される主なブラウザは、異なるセキュリティＡＰＩを有する。このことはアプレット開発者が、ブラウザ間で異なるセキュリティ・コードを作成（及びテスト）することを強要し、アプレット・コードを提供するコストを増加させる。インターネット・エクスプローラ・ブラウザのためのファイルを分配及びアーカイブするために、"ＣＡＢ"（"キャビネット"）ファイル形式が使用される一方、Ｊａｖａアプレット・ファイルを分配及びアーカイブするためには、"ＪＡＲ"（"Ｊａｖａアーカイブ"）ファイル形式が使用される。
【００１１】
従って、現Ｊａｖａ環境におけるこれらの欠点を克服する技術が待望される。理想的には、アプレットの利点及びアプリケーションの利点が結合されて、各々の欠点を回避する環境を提供すべきである。本発明はこれらの問題を解決する新規のアプローチを定義するものであり、容易に使用でき、安価に提供できるプログラムを生成する。
【００１２】
【発明が解決しようとする課題】
本発明の目的は、現Ｊａｖａ環境における欠点を克服する技術を提供することである。
【００１３】
本発明の別の目的は、アプレットの利点及びアプリケーションの利点を結合し、各々の欠点を回避する環境を提供する技術を提供することである。
【００１４】
更に本発明の別の目的は、Ｊａｖａプログラムのために、プログラム毎にランタイム環境間を動的に切り替わる技術を提供することである。
【００１５】
更に本発明の別の目的は、ユーザが容易に異なるランタイム環境間を切り替われるように、この技術を提供することである。
【００１６】
更に本発明の別の目的は、どのランタイム環境が要求されるかを含む、Ｊａｖａアプリケーションの依存を指定する技術を提供することである。
【００１７】
更に本発明の別の目的は、位置情報の静的指定を要求することなく、依存が自動的に探し当てられ、ダウンロードされ、導入されるように、この技術を提供することである。
【００１８】
本発明の他の目的及び利点は、以下の説明及び図面において部分的に述べられ、また部分的に、説明から明らかとなり、或いは本発明の実施により習得されることであろう。
【００１９】
【課題を解決するための手段】
前述の目的を達成するために、またここで広範に述べられる本発明の目的に従い、本発明はネットワークへの接続を有することができるコンピュータ環境において使用される、Ｊａｖａ環境の管理可能性及び有用性を改善する方法、システム及びコンピュータ読取り可能コードを提供する。この技術は、Ｊａｖａアプリケーション、該アプリケーションの実行のために要求される０以上の拡張機能、及び該アプリケーションの実行のために要求されるランタイム環境を記述する、Ｊａｖａアプリケーションの複数の属性を定義するステップと、定義された属性をアプリケーションの識別と共に記憶するステップとを含む。この技術は更に、記憶された属性を用いて、クライアント・マシン上にアプリケーションを導入するステップを含み得る。好適には、アプリケーションの導入は更に、要求される拡張機能及び要求されるランタイム環境を含む、アプリケーションの１つ以上の依存を導入するステップと、アプリケーションのためのＪａｖａアーカイブ・ファイルをクライアント・マシン上に導入するステップとを含む。この依存の導入は更に、属性を構文解析して、依存を探し当てるステップと、依存の各々が既にクライアント・マシン上に導入済みであるか否かを判断するステップと、まだ導入されていない場合、探し当てられた依存を検索して、導入するステップとを含む。任意的に、この技術は更に、１つ以上の依存を導入するオペレーションの前に、アプリケーションのために記憶された属性の最新のバージョンを検索するステップを含み得る。１つ以上の依存の導入は、更に、前記検索及び導入において使用される位置を動的に検索するステップを含み得る。
【００２０】
１態様では、この技術は更に、クライアント・マシン上に、属性に対応するレジストリ・ファイルを作成するステップを含む。この態様では、好適には更に、クライアント・マシン上で選択アプリケーションを実行する要求を受信するステップと、選択アプリケーションのために、対応するレジストリ・ファイルを用いて、適切なランタイム環境を構築するステップと、構築された環境において、選択アプリケーションの実行を開始するステップとを含む。この構築は更に、対応するレジストリ・ファイルを読出し、アプリケーションの現在要求される拡張機能及び現ランタイム環境を含む、アプリケーションの現在の依存を決定するステップと、選択アプリケーションの現在の依存の各々が導入されることを保証するステップと、現ランタイム環境のために、適切な環境変数をセットするステップと、現在要求される拡張機能のために、適切な環境変数をセットするステップとを含む。任意的に、この技術は更に、レジストリ・ファイル内の現ランタイム環境を更新するステップと、レジストリ・ファイル内の現在要求される拡張機能を更新するステップとを含む。更に、この技術は、対応するレジストリ・ファイルを用いて、選択アプリケーションの１つ以上のパラメータをセットするステップと、レジストリ・ファイル内のパラメータを更新するステップとを含み得る。
【００２１】
本発明は添付の図面を参照して述べられ、図面を通じて、同一の参照番号は同一の要素を表す。
【００２２】
【発明の実施の形態】
図１は、本発明が実装され得る代表的なワークステーション・ハードウェア環境を表す。図１の環境は、パーソナル・コンピュータなどの、代表的な単一ユーザ・コンピュータ・ワークステーション１０を構成し、関連周辺装置を含む。ワークステーション１０はマイクロプロセッサ１２及びバス１４を含み、バスは既知の技術に従い、マイクロプロセッサ１２とワークステーション１０のコンポーネントとを接続し、それらの間の通信を可能にするために使用される。ワークステーション１０は通常、ユーザ・インタフェース・アダプタ１６を含み、これはマイクロプロセッサ１２をバス１４を介して、１つ以上のインタフェース装置に接続する。こうしたインタフェース装置には、キーボード１８、マウス２０、更にタッチ感応スクリーン、デジタル化入力パッドなどの他のインタフェース装置２２が含まれる。バス１４はまた、ＬＣＤ画面またはモニタなどの表示装置２４を、表示アダプタ２６を介して、マイクロプロセッサ１２に接続する。バス１４は更に、マイクロプロセッサ１２をメモリ２８、及びハードドライブ、ディスケット・ドライブまたはテープ・ドライブなどの長期記憶装置３０に接続する。
【００２３】
ワークステーション１０は、例えば通信チャネルまたはモデム３２を介して、他のコンピュータまたはコンピュータのネットワークと通信する。或いは、ワークステーション１０は、ＣＤＰＤ（セルラ・デジタル・パケット・データ）カードなどの、無線インタフェース３２を用いて通信する。例えばワークステーション１０は、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）内において、こうした他のコンピュータに関連付けられるか、別のコンピュータとのクライアント／サーバ構成内におけるクライアントである。これらの全ての構成、並びに適切な通信ハードウェア及びソフトウェアは、技術的に既知である。
【００２４】
図２は、本発明が実装され得るデータ処理ネットワーク４０を示す。データ処理ネットワーク４０は、無線ネットワーク４２及びネットワーク４４などの複数の個々のネットワークを含み得、これらはそれぞれ複数の個々のワークステーション１０を含み得る。更に、当業者であればわかるように、複数のホスト・プロセッサに接続される高機能ワークステーションを含み得る、１つ以上のＬＡＮ（図示せず）が含まれ得る。
【００２５】
更に図２を参照すると、ネットワーク４２及び４４が、ゲートウェイ・コンピュータ４６またはアプリケーション・サーバ４７などの（データ・レポジトリ４８をアクセスする）、メインフレーム・コンピュータまたはサーバを含み得る。ゲートウェイ・コンピュータ４６は、各ネットワーク４４へのエントリ・ポイントとして作用する。ゲートウェイ４６は好適には、通信リンク５０ａにより、別のネットワーク４２に接続される。ゲートウェイ４６はまた、通信リンク５０ｂ、５０ｃにより、直接１つ以上のワークステーション１０にも接続され得る。ゲートウェイ・コンピュータ４６は、ＩＢＭから提供されるエンタプライズ・システムズ・アーキテクチャ／３７０、またはエンタプライズ・システムズ・アーキテクチャ／３９０コンピュータなどを用いて実現される。アプリケーションに応じて、アプリケーション・システム／４００（ＡＳ／４００としても知られる）などの、中型のコンピュータが使用されてもよい。（"エンタプライズ・システムズ・アーキテクチャ／３７０"はＩＢＭの商標であり、"エンタプライズ・システムズ・アーキテクチャ／３９０"、"アプリケーション・システム／４００"及び"ＡＳ／４００"は、ＩＢＭの登録商標である。）
【００２６】
ゲートウェイ・コンピュータ４６はまた、記憶装置（データ・レポジトリ４８など）に接続され得る（４９）。更に、ゲートウェイ４６は、直接的または間接的に、１つ以上のワークステーション１０に接続され得る。
【００２７】
当業者であればわかるように、ゲートウェイ・コンピュータ４６はネットワーク４２から大きな地理的距離離れて配置され、同様に、ワークステーション１０はネットワーク４２及び４４から相当な距離離れて配置され得る。例えば、ネットワーク４２はカルフォルニア州に配置され、ゲートウェイ４６はテキサス州に配置され、１つ以上のワークステーション１０はニューヨークに配置される。ワークステーション１０は、伝送制御プロトコル／インターネット・プロトコル（"ＴＣＰ／ＩＰ"）を用いて、セルラ電話、無線周波ネットワーク、衛星ネットワークなどの多数の代替接続媒体を介して、無線ネットワーク４２に接続される。無線ネットワーク４２は好適には、ＴＣＰまたはＵＤＰ（ユーザ・データグラム・プロトコル）などのネットワーク接続５０ａを用いて、ＩＰ、Ｘ．２５、フレーム・リレー、ＩＳＤＮ（統合サービス・デジタル網）、ＰＳＴＮ（公衆回線電話網）などを介して、ゲートウェイ４６に接続される。或いは、ワークステーション１０は、ダイアル接続５０ｂまたは５０ｃにより、ゲートウェイ４６に直接接続され得る。更に、無線ネットワーク４２及びネットワーク４４は、１つ以上の他のネットワーク（図示せず）に、図２に示されるようにアナログ形式により接続され得る。
【００２８】
本発明を実装するソフトウェア・プログラミング・コードは一般に、ワークステーション１０のマイクロプロセッサ１２及びサーバ４７により、ＣＤ−ＲＯＭドライブまたはハードドライブなどの、特定のタイプの長期記憶媒体３０からアクセスされる。ソフトウェア・プログラミング・コードは、ディスケット、ハードドライブまたはＣＤ−ＲＯＭなどの、データ処理システムと共に使用される様々な既知の媒体上に実装され得る。コードはこうした媒体上に分配されるか、あるコンピュータ・システムのメモリまたは記憶装置から、特定のタイプのネットワークを介して、他のコンピュータ・システムのユーザに分配され得る。或いは、プログラミング・コードはメモリ２８内に実装され、バス１４を介して、マイクロプロセッサ１２によりアクセスされ得る。ソフトウェア・プログラミング・コードをメモリまたは物理媒体上に実装したり、ソフトウェア・コードをネットワークを介して分散する技術及び方法は周知であり、ここでは説明を省略する。
【００２９】
本発明のユーザは、有線接続または無線接続を介して、自分のコンピュータをサーバに接続する。有線接続は、ケーブルや電話回線などの物理媒体を使用する接続であり、無線接続は衛星リンク、無線周波、及び赤外波などの媒体を使用する。多くの接続技術がこれらの様々な媒体と共に使用され、それらには、コンピュータのモデムにより、電話回線を介して接続を確立する技術、トークンリングまたはイーサネットなどのＬＡＮカードを使用する技術、セルラ・モデムにより、無線接続を確立する技術などが含まれる。ユーザのコンピュータは、ラップトップ、ハンドヘルドまたはモバイル・コンピュータ、或いは車両搭載装置、デスクトップ・コンピュータまたはメインフレーム・コンピュータなどの、処理能力及び通信能力を有する任意のタイプのコンピュータ・プロセッサである。リモート・サーバも同様に、処理能力及び通信能力を有する異なるタイプのコンピュータの１つである。これらの技術は周知であり、それらの使用を可能にするハードウェア装置及びソフトウェアは、容易に入手可能である。以下では、ユーザのコンピュータを、"ワークステーション"、"装置"または"コンピュータ"と同義語として称することにし、これらの任意の用語または用語"サーバ"の使用は、前述の任意のタイプのコンピュータ装置を指し示すものとする。
【００３０】
好適な実施例では、本発明はコンピュータ・ソフトウェア・プログラムとして実装され得る。ネットワーク接続の可用性が仮定され、これはユーザのワークステーション上のダイナミック・ローディング・ソフトウェアが呼び出されるとき、動作可能でなければならない。好適な実施例では、本発明は１つ以上のモジュール（コード・サブルーチン、またはオブジェクト指向プログラミングでは"オブジェクト"とも呼ばれる）として実装される。クライアント・コンピュータが接続されるサーバは、ウェブ・サーバとして機能しており、そのウェブ・サーバは、インターネットを介して接続されるクライアントからの要求に応答して、サービスを提供する。或いは、サーバはクライアントのワークステーションをそのコンポーネントに含む、企業イントラネットまたはエクストラネット内に存在し得る。本発明は、クライアントとサーバ間でメッセージまたはファイルを送信するために使用される通信プロトコルには無関係に動作するが、ここではこれらのメッセージ・フローについて述べるとき、ＴＣＰ／ＩＰ上で実行するＨＴＴＰ（ハイパテキスト転送プロトコル）プロトコルを例として使用する。
【００３１】
本発明は後述のように、Ｊａｖａ環境における多数の欠点を解決する。本発明はまた、ブラウザを使用することなく、あたかもアプレットがアプリケーションであるかのように実行されることを可能にする（従って、全ての実行可能プログラムが以下では"アプリケーション"と呼ばれる）。このように、アプレットの利点及びアプリケーションの利点が結合される。特に、もはやブラウザを実行環境として使用しないことにより、アプレット・コードをブラウザ内のＪＶＭレベルに同期させることに関連付けられる前述の欠点、ブラウザ毎に呼び出す異なるセキュリティＡＰＩ、及び複数のファイル・アーカイブ形式をサポートする必要性が、回避される。"Java code Outside the Browser By IBM"を表す頭字語"Ｊｏｂｂｉ"が、ここでは本発明の実装を言及するために使用される。Ｊｏｂｂｉ内の各アプリケーションは、それに関連付けられる属性ファイルを有する。現行技術において、アプレット・タグがアプレットの要求を示すのとほとんど同様に、属性ファイル内の情報が、アプリケーションの要求を示すために使用される。この属性情報を用いて、各アプリケーション・プログラムはその依存を指定できる。それらには、アプリケーションが実行される特定のランタイム環境の他に、アプリケーションの実行のために要求される環境設定が含まれる。複数のランタイム環境（すなわちＪＶＭまたはＪＲＥの複数のバージョン）がクライアント・マシン上に存在し得、各ランタイムの単一の（共用可能な）コピーが、それを必要とするアプリケーション・プログラムからアクセス可能である。属性ファイル内の情報を用いて、特定のアプリケーションのために要求されるランタイム環境に動的に切り替わる技術が、ここでは定義される。これは人間ユーザからの入力無しに、またはほとんど無しに、達成される。このように、ランタイム時に旧ＪＶＭレベルが新たなレベルと同様に、容易にアクセス可能であり、最も最近リリースされたブラウザまたはオペレーティング・システム・プラットフォームのランタイム環境内において、単にＪＶＭレベルの移動ターゲットを最新に維持するために、アプリケーションを更新、再コンパイル、及び再テストする必要性から、アプリケーション開発者を解放する。
【００３２】
本発明の好適な実施例について、図３乃至図８を参照して述べることにする。
【００３３】
図３は、本発明の好適な実施例が属性をＪａｖａアプリケーションに関連付け、それらの属性を後の使用のために記憶する技術を示す。本発明により定義される属性情報の形式、及びこの情報を特定のアプリケーションのために使用する例が、それぞれ図４及び図５に示される。
【００３４】
図３に示される属性定義プロセスは、アプリケーション開発者により実行されるスタンドアロン・プロセスであり、好適には、開発者がアプリケーション開発の間に使用する通常のアプリケーション作成プロセスに統合される。ブロック３００は、開発者がこの通常の作成プロセスを実行することを示し、これは既知の技術を使用する。この作成プロセスの出力はブロック３０５に示されるように、Ｊａｖａアーカイブ・ファイルであり、これは"ＪＡＲ"ファイルとしても知られる。本発明はＪＡＲファイル内容を変更しない。ブロック３１０は、本発明の"Ｊｏｂｂｉパッケージャ"が呼び出されることを示す。このパッケージ化ステップは、ブロック３２０及び３２５でより詳細に示される。ブロック３２０で、開発者がアプリケーションの要求に関する自分の知識にもとづき、アプリケーションの適用可能な属性の値を指定する。これらの属性は、図４に関連して以下で詳述するように、アプリケーション依存やランタイム要求などを含む。Ｊｏｂｂｉ ＪＡＲファイルと呼ばれる新たなＪＡＲファイルが、ブロック３２５の結果として生成される。次に、主要フローのブロック３１５で示されるように、このＪｏｂｂｉ ＪＡＲファイルが後の使用のために、アーカイブに記憶される。これは既存のＪＡＲファイルが記憶されるのと同様に行われる。図３に示されるように、ブロック３１５でアーカイブされるＪｏｂｂｉ ＪＡＲファイルは、従来技術に従いアプリケーションのために作成されるＪＡＲファイル（要素３３０として示される）と、Ｊｏｂｂｉ属性情報（要素３３５として示される）とを含む。このアーカイブから、Ｊａｖａ環境においてアプリケーションを動作するために必要となる全ての情報が、使用可能になる。（図３では、既存のアーカイブ・データ３３０及びＪｏｂｂｉ情報３３５の両者が、一緒に記憶されるように示されるが、これは使用され得る１技術に過ぎない。代わりに、Ｊｏｂｂｉ属性がアーカイブ済みのアプリケーション情報に関連付けられる場合、本発明から逸れることなく、これらの２つのタイプの情報が別々に記憶され得る。この関連付けは、例えば、関連Ｊｏｂｂｉ属性ファイルを識別するポインタまたは他の参照を、ＪＡＲファイルに記憶することにより、或いは、逆にＪＡＲファイルを指し示すポインタまたは参照を、Ｊｏｂｂｉ属性ファイルに記憶することにより、達成され得る。）
【００３５】
代替実施例では、本発明の概念から逸れることなく、ブロック３１０、３２０及び３２５に示されるオペレーションが、通常の作成プロセス及びＪＡＲファイル作成のオペレーションから、時間的に分離される。この代替アプローチが使用される場合、ブロック３０５で作成されるＪＡＲファイルは、現行技術として記憶される。アプリケーションのために属性情報が続いて作成されるとき、アプリケーションの記憶済みのＪＡＲファイルが探し当てられ、図３に関連して述べたように、属性情報がそれに関連付けられるか、或いは一緒に記憶される。
【００３６】
図４は、本発明の好適な実施例により考慮される属性情報及びファイル・レイアウト４００を定義する。レイアウト４００は、仮のアプリケーションのための属性情報を示す図５の例４５０に関連して述べられる。このレイアウトにおいて定義される属性情報は、アプリケーションだけでなく、Ｊａｖａランタイム及びＪａｖａ拡張機能をパッケージ化するための標準化された手段を提供する。異なるタイプの情報が、これらのタイプのパッケージ化された内容の各々に関する。９つの異なるタイプの属性値が、レイアウト内に要素４０５、４１０、４１５、４２０、４２５、４３０、４３５、４４０及び４４５として示される。（好適な実施例では９タイプの情報が使用されるが、当業者であれば、ここで開示される概念から逸れることなく、追加のまたは異なる値が適切な設定内で使用され得ることが明らかであろう。更に、図示の名前の代わりに、他の名前が属性として使用され、エントリの順序が図示の順序から変更され得る。）
【００３７】
属性ファイル内の一部の情報は、アプリケーション、ランタイム、または拡張機能を示し、及び他の情報はその依存を示す。各個々のエントリについて次に述べる。第１の要素４０５は、このアプリケーションで使用される表示名である。表示名は、例えば、ユーザがアプリケーションを呼び出すために使用するアイコンを表示するために使用される。図５の要素４５５に示されるように、仮のアプリケーション"Ｘ１"に対して、表示名エントリ構文が４５９に示される。属性の名前が最初に現れ、これはこの場合では、"displayname"である。属性の値が"ｘ１の表示名"（x1's display name）として示される。属性ファイル内の続くエントリ４８０については、"Ｙ１"と命名されるランタイムに関係し（コメント・エントリ４８０参照）、表示名４８１が"ｙ１の表示名"（y1's display name）として示される。（図５の例では、属性名をそれらの値から分離するために、同じ符号が使用される。これは単に、使用され得る１つの分離子に過ぎない。）属性エントリ４０８は、アプリケーション・ファイルとして使用される表示アイコンを指定し、その例が４６０に示される。このエントリの値はファイル名であり、そこではアイコンがイメージまたはビットマップなどとして記憶される。この属性値内では、"|"文字が好適な実施例ではパス分離子を示すために使用され、要素４６０のパス指定"images|hod.gif"内で使用されている。（この"|"記号は、図８及び図９に関連して後述するように、クライアント・マシンへのレジストリの導入に際して置換される。）
【００３８】
次の属性エントリ４１０は、パッケージ化された項目のバージョンである。好適な実施例では、この情報は、メジャー、マイナー、改訂、及び作成バージョン番号を含み、これらがコンマにより区切られたリストとして指定される。このバージョン情報は、属性情報が関係するアプリケーション、ランタイム、または拡張機能の特定バージョンを識別する。図５のアプリケーションＸ１については、バージョン構文が要素４６１に示される。ランタイムＹ１については、バージョンが要素４８２に示される。好適な実施例のコンマ分離式リスト以外のバージョン構文も、特定の導入において使用される構文に適合するために、適宜使用され得る。
【００３９】
属性エントリ４１５は、属性ファイル内のこのエントリにより示される情報のタイプを識別する。タイプは、アプリケーション、ランタイム、または拡張機能である。図５の４６２及び４８３に示されるように、キーワード"アプリケーション"及び"ランタイム"が使用されている。或いは、タイプを伝達するために、数値（０乃至２など）をパッケージ化された項目に割当てるなどの、他の技術も使用され得る。
【００４０】
属性エントリ４２０を用いて、パッケージ化された項目の位置タイプが指定される。この位置タイプ４２０は、位置エントリ４２５と一緒に使用される。図４に示されるように、位置タイプは、アーカイブ化され、パッケージ化された項目が検索されるネットワーク位置を指定するＵＲＬ（Uniform Resource Locator）であり得る。ＵＲＬを使用する例が、図５の要素４８４（タイプが"ＵＲＬ"キーワードを用いて識別される）及び４８５（ＵＲＬ例が指定される）に示される。位置タイプ４２０は、代わりにファイルであってもよく、その場合、位置４２５がファイルが存在するディレクトリ構造のための情報を指定する。ファイル位置を使用する例が、図５の要素４６３及び４６４に示される。要素４６４に示される位置の例では、アーカイブ化された属性情報が現ＪＡＲファイル内に存在することを示すために、特殊文字"."が使用されている。その場合、属性ファイル内で位置の値４２５を指定する必要はない。（好適な実施例はこの状況を示すために、特殊文字"."を使用するが、特殊キーワードなどの他の技術も使用され得る。）ＪＡＲファイル内のアーカイブ化された属性情報を参照するとき、ＪＡＲファイル内の情報を固有に識別する固有の識別子、すなわち"ＵＩＤ"が使用され得る。位置タイプ４２０はまた、"Ｊｏｂｂｉルックアップ・サーバ"としても指定され、これは位置がランタイム時に動的に決定されることを意味する（図７に関連して後述する）。この場合、位置の値４２５は好適には空に維持される。位置４２５は４２８に示されるように、キーワード"プロンプト"を用いて指定され得る。この場合、ユーザは位置情報を入力するように指示される。（好適な実施例では、値が空のとき、関連値無しに、属性タイプのキーワードが属性ファイル内に現れ、分離子構文がそれに続く。）エントリ４１５に関連して前述したように、数値などの短い識別子が、エントリ４２０として、キーワードの代わりに使用され得る。
【００４１】
属性エントリ４３０は、アーカイブ化され、パッケージ化された項目がネイティブ・コードを含むか否かを指定する。このエントリ４３０は、エントリ４３０の値が"真"のとき、ネイティブ・コード・プラットフォームのストリング識別子を指定するエントリ４３５と一緒に使用される。これらのエントリを使用する例が、要素４６５及び４６６に示され、そこではプラットフォーム値が偽であり、一方、要素４８６及び４８７では、プラットフォーム値が真である。
【００４２】
このパッケージ化された項目の依存は、属性エントリ４４０を用いて指定される。好適な実施例では、依存構文は、このパッケージ化された項目が任意の単一のプラットフォーム上で実行するために導入されなければならないコードのための、ＵＩＤのコンマ分離式リストを使用する。依存が存在しない場合、この属性の値は好適には空に維持される。要素４６７は依存情報の例を示し、そこでは２つの識別子"ｘ２"及び"ｙ１"がリストされている。要素４７０及び４８０に示されるように、属性情報はこれらの依存に対しても提供される。要素４８８は、ランタイムＹ１が依存を有さないことを示す。アーカイブ化されたパッケージ内において従属性を指定することにより、そのパッケージを導入及び使用するために必要とされる全てのＪａｖａ特定の情報が使用可能になる。例えば、Ｘ１などのアプリケーション（図５の要素４５５参照）は、要素４６７で、ランタイム環境"Ｙ１"をその依存として指定する。
【００４３】
属性エントリ４４５は、好適な実施例の最後のエントリを定義し、これはmain()関数を含むクラスのＪａｖａクラス名である。パッケージ化された項目がアプリケーションでない限り、このエントリは空の値を有する。このエントリのためにリストされる値は、ランタイム時に、アプリケーションを始動するために使用される。要素４６８にアプリケーションＸ１として示されるように、このアプリケーションの主機能は、クラス"com.ibm.X1"に配置される。
【００４４】
図６は、アプリケーション・プログラムの依存を探し当て、導入するために、好適な実施例で使用される論理を示し、図７は、アプリケーション・プログラムのためのＪｏｂｂｉ ＪＡＲファイルを、クライアントのコンピュータ上に導入するために、好適な実施例で使用される論理を示す。５００で示されるように、依存導入の論理はクライアントのコンピュータ上で動作する。この論理はスタンドアロン形式で呼び出され、アプリケーションの依存が導入されることを保証する。或いは、この論理は、図１０のブロック７３０に関連して後述するように、アプリケーションの実行の間に呼び出される。特定のアプリケーションの依存の導入が、ブロック５０５で要求される。好適な実施例では、ＨＴＴＰ要求がウェブ・サーバ５１０に送信され（５０６）、そこでウェブ・サーバ５１０が、Ｊｏｂｂｉ ＪＡＲファイル５１５、５１６、５１７などを記憶する。これらは図３に関連して前述した技術を用いて作成されたものである。このＨＴＴＰ要求は、要求アプリケーションの固有の識別子を指定する。関連Ｊｏｂｂｉ ＪＡＲファイルがウェブ・サーバ５１０により探し当てられ、クライアント・マシンに返却される（５０７）。ブロック５２０は、このファイルがクライアント・マシンにおいて受信されることを示し、続いてブロック５２５で処理される。Ｊｏｂｂｉ ＪＡＲファイルの処理は、ブロック５３５及び５４０で詳細に説明される。属性情報（図４、図５参照）がブロック５３５で構文解析され、ブロック５０５で要求されたアプリケーションの依存が探し当てられる。依存情報が抽出されると、ブロック５４０で、依存項目が導入されるか否かをチェックする。このチェック・プロセスは、フロー５４１、５４２及び５４３で示される３つの結果を有し得る。依存が既に導入済みの場合、処理はフロー５４２で示されるように、ブロック５３０に継続する。依存が存在し、依存の位置が知れる場合、制御はフロー５４１により示されるように、ブロック５０５に戻る。当業者には明らかなように、これは依存導入プロセスの再帰呼び出しである。この再帰呼び出しは、要求アプリケーションのために必要とされるランタイムや拡張機能などを検索するために使用され得る。依存が必要とされるが、その位置が分からない場合（例えば、属性エントリ４２０の値が"Ｊｏｂｂｉルックアップ・サーバ"として指定される場合）、フロー５４３により示されるように、依存の固有の識別子がルックアップ・サーバ５４５に送信される。このルックアップ・サーバ５４５は、フロー５４４により示されるように、関連Ｊｏｂｂｉ ＪＡＲファイル位置をクライアント・マシンに返却する。好適な実施例では、この返却情報は、アーカイブ化された属性情報が記憶されるサーバの位置を指定するＵＲＬである。この時点で、依存の位置が知れたので、依存導入プロセスの再帰呼び出しが、フロー５４１に従い呼び出される。依存の位置を動的に決定するこの技術は、こうした位置情報が静的に事前に指定されなければならない現技術に比較して、本発明が非常に柔軟性のあるパッケージ化を提供することを可能にする。（図６では単一のウェブ・サーバ５１０が示されるが、これは説明の都合によるもので、実際には２つ以上��サーバが使用され得て、その場合、ＨＴＴＰ要求５０６が適切なサーバをそのＵＲＬにより指定する。）
【００４５】
ブロック５４０の依存チェック・プロセスは、各指定された依存に対して繰り返される。依存が既に導入済みであるか否かの判断は、既知の技術を用いて実行される。ブロック５３５及び５４０に関連して述べたように、一旦依存が完全に処理されると、制御は主要処理内のブロック５３０に戻り、そこで５０７で検索されたＪｏｂｂｉ ＪＡＲファイルが、クライアント・マシン上のＪｏｂｂｉレジストリ内に導入される。このプロセスが図７に詳細に示される。
【００４６】
アプリケーション・プログラムのためのＪｏｂｂｉ ＪＡＲファイルを、クライアントのコンピュータ上に導入するために使用される導入プロセスが、図７のブロック５７０で開始する。（図３の要素３１５で示されるように、２つの要素が一緒に記憶された場合）ブロック５７０で、アプリケーションのＪＡＲファイルがＪｏｂｂｉ ＪＡＲファイルから抽出され、クライアント・マシンのＵＩＤディレクトリにコピーされる。（ＵＩＤディレクトリはクライアントのマシン上に作成されるディレクトリであり、内容がそこに含まれるＪｏｂｂｉアーカイブのＵＩＤと同一の名前を有する。）この技術は、アプリケーションのための環境をその後セットアップするとき、Ｊｏｂｂｉアーカイブ情報の発見を容易にする。或いは、他のディレクトリ命名アプローチが使用され、その場合アプリケーションのためのアーカイブ化された属性情報を記憶するために使用されるディレクトリの名前が、レジストリ・ファイルの一部として記憶されなければならない。）次に、ブロック５７５は、Ｊｏｂｂｉ ＪＡＲファイルからのＪｏｂｂｉ属性情報を使用し、この属性情報からレジストリ・ファイルを作成する。レジストリ・ファイルの形式が図８乃至図９に示され、以下で詳述される。次にブロック５８５で、レジストリ・ファイル情報５８０が、このクライアント・マシンのためのレジストリ・ディレクトリに記憶される。図７のプロセスはこれで終了する。
【００４７】
図８は、本発明により使用されるレジストリ・ファイルのレイアウト６００を定義し、図９は、特定のアプリケーション・プログラムのために、このレイアウトを使用する例６７０を示す。属性ファイルはアプリケーションを、それが導入され得る多数のプラットフォーム上で使用するために必要とされる情報を含むのに対して、レジストリは、この特定のクライアント・マシン上でアプリケーションを使用することに関する、個別に適合化された情報を提供する。ランタイム時に、レジストリ情報は、図１０に関連して後述するように、アプリケーションのための適切な環境を構築するために使用される。ここで述べられているように、図７のブロック５７５の処理の間に、多数のレジストリ・エントリが、属性ファイル情報から直接抽出される。（図４の属性ファイル・レイアウト４００に関連して前述したのと同様に、レジストリ・ファイル・レイアウト６００は好適な実施例を示し、アプリケーション、ランタイム、または拡張機能に関連し得る。このレイアウト情報は、適切な環境内で変更または拡張されたり、再順序化されてもよく、また他のキーワードが図示のものの代わりに使用され得る。）
【００４８】
レジストリ・エントリ６０５は、このパッケージの固有の識別子を指定し、それは任意の有効なストリングである。識別子は、例えば乱数発生器の機能を呼び出すことにより、または本発明の一部を形成しない他の技術（ユーザ入力を含む）により生成される。識別子ストリングの例が、図９の要素６７１に示される。この例では、レジストリ入力は構文"ｊｏｂｂｉ"を接頭語として有するが、これは説明の便宜上のものであって、明らかに、これらがＪｏｂｂｉレジストリ内のエントリであることを示す。
【００４９】
レジストリ・エントリ６１０は、main()関数を含むＪａｖａクラスを指定するために使用される。この情報は、属性ファイルがアプリケーションのものである場合、図７のブロック５７５の処理の間に、属性ファイルのエントリ４４５から抽出される。このエントリ６１０を使用する例が、図９の要素６７２に示され、そこでは特定のクラス名が指定される。レジストリ・エントリ６１５はこのパッケージの表示名であり、任意の表示可能なストリング値である。この値は属性エントリ４０５から抽出され、図９の例６７０では要素６７３に示される。エントリ６２０は、アプリケーション・ファイルのために使用される表示アイコンを指定し、その例が要素６７４に示される。このエントリの値は、アイコンがイメージまたはビットマップなどとして記憶されるファイル名である。図８の最下部に注釈として示されるように、"|"文字は好適な実施例では、パス分離子を示すために使用され、図９の例６７０では、要素６７４のパス指定"images|hod.gif"内で使用されている。この"|"記号は、クライアント・マシンへのレジストリの導入に際して、クライアントのオペレーティング・システムに応じて、適宜"＼"または"/"文字を使用するように、置換される。このエントリ６２０の値は、属性ファイルの要素４０８から抽出される。
【００５０】
このパッケージが使用されるときに、クラス・パス環境変数に含まれる必要がある相対ディレクトリまたはアーカイブ名が、レジストリ・エントリ６２５を用いて指定される。このエントリのために使用される値は自動的に生成され、アーカイブ化されたパッケージが記憶される、クライアント・マシンのファイル・システム内の位置を示す。例が６７５に示される。ここで記号"&"が使用され、これはクライアント・マシン上へのレジストリの導入に際して、連結のためのプラットフォーム特定の記号が、（図８に示されるように）この記号を置換するために使用されることを示す。
【００５１】
レジストリ・エントリ６３０は、このパッケージが実行されるランタイム環境の固有の識別子のリストを指定する。このリストは初期に、属性ファイルからの前記情報を用いて構築され、そのとき、パッケージの各ランタイムを探し当てるために、パッケージの依存が調査される。更に、このリスト内の値を拡張するために、ユーザまたは開発者入力が続いて使用され得る。要素６７６は、この実施例のアプリケーションでは、３つの異なるランタイム環境（“10000001”，“10000002”，“10000004”として実施例に示されている）のいずれかが、アプリケーションを実行するために使用され得ることを示す。
【００５２】
環境変数としてセットされる必要のある相対ワーキング・ディレクトリが、レジストリ・エントリ６３５の値として指定される。図９の例６７０では、特殊な構文"."が要素６７７において使用され、これは現ディレクトリが使用されることを示す。この値は好適には、それを値"."に初期化し、その後値を必要に応じて変更する手段（構成メニューなど）を提供することにより、生成される。
【００５３】
レジストリ情報により示される項目のタイプは、エントリ６４０を用いて指定され、アプリケーション、拡張機能またはランタイムのいずれかである。要素６７８は、アプリケーション値０を使用することにより、この例がアプリケーションに関することを示す。このエントリの値は、属性ファイル・エントリ４１５から推論される。
【００５４】
レジストリ・エントリ６４５は、アプリケーションのために使用されるべき、現在選択されるランタイム環境を指定する。このエントリはランタイム及び拡張機能に対しては、レジストリ・ファイルから省略される。ランタイム識別子の例が６７９に示され、これは要素６７６のランタイムのリストからの最終選択に対応する。エントリ６４５として使用される値は、エントリ６３０内の値から選択される。好適には、選択ポリシは、選択肢のリストから最終要素を選択したり、第１の要素を選択するなど、特定の実施例に応じて使用される。或いは、ユーザがリストから選択するように指示されてもよい。
【００５５】
パッケージ・エントリ６５０はパッケージのアーカイブ名を指定し、ＵＲＬを用いることにより、パッケージがネットワーク内のサーバ上のどこに記憶されるか、または、ファイル・パスを用いることにより、ファイル・システム内のどこに記憶されるかを識別する。アーカイブ化されたパッケージが拡張機能され、クライアントのマシンのＵＩＤディレクトリに導入されている場合、要素６８０により示されるように、このエントリの値が空白にされる。
【００５６】
外部エントリ６５５は、このパッケージが従属する固有の識別子のセミコロンにより分離されたリストであり、属性ファイルのエントリ４４０から作成される。依存が存在しない場合、図９の例６７０に見られるように、このエントリはレジストリ・ファイルから完全に省略される。
【００５７】
レジストリ・ファイルの好適な実施例の最終エントリは、パラメータ・エントリ６６０である。これは好適にはセミコロンを用いて分離されるパラメータのリストであり、アプリケーションの呼び出しに際して、main()関数に渡される。従って、このエントリはレジストリ・タイプ６４０がアプリケーションでない限り、指定されない。通常、パラメータ値はアプリケーション始動プロセスの間に、ユーザにより入力され、従ってパラメータ値は持続的にレジストリ・ファイル内に記憶されることはない。しかしながら、１つ以上のパラメータ値が定数または固定値を有するかもしれない。その場合、値がレジストリ内に記憶され、ランタイム時にユーザに値を入力するように指示する必要性を回避し得る。図９の例６７０は、パラメータ値の指定を省略する。
【００５８】
図１０は、アプリケーション・プログラムがクライアント・コンピュータ上で始動されるときに、好適な実施例において呼び出される論理を示す。プロセスはユーザがアプリケーションの実行を要求するとき、ブロック７００で開始し、（要素７１０に示されるように）クライアント・マシン上で発生する。ユーザがアプリケーションを要求する態様は、本発明の一部を形成しない。ユーザはアプリケーションを表すアイコン（レジストリ・ファイル内で識別される表示アイコン６２０など）をクリックしたり、ポップアップまたはプルダウン・リストからアプリケーション識別子（表示名６１５など）を選択したり、タイマ駆動型リストなどを用いて、アプリケーションを呼び出したりする。ブロック７１５で、アプリケーションのための適切なランタイム環境を構成し、その環境において、アプリケーションの実行を開始するプロセスが、開始する。後述のように、ユーザはランタイム環境が如何に動作するかについて、何もまたはほとんど知る必要がない。ブロック７１５は、要求アプリケーションに関連付けられるレジストリ・ファイルを開く。これは図８及び図９に関連して述べた情報を含む。プラットフォーム特定の論理が、ブロック７２０及び７２５で呼び出され、レジストリ・ファイルからの環境データを処理する。例えば、classdirエントリ６２５がクラス・パス変数に追加され、ワーキング・ディレクトリがエントリ６３５からの情報を用いてセットされる。ブロック７３０は依存リスト６５５をチェックし、全ての依存が導入されることを保証する。そうでない場合、好適には図７の導入プロセスが呼び出される。導入される依存に対して、７３２で示されるように、図１０の論理の再帰呼び出しが実行され、依存を使用するために、適切な情報をセットする。全ての依存情報が処理されると、制御はブロック７３５に移行する。アプリケーションのレジストリ・ファイルの現ランタイム・エントリ６４５が抽出され、値がそのランタイムに対するレジストリ・ファイルを検索するために使用される。ブロック７４０は、ランタイムのレジストリからの情報を使用し、環境変数のための適切な設定を使用する（ディレクトリをlibpathやbinpathに追加するなど）。
【００５９】
ブロック７４５では、プラットフォーム依存ＪＮＩ（Java Native Interface）が呼び出される。周知のように、ＪＮＩは標準の仮想マシン独立インタフェースであり、Ｊａｖａアプリケーションが、ＣまたはＣ＋＋などの他の言語により作成されたコードのネイティブ・ライブラリを呼び出すことを可能にする。適切な環境変数及びアプリケーション・パラメータが、この呼出しに際して渡され、ブロック７５０で、環境変数の設定を終了し、システム・プロセスを開始して、アプリケーション・プログラムがその環境の下で実行される。図１０のプロセスは次に終了し、プログラムは通常に実行する。以前述べたように、本発明の新規の技術は、アプリケーションのために、適切なランタイムの使用を可能にし、これは各異なるアプリケーションが実行のために選択されるとき、ランタイムを動的に変更するものである。
【００６０】
アプリケーションのためのランタイム環境は、本発明を用いて、図１１に示される論理に従い、容易に変更され得る。ブロック８００で、ユーザ入力がグラフィカル・ユーザ・インタフェース（ＧＵＩ）、コマンド・ラインなどから入力され、レジストリ・ファイル内の情報の変更を要求する。（或いは、システム管理者が１つ以上のクライアント・マシン上で情報を更新するための手段が提供される。例えば、新たなランタイム環境がある組織全体に渡りダウンロードされている場合、システム管理者はこの新たなランタイムを使用するように、全てのクライアント・レジストリ・ファイルを更新し得る。このアプローチは、エンドユーザに求められるランタイム知識の量を更に低減するのに役立つ。あるネットワーク位置からクライアント・マシンに情報をダウンロードする手段は、周知であり、図１１の論理を呼び出すために使用される。）ユーザ要求がレジストリ内の現ランタイム・エントリ６４５の更新を求める場合、ブロック８０５がユーザから新たなランタイム識別子を受諾する。任意的に、この識別子の検証が実行され得る。ユーザ要求が、持続的に記憶されるアプリケーション・パラメータ６５５の変更を求める場合、ブロック８１０は新たなパラメータ値を受諾する。任意的に、パラメータ値は、パラメータ値の数及びタイプが適切であることを保証するために、適用可能なアプリケーションを調査することにより検証される。ユーザが依存情報６５０の変更または追加を要求する場合、ブロック８１５が新たな情報を受諾する。任意的に、依存識別子の記憶リストが、このリストへの追加、消去及び変更を識別する手段と一緒に、ユーザに提供される。一旦ユーザが変更されたレジストリ情報を入力し、任意の検証が実行されると、ブロック８２０がこのアプリケーションのための記憶済みレジストリ情報を更新する。このアプリケーションが次回始動されるとき、図１０に従い実行環境を構築するとき、修正された情報が使用される。以前述べたように、本発明によれば、異なるランタイム環境を使用するように、アプリケーション・プログラムを変更することが、現技術に比較して多大に単純化されることがわかる。
【００６１】
以上、本発明の好適な実施例について述べてきたが、当業者であれば、本発明の基本概念を習得することにより、前述の実施例の追加の変形及び変更が可能であろう。従って、前述の好適な実施例及び全てのこうした変形及び変更が、本発明の趣旨及び範囲内に含まれるものである。
【００６２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６３】
（１）ネットワークへの接続を有することができるコンピュータ環境において、前記環境内のコンピュータ・システムにより読出されて、Ｊａｖａ環境の管理可能性及び有用性を改善するコンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体であって、
Ｊａｖａアプリケーション、前記アプリケーションの実行のために要求される０以上の拡張、及び前記アプリケーションの実行のために要求されるランタイム環境を記述する、Ｊａｖａアプリケーションの複数の属性を定義するサブプロセスと、
定義された前記属性を前記アプリケーションの識別と共に記憶するサブプロセスと
を含むコンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（２）記憶された前記属性を用いて、クライアント・マシン上に前記アプリケーションを導入するサブプロセスを含む、前記（１）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（３）前記導入するサブプロセスが、
要求される前記拡張及びランタイム環境を含む、前記アプリケーションの１つ以上の従属性を導入するサブプロセスと、
前記アプリケーションのためのＪａｖａアーカイブ・ファイルを、前記クライアント・マシン上に導入するサブプロセスと
を含み、
前記従属性を導入するサブプロセスが、
前記属性を構文解析して、前記従属性を突き止めるサブプロセスと、
前記従属性の各々が既に前記クライアント・マシン上に導入済みであるか否かを判断するサブプロセスと、
まだ導入されていない場合、突き止められた前記従属性を検索して、導入するサブプロセスと
を含む、前記（２）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（４）前記１つ以上の従属性を導入するサブプロセスのオペレーションの前に、前記アプリケーションの前記記憶された属性の最新のバージョンを検索するサブプロセスを含む、前記（３）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（５）前記１つ以上の従属性を導入するサブプロセスが、前記従属性を検索及び導入するサブプロセスにより使用される位置を、動的に検索するサブプロセスを含む、前記（３）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（６）前記クライアント・マシン上に、前記属性に対応するレジストリ・ファイルを作成するサブプロセスを含む、前記（３）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（７）前記クライアント・マシン上で選択アプリケーションを実行する要求を受信するサブプロセスと、
前記対応するレジストリ・ファイルを用いて、前記選択アプリケーションのための適切なランタイム環境を構築するサブプロセスと、
構築された前記環境において、前記選択アプリケーションの実行を開始するサブプロセスと
を含む、前記（６）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（８）前記構築するサブプロセスが、
前記対応するレジストリ・ファイルを読出し、前記アプリケーションの現在要求される拡張及び現ランタイム環境を含む、前記アプリケーションの現従属性を決定するサブプロセスと、
前記選択アプリケーションの前記現従属性の各々が導入されることを保証するサブプロセスと、
前記現ランタイム環境のために、適切な環境変数をセットするサブプロセスと、
現在要求される前記拡張のために、適切な環境変数をセットするサブプロセスと
を含む、前記（７）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（９）前記対応するレジストリ・ファイルを用いて、前記選択アプリケーションの１つ以上のパラメータをセットするサブプロセスを含む、前記（８）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（１０）前記レジストリ・ファイル内の前記現ランタイム環境を更新するサブプロセスと、
前記レジストリ・ファイル内の現在要求される前記拡張を更新するサブプロセスと
を含む、前記（６）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（１１）前記レジストリ・ファイル内の前記パラメータを更新するサブプロセスを含む、前記（９）記載のＪａｖａ環境の管理可能性及び有用性を改善する、コンピュータ読取り可能コードを有するコンピュータ読取り可能記憶媒体。
（１２）ネットワークへの接続を有することができるコンピュータ環境において、Ｊａｖａ環境の管理可能性及び有用性を改善するシステムであって、
Ｊａｖａアプリケーション、前記アプリケーションの実行のために要求される０以上の拡張、及び前記アプリケーションの実行のために要求されるランタイム環境を記述する、Ｊａｖａアプリケーションの複数の属性を定義する手段と、
定義された前記属性を前記アプリケーションの識別と共に記憶する手段と
を含む、システム。
（１３）記憶された前記属性を用いて、クライアント・マシン上に前記アプリケーションを導入する手段を含む、前記（１２）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（１４）前記導入手段が、
要求される前記拡張及びランタイム環境を含む、前記アプリケーションの１つ以上の従属性を導入する手段と、
前記アプリケーションのためのＪａｖａアーカイブ・ファイルを、前記クライアント・マシン上に導入する手段と
を含み、
前記従属性を導入する手段が、
前記属性を構文解析して、前記従属性を突き止める手段と、
前記従属性の各々が既に前記クライアント・マシン上に導入済みであるか否かを判断する手段と、
まだ導入されていない場合、突き止められた前記従属性を検索して、導入する手段と
を含む、前記（１３）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（１５）前記１つ以上の従属性を導入する手段のオペレーションの前に、前記アプリケーションの前記記憶された属性の最新のバージョンを検索する手段を含む、前記（１４）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（１６）前記１つ以上の従属性を導入する手段が、前記従属性を検索及び導入する手段により使用される位置を、動的に検索する手段を含む、前記（１４）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（１７）前記クライアント・マシン上に、前記属性に対応するレジストリ・ファイルを作成する手段を含む、前記（１４）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（１８）前記クライアント・マシン上で選択アプリケーションを実行する要求を受信する手段と、
前記対応するレジストリ・ファイルを用いて、前記選択アプリケーションのための適切なランタイム環境を構築する手段と、
構築された前記環境において、前記選択アプリケーションの実行を開始する手段と
を含む、前記（１７）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（１９）前記構築手段が、
前記対応するレジストリ・ファイルを読出し、前記アプリケーションの現在要求される拡張及び現ランタイム環境を含む、前記アプリケーションの現従属性を決定する手段と、
前記選択アプリケーションの前記現従属性の各々が導入されることを保証する手段と、
前記現ランタイム環境のために、適切な環境変数をセットする手段と、
現在要求される前記拡張のために、適切な環境変数をセットする手段と
を含む、前記（１８）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（２０）前記対応するレジストリ・ファイルを用いて、前記選択アプリケーションの１つ以上のパラメータをセットする手段を含む、前記（１９）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（２１）前記レジストリ・ファイル内の前記現ランタイム環境を更新する手段と、
前記レジストリ・ファイル内の現在要求される前記拡張を更新する手段と
を含む、前記（１７）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（２２）前記レジストリ・ファイル内の前記パラメータを更新する手段を含む、前記（２０）記載のＪａｖａ環境の管理可能性及び有用性を改善する、システム。
（２３）ネットワークへの接続を有することができるコンピュータ環境において、Ｊａｖａ環境の管理可能性及び有用性を改善する方法であって、
Ｊａｖａアプリケーション、前記アプリケーションの実行のために要求される０以上の拡張、及び前記アプリケーションの実行のために要求されるランタイム環境を記述する、Ｊａｖａアプリケーションの複数の属性を定義するステップと、
定義された前記属性を前記アプリケーションの識別と共に記憶するステップと
を含む、方法。
（２４）記憶された前記属性を用いて、クライアント・マシン上に前記アプリケーションを導入するステップを含む、前記（２３）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（２５）前記導入するステップが、
要求される前記拡張及びランタイム環境を含む、前記アプリケーションの１つ以上の従属性を導入するステップと、
前記アプリケーションのためのＪａｖａアーカイブ・ファイルを、前記クライアント・マシン上に導入するステップと
を含み、
前記従属性を導入するステップが、
前記属性を構文解析して、前記従属性を突き止めるステップと、
前記従属性の各々が既に前記クライアント・マシン上に導入済みであるか否かを判断するステップと、
まだ導入されていない場合、突き止められた前記従属性を検索して、導入するステップと
を含む、前記（２４）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（２６）前記１つ以上の従属性を導入するステップのオペレーションの前に、前記アプリケーションの前記記憶された属性の最新のバージョンを検索するステップを含む、前記（２５）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（２７）前記１つ以上の従属性を導入するステップが、前記従属性を検索及び導入するステップにより使用される位置を、動的に検索するステップを含む、前記（２５）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（２８）前記クライアント・マシン上に、前記属性に対応するレジストリ・ファイルを作成するステップを含む、前記（２５）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（２９）前記クライアント・マシン上で選択アプリケーションを実行する要求を受信するステップと、
前記対応するレジストリ・ファイルを用いて、前記選択アプリケーションのための適切なランタイム環境を構築するステップと、
構築された前記環境において、前記選択アプリケーションの実行を開始するステップと
を含む、前記（２８）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（３０）前記構築するステップが、
前記対応するレジストリ・ファイルを読出し、前記アプリケーションの現在要求される拡張及び現ランタイム環境を含む、前記アプリケーションの現従属性を決定するステップと、
前記選択アプリケーションの前記現従属性の各々が導入されることを保証するステップと、
前記現ランタイム環境のために、適切な環境変数をセットするステップと、
現在要求される前記拡張のために、適切な環境変数をセットするステップと
を含む、前記（２９）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（３１）前記対応するレジストリ・ファイルを用いて、前記選択アプリケーションの１つ以上のパラメータをセットするステップを含む、前記（３０）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（３２）前記レジストリ・ファイル内の前記現ランタイム環境を更新するステップと、
前記レジストリ・ファイル内の現在要求される前記拡張を更新するステップと
を含む、前記（２８）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
（３３）前記レジストリ・ファイル内の前記パラメータを更新するステップを含む、前記（３１）記載のＪａｖａ環境の管理可能性及び有用性を改善する、方法。
【図面の簡単な説明】
【図１】  本発明が実装され得るコンピュータ・ワークステーション環境のブロック図である。
【図２】  本発明が実装され得るネットワーク化コンピュータ環境を示す図である。
【図３】  本発明の好適な実施例が属性をＪａｖａアプリケーションに関連付け、それらの属性を後の使用のために記憶する技術を示す図である。
【図４】  本発明により使用される属性情報のレイアウトの定義を示す図である。
【図５】  特定のアプリケーション・プログラムのための、このレイアウトの使用例を示す図である。
【図６】  好適な実施例において、アプリケーション・プログラムの依存を探し当て、導入するために使用される論理を示す図である。
【図７】  好適な実施例において、アプリケーション・プログラムのために、Ｊｏｂｂｉ ＪＡＲファイルをクライアントのコンピュータ上に導入するために使用される論理を示す図である。
【図８】  本発明により使用されるレジストリ・ファイルのレイアウトの定義を示す図である。
【図９】  特定のアプリケーション・プログラムのための、このレイアウトの使用例を示す図である。
【図１０】  アプリケーション・プログラムがクライアント・コンピュータ上で始動されるとき、好適な実施例において呼び出される論理を示す図である。
【図１１】  アプリケーション・プログラムが導入された後、ランタイム情報を更新するために使用される論理を示す図である。
【符号の説明】
１０  ワークステーション
１２  プロセッサ
１４  バス
１６  ユーザ・インタフェース・アダプタ
１８  キーボード
２０  マウス
２２  インタフェース装置
２４  表示装置
２６  表示アダプタ
２８  メモリ
３０  記憶装置
３２  通信チャネル・モデム
４０  データ処理ネットワーク
４２  無線ネットワーク
４４  ネットワーク
４６  ゲートウェイ
４７  アプリケーション・サーバ
４８  データ・レポジトリ
５０６  ＨＴＴＰ要求
５０７  関連ＪＡＲファイル
【図１】
0004215373.tif 000002
【図２】
0004215373.tif 000003
【図３】
0004215373.tif 000004
【図４】
0004215373.tif 000005
【図５】
0004215373.tif 000006
【図６】
0004215373.tif 000007
【図７】
0004215373.tif 000008
【図８】
0004215373.tif 000009
【図９】
0004215373.tif 000010
【図１０】
0004215373.tif 000011
【図１１】
0004215373.tif 000012