(57)【特許請求の範囲】
【請求項１】
システムのランタイム環境を構築するためのコンピュータ実行方法であって：
少なくとも１つのソフトウェア・コンポーネントの必要とされるバージョンを指定するプロファイル識別子を包含するサービス要求をプロセッサにより受け取るステップと；
前記ソフトウェア・コンポーネントの完全なインストレーションと少なくとも１つのデルタ・ファイルとをプロセッサにより特定するステップと；
前記少なくとも１つのデルタ・ファイルからのファイルと、それらに続く、前記完全なインストレーションからのファイルとを優先的に利用することによって、前記必要とされるバージョンのためのクラスパスをプロセッサにより構築するステップであって、
前記ランタイム環境はオブジェクト指向プログラム・コード・ランタイム環境を含み、前記クラスパスは、前記必要とされるバージョンでユーザ・プロファイルにおいて指定されたオブジェクト指向プログラム・コード・クラスに複数のオブジェクト指向プログラム・コード・ソフトウェア・コンポーネントのうちのいずれかを論理的に重ね合わせることにより指定され、前記サービス要求内の前記プロファイル識別子は、必要とされるオブジェクト指向プログラム・コード・クラスのバージョンを指定しており、
前記少なくとも１つのデルタ・ファイルは第１デルタ・ファイルおよび第２デルタ・ファイルをさらに含み、前記第１デルタ・ファイルは前記完全なインストレーションに対する１番目のアップデートであり、前記第２デルタ・ファイルは前記完全なインストレーションに対する２番目のアップデートであり、前記少なくとも１つのデルタ・ファイルからのファイルと、それらに続く、前記完全なインストレーションからのファイルとを優先的に利用することによって前記必要とされるバージョンのためのクラスパスを動的に構築する前記ステップは：
前記第２デルタ・ファイル内のファイルおよびディレクトリをプロセッサにより用いるステップと；
前記第２デルタ・ファイル内の前記ファイルおよび前記ディレクトリを用いることにプロセッサにより応答して、前記第１デルタ・ファイル内のファイルおよびディレクトリを用いるステップと；
前記第１デルタ・ファイル内の前記ファイルおよび前記ディレクトリを用いることに応答して、前記完全なインストレーション内のファイルおよびディレクトリをプロセッサにより用いるステップと；
をさらに含む、方法。
【請求項２】
前記ランタイム環境は前記システム内の複数のランタイム環境の１つを含み、各ランタイム環境はオブジェクト指向プログラム仮想マシンの別々のインスタンスにおいて実現される、請求項１に記載の方法。
【請求項３】
前記複数のランタイム環境のうちのランタイム環境は、前記複数のランタイム環境のうちの前記ランタイム環境が自分自身の構成ファイル、ログ、およびプロパティを有するように、前記少なくとも１つのデルタ・ファイルのうちの異なるデルタ・ファイルを利用する、請求項２に記載の方法。
【請求項４】
前記ソフトウェア・コンポーネントの前記完全なインストレーションは、エンタープライズ・アプリケーション・サーバの完全なインストレーションである、請求項１に記載の方法。
【請求項５】
請求項１ないし４のいずれか１つに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項６】
その上にコード化されているシステムのランタイム環境を構築するための命令を有する記憶単位と；
前記記憶単位をプロセッサに接続するバス・システムと；
請求項１ないし４のいずれかの前記ステップを行うために前記命令を実行するプロセッサと；
を含むデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理分野に関し、特に、少なくとも１つのソフトウェア・コンポーネントの複数の異なるバージョンを包含するシステムのランタイム環境を構築するためのコンピュータ実行方法、装置およびコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
生産システムにおけるエンタープライズ・アプリケーション・サーバ（ｅｎｔｅｒｐｒｉｓｅ  ａｐｐｌｉｃａｔｉｏｎ  ｓｅｒｖｅｒ（ＥＡＳ））が更新されるとき、大抵のフィックス・パック・インストレーション・ソフトウェアはエンタープライズ・アプリケーション・サーバ全体を完全にアップグレードする。特に、全てのプロファイルまたはサーバ・ランタイムは最新のフィックス・パック・バージョンにアップグレードされて全て同じエンタープライズ・アプリケーション・サーバ・フィックス・パック・レベルで動作する。様々のフィックス・パック・バージョンを同じマシンにインストールして維持するための備えは無い。
【０００３】
例えば、ＩＢＭ（ＩＢＭ社の登録商標）ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ（アプリケーション・サーバ（ＷＡＳ））バージョン６．１などのエンタープライズ・アプリケーション・サーバ・ベース・バージョンがシステムにインストールされると想定する。さらに、３つの異なるランタイム環境（ｒｕｎｔｉｍｅ  ｅｎｖｉｒｏｎｍｅｎｔ（ＲＥ））、例えばＷＡＳプロファイルＸ、Ｙ、およびＺがエンタープライズ・アプリケーション・サーバ上に存在するということ、および、該Ｘ、ＹおよびＺプロファイル上にディプロイされた３つの異なるアプリケーション、例えばプロファイルＸ上のＴＥＳＴ１、プロファイルＹ上のＴＥＳＴ２、及びプロファイルＺ上のＴＥＳＴ３、があるということも想定しよう。さらに、ランタイム環境Ｙ上にディプロイされたアプリケーションＴＥＳＴ２だけについてＥＡＳをあるバージョンから別のバージョンへ、例えばＷＡＳバージョン６．１からＷＡＳバージョン６．１．０．２５へ、アップグレードする必要があり、他のアプリケーションについてはＥＡＳをアップグレードする必要は無いということも想定する。このアップグレードは、実際上、アプリケーションＴＥＳＴ１およびＴＥＳＴ３の一方または両方に悪影響を及ぼすかもしれない。例えば、アプリケーションＴＥＳＴ１は、特に、ＩＢＭ（ＩＢＭ社の登録商標）ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）アプリケーション・サーバのバージョン６．１により提供されるインターフェースを使用するように開発されているかもしれない。
【０００４】
エンタープライズ・アプリケーションのための現在のパッチ・アップグレードは、一般に、エンタープライズ・アプリケーション・サーバ全体をアップグレードする。様々のランタイム環境が、該ランタイム環境上にディプロイされたアプリケーションに関連する様々のフィックス・パック・レベルで動作し得るようにエンタープライズ・アプリケーション・サーバの１つ以上の特定のランタイム環境だけをアップグレードするための備えは無い。現在のランタイム環境は、ベース・エンタープライズ・アプリケーション・サーバが動作し、ベース・エンタープライズ・アプリケーション・サーバ・ファイルに完全に依存することも要求する。それらは、興味あるバージョンを選択するオプションを持っていない、例えば、システムｓ１上に存在するプロファイルＸはＩＢＭ（ＩＢＭ社の登録商標）ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）アプリケーション・サーバ６．１上で動作することを望み、同じシステムｓ１上のプロファイルＹはＩＢＭ（ＩＢＭ社の登録商標）ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）アプリケーション・サーバ６．１．５上で動作することを望むかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
システムのランタイム環境を構築するためのコンピュータ実行方法、コンピュータ・プログラム、およびデータ処理システムが提供される。
【課題を解決するための手段】
【０００６】
本発明の一実施態様に従って、システムのランタイム環境を構築するためのコンピュータ実行方法、有形の記憶媒体、およびデータ処理システムが提供される。プロファイル・マネージャは、プロファイル識別子を包含するサービス要求を受け取る。該プロファイル識別子は、少なくとも１つのソフトウェア・コンポーネントの必要とされるバージョンを指定する。該プロファイル・マネージャは、そのソフトウェア・コンポーネントの完全なインストレーションと、少なくとも１つのデルタ・ファイルとを特定する。該プロファイル・マネージャは、該少なくとも１つのデルタ・ファイルからのファイルと、それらに続く、該完全なインストレーションからのファイルとを優先的に利用することによって、該必要とされるバージョンのためのクラスパスを動的に構築する。ランタイム環境は、その後、該クラスパスを利用して構築される。
【０００７】
次に、添付されている図面を参照して、単に例を挙げて、本発明の実施態様が記述される。
【図面の簡単な説明】
【０００８】
【図１】実施例が実現され得るデータ処理システムのネットワークの図面を描いている。
【図２】実施例が実現され得るデータ処理システムのブロック図である。
【図３】本発明を実施し得るコンピュータ・システムの中で動作するソフトウェア・コンポーネント同士の関係を示すブロック図である。
【図４】一実施例に従うＪａｖａ（Ｒ）仮想マシンのブロック図である。
【図５】データ処理システムのＪａｖａ（Ｒ）仮想マシンにプロファイルを供給するための現在知られているデータフロー図である。
【図６】一実施例に従うデータ処理システムのＪａｖａ（Ｒ）仮想マシンにプロファイルを供給するためのデータフロー図である。
【図７】従来技術に従うエンタープライズ・アプリケーション・サーバ・ファイル・システム構造を概略的に示すブロック図である。
【図８】一実施例に従うエンタープライズ・アプリケーション・サーバ・ファイル・システム構造を概略的に示すブロック図である。
【図９】一実施例に従うエンタープライズ・アプリケーション・サーバ・アップグレード、パッチ、またはフィックスパックのインストレーションを概略的に示すブロック図である。
【図１０】一実施例に従うランタイム環境によってシステム・バージョンを選択する方法を概略的に示すフローチャートである。
【発明を実施するための形態】
【０００９】
当業者により理解されるであろうように、本発明はシステム、方法あるいはコンピュータ・プログラム製品として具体化され得る。従って、本発明は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいはソフトウェアと、ここで“回路”、“モジュール”または“システム”と全て一般的に称され得るハードウェア側面とを組み合わせた実施態様の形をとることができる。さらに、本発明は、コンピュータ使用可能なプログラム・コードが具体化されている任意の有形表現媒体において具体化されたコンピュータ・プログラム製品の形をとることができる。
【００１０】
１つ以上のコンピュータ使用可能なあるいはコンピュータ可読の媒体（１つまたは複数）の任意の組み合わせが利用され得る。該コンピュータ使用可能なあるいはコンピュータ可読の媒体は、例えば、それらに限定されないが、電子、磁気、光学、電磁、赤外線、または半導体のシステム、装置、デバイス、または伝播媒体であり得る。コンピュータ可読媒体のより具体的な例（非網羅的なリスト）は次のものを含む：１つ以上のワイヤを有する電気的結線、携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＲＡＭ））、読み出し専用メモリ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＲＯＭ））、消去可能なプログラマブル読み出し専用メモリ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＰＲＯＭまたはフラッシュ・メモリ））、光ファイバ、携帯用コンパクト・ディスク読み出し専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＣＤＲＯＭ））、光記憶装置、インターネットまたはイントラネットをサポートするものなどの伝送媒体、あるいは磁気記憶装置。プログラムは、例えば紙または他の媒体の光学式走査を介して電子的に取り込まれ、その後、必要ならば、コンパイルされ、解釈されあるいは適切な仕方で別様に処理され、その後コンピュータ・メモリに格納され得るので、該コンピュータ使用可能なあるいはコンピュータ可読の媒体は、プログラムが印刷されている紙または他の適切な媒体であっても良いことに留意されたい。この文書の文脈においては、コンピュータ使用可能なあるいはコンピュータ可読の媒体は、命令実行システム、装置、またはデバイスに使用されるあるいは関連するプログラムを包含し、記憶し、伝達し、伝播し、あるいは運ぶことのできる任意の媒体であり得る。コンピュータ使用可能な媒体は、ベースバンドであるいは搬送波の一部として、コンピュータ使用可能なプログラム・コードが具体化されている伝播されるデータ信号を含むことができる。コンピュータ使用可能なプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、ＲＦなどを含むが限定はされない任意の適切な媒体を用いて伝送され得る。
【００１１】
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向のプログラミング言語および在来の手続き型プログラミング言語を含む１つ以上のプログラミング言語の任意の組み合わせで書かれ得る。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で、実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ（ＬＡＮ））またはワイド・エリア・ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ（ＷＡＮ））を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されることができ、あるいは、接続は外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを用いてインターネットを通して）なされることができる。
【００１２】
本発明は、以下で、本発明の実施態様に従う方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して記述される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロック同士の組み合わせはコンピュータ・プログラム命令により実行され得ることが理解されるであろう。
【００１３】
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する命令が該フローチャートまたは該ブロック図あるいはその両方の１つ若しくは複数のブロックにおいて指定されている機能／行為を実行するための手段を作成するようにマシンを製造するために、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブルなデータ処理装置のプロセッサに提供され得る。これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が該フローチャートまたは該ブロック図あるいはその両方の１つ若しくは複数のブロックにおいて指定されている機能／行為を実行する命令手段を含む製造物品を生じさせるように、特定の仕方で機能するようにコンピュータまたは他のプログラマブルなデータ処理装置に指令できるコンピュータ可読媒体に格納されることもできる。
【００１４】
該コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルな装置上で実行する命令が該フローチャートまたは該ブロック図あるいはその両方の１つ若しくは複数のブロックにおいて指定されている機能／行為を実行するためのプロセスを提供するように、コンピュータ実行プロセスを生じさせるべくコンピュータまたは他のプログラマブルな装置上で一連の操作ステップを実行させるためにコンピュータまたは他のプログラマブルなデータ処理装置にロードされることもできる。
【００１５】
ここで図を参照すると、特に図１−２を参照すると、実施例が実現され得るデータ処理環境の代表的な図が提供されている。図１−２は、単に代表的なものであること、種々の実施態様が実現され得る環境に関して如何なる限定も主張あるいは示唆するものではないこと、が理解されるべきである。描かれている環境に多くの改変を加えることができる。
【００１６】
図１は、実施例が実現され得るデータ処理システムのネットワークの絵画的表示を描いている。ネットワーク・データ処理システム１００は、実施例が実現され得るコンピュータのネットワークである。ネットワーク・データ処理システム１００はネットワーク１０２を包含し、これは、ネットワーク・データ処理システム１００の中で互いに接続されている種々のデバイスおよびコンピュータの間の通信リンクを提供するために用いられる媒体である。ネットワーク１０２は、有線、無線通信リンク、または光ファイバ・ケーブルなどの結線を含むことができる。
【００１７】
描かれている例では、サーバ１０４およびサーバ１０６は、記憶単位１０８とともにネットワーク１０２に接続する。さらに、クライアント１１０、１１２、および１１４がネットワーク１０２に接続する。クライアント１１０、１１２、および１１４は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータであり得る。描かれている例では、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどの情報をクライアント１１０、１１２、および１１４に提供する。クライアント１１０、１１２、および１１４は、この例ではサーバ１０４に対してクライアントである。ネットワーク・データ処理システム１００は、図示されていないさらなるサーバ、クライアント、および他のデバイスを含むことができる。
【００１８】
ネットワーク・データ処理システム１００に置かれるプログラム・コードは、コンピュータ記録可能記憶媒体に格納されて、使用されるべくデータ処理システムまたは他のデバイスにダウンロードされることができる。例えば、プログラム・コードは、サーバ１０４上のコンピュータ記録可能記憶媒体に格納されて、クライアント１１０上で使用されるべくネットワーク１０２によりクライアント１１０にダウンロードされることができる。
【００１９】
描かれている例では、ネットワーク・データ処理システム１００は、相互に通信するためにプロトコルの伝送制御プロトコル／インターネット・プロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ／ＩＰ））スイートを使用するネットワークおよびゲートウェイの世界的集合を表わすネットワーク１０２を有するインターネットである。インターネットの中心部には、データおよびメッセージを経路指定する数千の商用、政府機関用、教育用およびその他のコンピュータ・システムから成る、主要なノードまたはホスト・コンピュータ間の高速データ通信ラインのバックボーンがある。もちろん、ネットワーク・データ処理システム１００は、例えばイントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、あるいはワイド・エリア・ネットワーク（ＷＡＮ）などの多くの異なるタイプのネットワークとしても実現され得る。図１は、例示されているのであって、種々の実施例についての構成上の限定として意図されているのではない。
【００２０】
ここで図２を参照すると、実施例が実現され得るデータ処理システムのブロック図が示されている。データ処理システム２００は、図１におけるサーバ１０４またはクライアント１１０などのコンピュータの例であり、その中に、プロセスを実行するコンピュータ使用可能プログラム・コードまたは命令を実施例のために置くことができる。この例では、データ処理システム２００は通信ファブリック２０２を含み、これは、プロセッサ・ユニット２０４、メモリ２０６、永続記憶装置２０８、通信ユニット２１０、入力／出力（ｉｎｐｕｔ／ｏｕｔｐｕｔ（Ｉ／Ｏ））ユニット２１２、およびディスプレイ２１４の間の通信を提供する。
【００２１】
プロセッサ・ユニット２０４は、メモリ２０６にロードされ得るソフトウェアのための命令を実行する役割を果たす。プロセッサ・ユニット２０４は、インプリメンテーションにより、１つ以上のプロセッサのセットであることができ、あるいはマルチ・プロセッサ・コアであることができる。さらに、プロセッサ・ユニット２０４は、主プロセッサが副プロセッサとともに単一のチップ上に存在する１つ以上のヘテロジニアス・プロセッサ・システムを用いて実装され得る。他の１つの例では、プロセッサ・ユニット２０４は、同じタイプの複数のプロセッサを包含する対称的マルチ・プロセッサ・システムであることができる。
【００２２】
メモリ２０６および永続記憶装置２０８は、記憶装置２１６の例である。記憶装置は、例えば無限定で、データ、関数形式のプログラム・コード、または他の適切な情報のうちの少なくとも１つあるいはそれらの組み合わせなどの情報を一時的にまたは永久的にあるいは一時的にかつ永久的に記憶することのできる任意のハードウェア・ピースである。メモリ２０６は、これらの例では、例えば、ランダム・アクセス・メモリあるいは他の任意の適切な揮発性または不揮発性の記憶装置であることができる。永続記憶装置２０８は、特定のインプリメンテーションにより種々の形をとることができる。例えば、永続記憶装置２０８は、１つ以上のコンポーネントまたはデバイスを包含することができる。例えば、永続記憶装置２０８は、ハード・ディスク、フラッシュ・メモリ、再書き込み可能な光ディスク、再書き込み可能な磁気テープ、あるいは上記のものの何らかの組み合わせであることができる。永続記憶装置２０８により使用される媒体は取り外し可能であることもできる。例えば、永続記憶装置２０８のために取り外し可能のハード・ディスクが使用され得る。
【００２３】
通信ユニット２１０は、これらの例において、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット２１０はネットワーク・インターフェース・カードである。通信ユニット２１０は、物理的通信リンクおよび無線通信リンクの一方または両方の使用を通して通信を提供することができる。
【００２４】
入力／出力ユニット２１２は、データ処理システム２００に接続され得る他のデバイスとのデータの入力または出力あるいはその両方のためのものである。例えば、入力／出力ユニット２１２は、キーボード、マウス、および他の何らかの適切な入力装置のうちの少なくとも１つを通してのユーザ入力のための接続を提供することができる。さらに、入力／出力ユニット２１２は、出力をプリンタに送ることができる。ディスプレイ２１４は、情報をユーザに表示するためのメカニズムを提供する。
【００２５】
オペレーティング・システム、アプリケーション、またはプログラムあるいはそれらの組み合わせのための命令は記憶装置２１６に置かれることができ、これは通信ファブリック２０２を通してプロセッサ・ユニット２０４と通信する。これらの実施例では、命令は関数形式で永続記憶装置２０８上に存在する。これらの命令は、プロセッサ・ユニット２０４により実行されるべくメモリ２０６にロードされることができる。種々の実施態様のプロセスは、コンピュータ実行命令を用いるプロセッサ・ユニット２０４により実行されることができ、それらはメモリ２０６などのメモリに置かれることができる。
【００２６】
これらの命令は、プロセッサ・ユニット２０４内のプロセッサにより読み出されて実行され得るプログラム・コード、コンピュータ使用可能プログラム・コード、あるいはコンピュータ可読プログラム・コードと称される。種々の実施態様におけるプログラム・コードは、メモリ２０６または永続記憶装置２０８などの、種々の物理的なあるいは有形のコンピュータ可読媒体上で具体化されることができる。
【００２７】
プログラム・コード２１８は、選択的に取り外すことのできるコンピュータ可読媒体２２０上に関数形式で置かれて、プロセッサ・ユニット２０４により実行されるべくデータ処理システム２００にロードされあるいは転送されることができる。プログラム・コード２１８およびコンピュータ可読媒体２２０は、これらの例ではコンピュータ・プログラム製品２２２を形成する。一例では、コンピュータ可読媒体２２０は、例えば、永続記憶装置２０８の一部分であるハード・ディスク等の記憶装置に転送されるべく永続記憶装置２０８の一部分であるドライブまたは他のデバイスに挿入されあるいは中に置かれる光ディスクまたは磁気ディスクなど、有形の形式であることができる。有形の形式では、コンピュータ可読媒体２１８は、データ処理システム２００に接続されるハード・ディスク、サム・ドライブ、またはフラッシュ・メモリなどの永続記憶装置の形をとることもできる。コンピュータ可読媒体２２０の有形の形式は、コンピュータ記録可能記憶媒体とも称される。或る例では、コンピュータ可読媒体２２０は取り外し可能でないかもしれない。
【００２８】
あるいは、プログラム・コード２１８は、通信ユニット２１０への通信リンクを通して、または入力／出力ユニット２１２への結線を通して、あるいはその両方を通して、コンピュータ可読媒体２２０からデータ処理システム２００に転送されることができる。該通信リンクまたは該結線あるいはその両方は、該例では物理的なものでありあるいは無線であることができる。コンピュータ可読媒体は、通信リンク、あるいはプログラム・コードを包含する無線伝送などの、非有形の媒体の形をとることもできる。
【００２９】
或る実施例では、プログラム・コード２１８は、データ処理システム２００内で使用されるべく他のデバイスまたはデータ処理システムからネットワークを介して永続記憶装置２０８にダウンロードされることができる。例えば、サーバ・データ処理システム内のコンピュータ可読記憶媒体に格納されているプログラム・コードはネットワークを介して該サーバからデータ処理システム２００にダウンロードされることができる。プログラム・コード２１８を提供するデータ処理システムは、サーバ・コンピュータ、クライアント・コンピュータ、あるいは、プログラム・コード２１８を記憶し送信することのできる他の何らかのデバイスであることができる。
【００３０】
データ処理システム２００のために示された種々のコンポーネントは、種々の実施態様が実現され得る仕方に構成上の限定を与えるよう意図されているのではない。種々の実施例は、データ処理システム２００のために示されたもの以外の、あるいはそれらの代わりのコンポーネントを含むデータ処理システムにおいて実現されることができる。図２に示されている他のコンポーネントは、図示された例から変えられることができる。種々の実施態様は、プログラム・コードを実行することのできる任意のハードウェア・デバイスまたはシステムを用いて実現されることができる。一例として、データ処理システムは、無機コンポーネントと統合された有機コンポーネントを含むことができ、または人間を除外した有機コンポーネントから完全に構成されることができ、あるいは、無機コンポーネントと統合された有機コンポーネントを含み、かつ人間を除外した有機コンポーネントから完全に構成されることもできる。例えば、記憶装置は、有機半導体から構成されることができる。
【００３１】
他の１つの例として、データ処理システム２００の記憶装置は、データを記憶できる任意のハードウェア装置である。メモリ２０６、永続記憶装置２０８およびコンピュータ可読媒体２２０は、有形の形式の記憶装置の例である。
【００３２】
他の１つの例では、バス・システムが、通信ファブリック２０２を実現するために使用されることができ、システム・バスまたは入力／出力バスなどの１つ以上のバスから構成されることができる。もちろん、バス・システムは、該バス・システムに取り付けられた種々のコンポーネントまたはデバイス間にデータの転送のための手段を提供する任意の適切なタイプのアーキテクチャを用いて実現されることができる。さらに、通信ユニットは、モデムまたはネットワーク・アダプタなど、データを送信し受信するために使用される１つ以上のデバイスを含むことができる。さらに、メモリは、例えば、メモリ２０６、または、通信ファブリック２０２に存在し得るインターフェースおよびメモリ・コントローラ・ハブに見出されるようなキャッシュであることができる。
【００３３】
ここで図３を参照すると、ブロック図が、本発明を実施し得るコンピュータ・システムの中で動作するソフトウェア・コンポーネント同士の関係を示している。Ｊａｖａ（Ｒ）ベースのシステム３００は、特定のハードウェア・プラットフォーム上で実行するソフトウェアにハードウェアおよびシステム・サポートを提供するプラットフォーム固有オペレーティング・システム３０２を包含する。Ｊａｖａ（Ｒ）仮想マシン（Ｊａｖａ  ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ（ＪＶＭ））３０４は、該オペレーティング・システムと関連して実行し得る１つのソフトウェア・アプリケーションである。Ｊａｖａ（Ｒ）仮想マシン３０４は、Ｊａｖａ（Ｒ）プログラミング言語で書かれたプログラム、サーブレット、またはソフトウェア・コンポーネントであるＪａｖａ（Ｒ）アプリケーション／アプレット３０６を実行する能力を持ったＪａｖａ（Ｒ）ランタイム環境を提供する。Ｊａｖａ（Ｒ）仮想マシン３０４が動作するコンピュータ・システムは、上記のデータ処理システム２００またはコンピュータ１００に類似することができる。しかし、Ｊａｖａ（Ｒ）仮想マシン３０４は、ｐｉｃｏＪａｖａコアが埋め込まれているいわゆるＪａｖａ（Ｒ）チップ、Ｊａｖａ（Ｒ）オン・シリコン、あるいはＪａｖａ（Ｒ）プロセッサ上の専用ハードウェアに実現され得る。
【００３４】
Ｊａｖａ（Ｒ）ランタイム環境の中心にはＪａｖａ（Ｒ）仮想マシンがあり、これは、そのアーキテクチャ、セキュリティ機能、およびネットワークを渡るモビリティ、およびプラットフォーム独立性を含む、Ｊａｖａ（Ｒ）の環境の全側面をサポートする。
【００３５】
Ｊａｖａ（Ｒ）仮想マシンは仮想コンピュータ、例えば、抽象的に明示されるコンピュータ、である。その仕様は、Ｊａｖａ（Ｒ）仮想マシンがその上で実行するように設計されるプラットフォームに依存し得る或る範囲の設計選択肢のある、どのＪａｖａ（Ｒ）仮想マシンもが実現しなければならない或る機能を定める。例えば、全てのＪａｖａ（Ｒ）仮想マシンは、Ｊａｖａ（Ｒ）バイトコードを実行しなければならず、該バイトコードにより表される命令を実行するために或る範囲の技術を使用することができる。Ｊａｖａ（Ｒ）仮想マシンは、完全にソフトウェアで、あるいは或る程度ハードウェアで、実現されることができる。この柔軟性は、メインフレーム・コンピュータおよびＰＤＡのために種々のＪａｖａ（Ｒ）仮想マシンを設計することを可能にする。
【００３６】
Ｊａｖａ（Ｒ）仮想マシンは、実際にＪａｖａ（Ｒ）プログラムを実行する仮想コンピュータ・コンポーネントの名称である。Ｊａｖａ（Ｒ）プログラムは、中央プロセッサによって直接実行されるのではなくて、それ自体が該プロセッサ上で動作する１つのソフトウェアであるＪａｖａ（Ｒ）仮想マシンにより実行される。Ｊａｖａ（Ｒ）仮想マシンは、該コードがそれ向けにコンパイルされた唯一のプラットフォームではなくて異なるプラットフォーム上でＪａｖａ（Ｒ）プログラムを実行することを可能にする。Ｊａｖａ（Ｒ）プログラムは、Ｊａｖａ（Ｒ）仮想マシン向けにコンパイルされる。このようにして、Ｊａｖａ（Ｒ）は、多様な中央処理装置およびオペレーティング・システム・アーキテクチャを包含し得る多くのタイプのデータ処理システムのためのアプリケーションをサポートすることができる。Ｊａｖａ（Ｒ）アプリケーションがいろいろなタイプのデータ処理システム上で実行し得るように、コンパイラは、通例、アーキテクチャ中立のファイル・フォーマットを生成する。このコンパイルされたコードは、Ｊａｖａ（Ｒ）ランタイム・システムが存在するならば、多くのプロセッサ上で実行可能である。Ｊａｖａ（Ｒ）コンパイラは、特定のコンピュータ・アーキテクチャ向けではないバイトコード命令を生成する。バイトコードは、Ｊａｖａ（Ｒ）コンパイラにより生成されてＪａｖａ（Ｒ）インタープリタにより実行されるマシン非依存コードである。Ｊａｖａ（Ｒ）インタープリタは、１つまたは複数のバイトコードの復号と解釈とを交互に行うＪａｖａ（Ｒ）仮想マシンの部分である。これらのバイトコード命令は、どんなコンピュータでも容易に解釈でき、かつネイティブのマシン・コードに容易にオン・ザ・フライで翻訳されるように設計される。バイトコードは、ジャスト・イン・タイム（ｊｕｓｔ−ｉｎ−ｔｉｍｅ（ＪＩＴ））コンパイラによってネイティブ・コードに翻訳されることができる。
【００３７】
Ｊａｖａ（Ｒ）仮想マシンは、クラス・ファイルをロードし、それらの中のバイトコードを実行する。クラス・ファイルはＪａｖａ（Ｒ）仮想マシン内のクラス・ローダによってロードされる。クラス・ローダは、アプリケーションからのクラス・ファイルと、そのアプリケーションが必要とするＪａｖａ（Ｒ）アプリケーション・プログラミング・インターフェース（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ（ＡＰＩ））からのクラス・ファイルとをロードする。バイトコードを実行する実行エンジンは、プラットフォームおよびインプリメンテーションにより異なり得る。
【００３８】
１つのタイプのソフトウェア・ベースの実行エンジンはジャスト・イン・タイム・コンパイラである。このタイプの実行では、メソッドをジッティング（ｊｉｔｔｉｎｇ）することについての或るタイプの基準がうまく満たされると、メソッドのバイトコードはネイティブ・マシン・コードにコンパイルされる。該メソッドのためのネイティブ・マシン・コードはその後キャッシュされて、該メソッドが次に呼び出されると再使用される。実行エンジンは、Ｊａｖａ（Ｒ）バイトコードがネイティブ的に実行されるようにハードウェアで実現されてチップに埋め込まれることもできる。Ｊａｖａ（Ｒ）仮想マシンは、普通はバイトコードを解釈するけれども、Ｊａｖａ（Ｒ）仮想マシンは、バイトコードを実行するためにジャスト・イン・タイム・コンパイリングなどの他の手法を使用することもできる。
【００３９】
アプリケーションがプラットフォーム固有のオペレーティング・システム上のソフトウェアに実装されているＪａｖａ（Ｒ）仮想マシン上で実行されるとき、Ｊａｖａ（Ｒ）アプリケーションは、ネイティブ・メソッドを呼び出すことによってホスト・オペレーティング・システムとインタラクトすることができる。Ｊａｖａ（Ｒ）メソッドは、Ｊａｖａ（Ｒ）言語で書かれ、バイトコードにコンパイルされ、クラス・ファイルに格納される。ネイティブ・メソッドは、他の何らかの言語で書かれて特定のプロセッサのネイティブ・マシン・コードにコンパイルされる。ネイティブ・メソッドは、その正確な形がプラットフォーム固有である動的にリンクされるライブラリに格納される。
【００４０】
ここで図４を参照すると、一実施例に従うＪａｖａ（Ｒ）仮想マシンのブロック図が描かれている。Ｊａｖａ（Ｒ）仮想マシン（ＪＶＭ）４００は、完全修飾名を与えられた、クラスおよびインターフェースなどのタイプをロードするためのメカニズムであるクラス・ローダ・サブシステム４０２を含む。Ｊａｖａ（Ｒ）仮想マシン４００は、ランタイム・データ・エリア４０４、実行エンジン４０６、ネイティブ・メソッド・インターフェース４０８、およびメモリ・マネージメント４１０も包含している。実行エンジン４０６は、クラス・ローダ・サブシステム４０２によりロードされるクラスのメソッドに包含される命令を実行するためのメカニズムである。実行エンジン４０６は、例えば、Ｊａｖａ（Ｒ）インタープリタ４１２またはジャスト・イン・タイム・コンパイラ４１４であることができる。ネイティブ・メソッド・インターフェース４０８は、下にあるオペレーティング・システム内のリソースへのアクセスを可能にする。ネイティブ・メソッド・インターフェース４０８は、例えば、Ｊａｖａ（Ｒ）ネイティブ・インターフェース（Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ（ＪＮＩ））であることができる。
【００４１】
ランタイム・データ・エリア４０４は、ネイティブ・メソッド・スタック４１６、Ｊａｖａ（Ｒ）スタック４１８、ＰＣレジスタ４２０、メソッド・エリア４２２、およびヒープ４２４を包含する。これらの種々のデータ・エリアは、Ｊａｖａ（Ｒ）仮想マシンがプログラムを実行するために必要とするメモリの構成を表わす。
【００４２】
Ｊａｖａ（Ｒ）スタック４１８は、Ｊａｖａ（Ｒ）メソッドの呼び出しの状態を格納するために使用される。新しいスレッドが起動されるとき、Ｊａｖａ（Ｒ）仮想マシンは、そのスレッドのために新しいＪａｖａ（Ｒ）スタックを作成する。Ｊａｖａ（Ｒ）仮想マシンは、Ｊａｖａ（Ｒ）スタックに対して２つの操作だけを直接実行する。それは、フレームをプッシュしポップする。スレッドのＪａｖａ（Ｒ）スタックは、そのスレッドのためのＪａｖａ（Ｒ）メソッドの呼び出しの状態を記憶する。Ｊａｖａ（Ｒ）メソッドの呼び出しの状態は、そのローカル変数、それを呼び出すのに使われたパラメータ、もしあるならばその戻り値、および中間の計算を含む。Ｊａｖａ（Ｒ）スタックは、スタック・フレームから構成される。スタック・フレームは、単一のＪａｖａ（Ｒ）メソッドの呼び出しの状態を包含する。スレッドがメソッドを呼び出すとき、Ｊａｖａ（Ｒ）仮想マシンは新しいフレームを該スレッドのＪａｖａ（Ｒ）スタックにプッシュする。該メソッドが完了すると、Ｊａｖａ（Ｒ）仮想マシンはそのメソッドのためのフレームをポップし、それを廃棄する。Ｊａｖａ（Ｒ）仮想マシンは中間値を保持するためのレジスタを持っていない；中間値を必要としあるいは生じさせるＪａｖａ（Ｒ）命令は、その中間値を保持するために該スタックを使用する。このようにして、Ｊａｖａ（Ｒ）命令セットは、いろいろなプラットフォーム・アーキテクチャのために明確に定義される。
【００４３】
プログラム・カウンタ（ｐｒｏｇｒａｍ  ｃｏｕｎｔｅｒ（ＰＣ））レジスタ４２０は、次に実行されるべき命令を示すために使用される。各々のインスタンス化されたスレッドは、それ自身のＰＣレジスタおよびＪａｖａ（Ｒ）スタックを得る。もし該スレッドがＪａｖａ（Ｒ）仮想マシン・メソッドを実行しているならば、該ＰＣレジスタの値は次に実行するべき命令を示す。もし該スレッドがネイティブ・メソッドを実行しているならば、該ＰＣレジスタの内容は不定である。
【００４４】
ネイティブ・メソッド・スタック４１６は、ネイティブ・メソッドの呼び出しの状態を記憶する。ネイティブ・メソッドの呼び出しの状態は、ネイティブ・メソッド・スタック、レジスタ、または他のインプリメンテーション依存のメモリ・エリアにインプリメンテーション依存の仕方で格納される。或るＪａｖａ（Ｒ）仮想マシン・インプリメンテーションでは、ネイティブ・メソッド・スタック４１６とＪａｖａ（Ｒ）スタック４１８とは結合される。
【００４５】
メソッド・エリア４２２はクラス・データを包含し、ヒープ４２４は全てのインスタンス化されたオブジェクトを包含する。定数プールは、これらの例ではメソッド・エリア４２２に置かれる。Ｊａｖａ（Ｒ）仮想マシン仕様は、データ・タイプおよび操作を厳密に定義する。大抵のＪａｖａ（Ｒ）仮想マシンは１つのメソッド・エリアおよび１つのヒープを持つことを選択し、その各々は、Ｊａｖａ（Ｒ）仮想マシン４００などのＪａｖａ（Ｒ）仮想マシンの中で動作する全てのスレッドにより共有される。Ｊａｖａ（Ｒ）仮想マシン４００は、クラス・ファイルをロードするとき、該クラス・ファイルに包含されているバイナリ・データからタイプに関する情報を構文解析する。Ｊａｖａ（Ｒ）仮想マシン４００は、このタイプの情報をメソッド・エリアに入れる。クラス・インスタンスまたはアレイが作成されるたびに、新しいオブジェクトのためのメモリはヒープ４２４から割り当てられる。Ｊａｖａ（Ｒ）仮想マシン４００は、ヒープ４２４のためにメモリの中のメモリ・スペースを割り当てる命令を含むけれども、メモリの中のそのスペースを解放するための命令を含んでいない。描かれている例においてメモリ・マネージメント４１０は、ヒープ４２４に割り当てられたメモリの中のメモリ・スペースを管理する。メモリ・マネージメント４１０はガーベージ・コレクタを含むことができ、それは、最早参照されないオブジェクトにより使用されているメモリを自動的に解放する。さらに、ガーベージ・コレクタは、ヒープの断片化を減少させるためにオブジェクトを移動させることもできる。
【００４６】
本出願の実施例は、システムのランタイム環境を構築するためのコンピュータ実行方法、有形の記憶媒体、およびデータ処理システムを記述する。プロファイル・マネージャは、プロファイル識別子を包含するサービス要求を受け取る。該プロファイル識別子は、少なくとも１つのソフトウェア・コンポーネントの必要とされるバージョンを指定する。該プロファイル・マネージャは、そのソフトウェア・コンポーネントの完全なインストレーションと、少なくとも１つのデルタ・ファイルとを特定する。該プロファイル・マネージャは、該少なくとも１つのデルタ・ファイルからのファイルと、それらに続く、該完全なインストレーションからのファイルとを優先的に利用することによって、該必要とされるバージョンのためのクラスパスを動的に構築する。ランタイム環境は、その後、該クラスパスを利用して構築される。
【００４７】
実施例は、アプリケーション／プロファイルがランタイム中にランタイム環境バージョンを選択するためのコンピュータ実行方法、システムおよびコンピュータ・プログラム製品を提供する。一実施例では、エンタープライズ・アプリケーション・サーバ・フィックス・パック・アップグレードは、仮想インストレーションのように機能し、該エンタープライズ・アプリケーション・サーバ・バージョンを全体としてはアップグレードしない。代わりに、アプリケーション・スタートアップまたはプロファイル・スタートアップ段階の間にどちらのバージョンも選択され得るように、アップグレード後に現在のバージョンとより新しいバージョンとの両方がシステムに存在するべきである。
【００４８】
１つのさらなる実施例では、ベース・バージョンとアップグレードされたバージョンとを含む種々のランタイム・バージョンがシステムにおいて維持されて、ランタイム選択に基づいて動的にロードされる。
【００４９】
ここで図５を参照すると、データ処理システムのＪａｖａ（Ｒ）仮想マシンにプロファイルを供給するための既知のデータフロー図が描かれている。Ｊａｖａ（Ｒ）仮想マシン５１０は、図４のＪａｖａ（Ｒ）仮想マシン４００などのＪａｖａ（Ｒ）仮想マシンである。Ｊａｖａ（Ｒ）仮想マシン５１０は、エンタープライズ・アプリケーション・サーバの種々のバージョンを同じマシンの別々のプロファイルにおいて、その別々のプロファイルの各々のために完全なインストレーションを維持することによって、インストールし維持する。
【００５０】
Ｊａｖａ（Ｒ）仮想マシン５１０はアプリケーション・サーバ５１２−５１６を包含する。アプリケーション・サーバ５１２−５１６は、Ｊａｖａ（Ｒ）仮想マシン５１０のアプリケーションが実際にそこで実行するところの主要なランタイム・コンポーネントである。
【００５１】
アプリケーション・サーバ５１２−５１６の各々は、Ｊａｖａ（Ｒ）仮想マシン・インスタンス５１８−５２２の１つを実行する。Ｊａｖａ（Ｒ）仮想マシン・インスタンス５１８−５２２は、Ｊａｖａ（Ｒ）仮想マシン５１０の中のクラス・インスタンスである。Ｊａｖａ（Ｒ）仮想マシン・インスタンス５１８−５２２の幾つかは、それらのインスタンスがアプリケーション・サーバ５１２−５１６などの別々のアプリケーション・サーバに各々包含される限り、Ｊａｖａ（Ｒ）仮想マシン５１０の中で別々に実行することができる。
【００５２】
Ｊａｖａ（Ｒ）仮想マシン・インスタンス５１８−５２２は、プロファイル・データベース５３０に格納されているプロファイル５２４−５２８の１つを用いて作成される。プロファイル・データベース５２９は、プロファイル５２４−５２８の位置を包含しあるいは参照する、図１の記憶単位１０８などの、記憶単位上に実現されるデータ構造である。プロファイル５２４−５２８は、ディプロイメント・マネージャまたはアプリケーション・サーバなどの、アプリケーション・サーバ・プロセスのためのランタイム環境を定義するファイルを含む別々のデータ・パーティションである。各ランタイム環境は、それ自身の構成ファイル、ログ、プロパティおよび他の属性を有する。プロファイル５２４−５２８は、アプリケーション・サーバ５１２−５１６の各ランタイムを一意で、かつサーバ・バイナリおよび他のプロファイルとは異なるものとすることができる。
【００５３】
各プロファイル５２４−５２８は、該プロファイルが作成されるときに利用し得るどのソフトウェア・パッチおよびアップデートをも含む、完全なエンタープライズ・アプリケーション・サーバ・インストレーションである。プロファイル５２４−５２８の１つがパッチされあるいは更新されるたびに、新しい、別のプロファイルが作成される。従って、一実施例では、プロファイル５２４は、エンタープライズ・アプリケーション・サーバのマイルストーン・リリースの完全なインストレーションである。プロファイル５２６は、エンタープライズ・アプリケーション・サーバの完全なインストレーションである。プロファイル５２６は、プロファイル５２４のパッチされたバージョンでもある。プロファイル５２８は、エンタープライズ・アプリケーション・サーバの完全なインストレーションである。プロファイル５２８は、プロファイル５２６のパッチされたバージョンでもある。
【００５４】
Ｊａｖａ（Ｒ）仮想マシン５１０がサービス要求５３０を受け取ると、プロファイル・マネージャ５３２はプロファイル識別子５３４を認識する。プロファイル識別子５３４は、その要求を満たすためにエンタープライズ・アプリケーション・サーバのどのバージョンが使用されるべきであるか、従って、Ｊａｖａ（Ｒ）仮想マシン・インスタンス５１８−５２２の１つなどの特定のインスタンスを作成するときにプロファイル５２４−５２８のいずれが利用されるべきか、の表示である。プロファイル・マネージャ５３２は、その後、プロファイル５２４−５２８の表示された１つを取り出し、その取り出したプロファイルを、アプリケーション・サーバ５１２−５１６のうちの、該インスタンスを実行する１つに割り当てる。
【００５５】
ここで図６を参照すると、一実施例に従うデータ処理システムのＪａｖａ（Ｒ）仮想マシンにプロファイルを供給するためのデータフロー図が示されている。Ｊａｖａ（Ｒ）仮想マシン６１０は、図４のＪａｖａ（Ｒ）仮想マシン４００などのＪａｖａ（Ｒ）仮想マシンである。Ｊａｖａ（Ｒ）仮想マシン６１０は、エンタープライズ・アプリケーション・サーバの種々のバージョンを、そして同じマシンに別々のプロファイルを、その別々のプロファイルの各々のためにデルタ・ファイルを維持することにより、インストールし維持する。
【００５６】
Ｊａｖａ（Ｒ）仮想マシン６１０は、アプリケーション・サーバ６１２−６１６を包含する。アプリケーション・サーバ６１２−６１６は、Ｊａｖａ（Ｒ）仮想マシン６１０のアプリケーションが実際にそこで実行するところの主要なランタイム・コンポーネントである。
【００５７】
アプリケーション・サーバ６１２−６１６の各々は、Ｊａｖａ（Ｒ）仮想マシン・インスタンス６１８−６２２の１つを実行する。Ｊａｖａ（Ｒ）仮想マシン・インスタンス６１８−６２２は、Ｊａｖａ（Ｒ）仮想マシン６１０の中のクラス・インスタンスである。Ｊａｖａ（Ｒ）仮想マシン・インスタンス６１８−６２２の幾つかは、それらのインスタンスがアプリケーション・サーバ６１２−６１６などの別々のアプリケーション・サーバにそれぞれ包含されている限り、Ｊａｖａ（Ｒ）仮想マシン６１０の中で別々に実行することができる。
【００５８】
Ｊａｖａ（Ｒ）仮想マシン・インスタンス６１８−６２２は、プロファイル・データベース６３１に格納されているプロファイルの１つ６２４と、デルタ・ファイル６２６−６３０の１つ以上とを用いて作成される。プロファイル・データベース６３１は、プロファイル６２４の位置を包含しあるいは参照する、図１の記憶単位１０８などの記憶単位において実現されるデータ構造である。プロファイル６２４は、ディプロイメント・マネージャまたはアプリケーション・サーバなどの、アプリケーション・サーバ・プロセスのためのランタイム環境を定義するファイルを含む独立のデータ・パーティションである。各ランタイム環境は、それ自身の構成ファイル、ログ、プロパティ、および他の属性を有する。プロファイル６２４は、アプリケーション・サーバ６１２−６１６の各ランタイムを一意で、かつサーバ・バイナリおよび他のプロファイルとは異なるものとすることができる。
【００５９】
プロファイル６２４は、完全なエンタープライズ・アプリケーション・サーバ・インストレーションである。図５のプロファイル５２４−５２８とは違って、プロファイル６２４は、該プロファイルが作成されるときに利用し得るどのソフトウェア・パッチおよびアップデートも含まない。一実施例ではプロファイル６２４は、エンタープライズ・アプリケーション・サーバのマイルストーン・リリースの完全なインストレーションである。
【００６０】
デルタ・ファイル６２６−６３０は、プロファイル６２４などのベース・プロファイルに対する変更、あるいはデルタ・ファイル６２６−６３０のうちの他のものなどの、以前のデルタ・ファイルに対する変更を含むファイルである。プロファイル６２４に対して用いられるべきソフトウェア・パッチまたはアップデートに関しては、プロファイル６２４に対して行われるべき変更は初めはプロファイル６２４に対して用いられずに、デルタ・ファイル６２６−６３０の１つとして保存される。
【００６１】
一実施例では、デルタ・ファイル６２６−６３０の各々は、プロファイル６２４に対して行われるべき変更を包含するソフトウェア・パッチまたはアップデートである。プロファイル６２４がアプリケーション・サーバ６１２−６１６の１つに動的にロードされるとき、クラスパスは、始めは特定されたデルタ・ファイル６２６−６３０からのファイルで、次にはベース・プロファイル６２４からのファイルで、構築される。
【００６２】
一実施例では、デルタ・ファイル６２６−６３０の各々は、デルタ・ファイル６２６−６３０のうちの以前の１つにより改変されたプロファイル６２４に対して行われるべき変更を包含するシーケンシャルなソフトウェア・パッチまたはアップデートである。例えば、それに限定はされないけれども、デルタ・ファイル６２６は、デルタ・ファイル６２６のソフトウェア・パッチまたはアップデートがプロファイル６２４に対して直接用いられるべきであるような、プロファイル６２４に対する第１アップデートであり得る。デルタ・ファイル６２８は、デルタ・ファイル６２８のソフトウェア・パッチまたはアップデートが、デルタ・ファイル６２６により改変されたプロファイル６２４に対して用いられるべきであるような、プロファイル６２４に対する次のアップデートであり得る。デルタ・ファイル６３０は、デルタ・ファイル６２８のソフトウェア・パッチまたはアップデートが、デルタ・ファイル６２６およびデルタ・ファイル６２８の両方により改変されたプロファイル６２４に対して用いられるべきであるような、プロファイル６２４に対するさらなる次のアップデートであり得る。従って、もしサービス要求６３２がデルタ・ファイル６２６−６３０の各々を含むプロファイル・バージョンを特定するならば、クラスパスは、始めにデルタ・ファイル６３０からのファイルで、次にデルタ・ファイル６２８からのファイルで、次にデルタ・ファイル６２６からのファイルで、次にベース・プロファイル６２４からのファイルで構築される。
【００６３】
Ｊａｖａ（Ｒ）仮想マシン６１０がサービス要求６３２を受け取ると、プロファイル・マネージャ６３４はプロファイル識別子６３６を認識する。プロファイル識別子６３６は、その要求を満たすためにエンタープライズ・アプリケーション・サーバのどのバージョンが使用されるべきであるか、従って、Ｊａｖａ（Ｒ）仮想マシン・インスタンス６１８−６２２の１つなどの特定のインスタンスを作成するときにプロファイル６２４とともにデルタ・ファイル６２６−６３０のいずれが利用されるべきか、の表示である。プロファイル・マネージャ６３４は、その後、プロファイル６２４とともにデルタ・ファイル６２６−６３０のうちの表示されたものを取り出し、その取り出したプロファイルを、アプリケーション・サーバ６１２−６１６のうちの、該インスタンスを実行する１つに割り当てる。
【００６４】
実施例は、アプリケーション／プロファイルがランタイム中にランタイム環境のバージョンを選択するためのコンピュータ実行方法、システムおよびコンピュータ・プログラム製品を提供する。一実施例では、エンタープライズ・アプリケーション・サーバ・フィックス・パック・アップグレードは、仮想インストレーションのように機能し、該エンタープライズ・アプリケーション・サーバ・バージョンを全体としてはアップグレードしない。代わりに、アプリケーションのスタートアップまたはプロファイルのスタートアップ段階の間にどちらのバージョンでも選択され得るように、アップグレード後に現在のバージョンとより新しいバージョンとの両方がシステムに存在するべきである。
【００６５】
１つのさらなる実施例では、ベース・バージョンとアップグレードされたバージョンとを含む種々のランタイム・バージョンがシステムにおいて維持されて、ランタイム選択に基づいて動的にロードされる。
【００６６】
ここで図７を参照すると、従来技術に従うエンタープライズ・アプリケーション・サーバのファイル・システム構造を概略的に示すブロック図が示されている。ファイル構造７００は、ランタイム・ファイルのベース・バージョンと他の多数の完全なインストレーションとがエンタープライズ・アプリケーション・サーバのホーム・ディレクトリにおいて維持され得るＥＡＳのファイル・システム構造の構成である。ファイル構造７００は、図５のプロファイル５２４−５２８などのプロファイルを包含するファイル・システムの概略的表示である。
【００６７】
ファイル構造７００はホーム・ディレクトリ７０２を含む。ホーム・ディレクトリ７０２は、例えば、それに限定されないけれども、エンタープライズ・アプリケーション・サーバがＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）アプリケーション・サーバであるときには￥ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）￥ＡｐｐＳｅｒｖｅｒ  ＷＡＳ＿ＨＯＭＥディレクトリであり得る。ＷｅｂＳｐｈｅｒｅはＩＢＭ社の登録商標である。￥プロファイル・ディレクトリは種々のプロファイルをリストしているけれども、ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）の他のディレクトリおよびファイル、例えば、Ｊａｖａ（Ｒ）ディレクトリ７０４、ｌｉｂディレクトリ７０６、プラグイン・ディレクトリ７０８およびプロパティ・ファイル７１０、は全てＷＡＳ＿ＨＯＭＥレベルにある。エンタープライズ・アプリケーション・サーバに対するアップグレードが、例えば、バージョン６．１．０．０からバージョン６．１．０．２５へのアップグレードのために、行われるときには、ファイルの各々、例えば、Ｊａｖａ（Ｒ）ディレクトリ７０４、ｌｉｂディレクトリ７０６、プラグイン・ディレクトリ７０８およびプロパティ・ファイル７１０の中のファイル、は全て該アップグレードを反映するように変更される。
【００６８】
もしエンタープライズ・アプリケーション・サーバに対するアップグレードが異なるファイル名として保存されるならば、ファイル構造７００は、アップグレードされたエンタープライズ・アプリケーション・サーバとオリジナルのエンタープライズ・アプリケーション・サーバとの両方の完全なコピーを維持することができる。エンタープライズ・アプリケーション・サーバに対するアップグレードが異なるファイル名として保存されないのであれば、エンタープライズ・アプリケーション・サーバのオリジナルのバージョンのためのファイルは取って代わられて失われる。
【００６９】
ここで図８を参照すると、一実施例に従うエンタープライズ・アプリケーション・サーバのファイル・システム構造を概略的に示すブロック図が示されている。ファイル構造８００は、ランタイム・ファイルのベース・バージョンと他の多数の完全なインストレーションとがエンタープライズ・アプリケーション・サーバのホーム・ディレクトリにおいて維持され得るエンタープライズ・アプリケーション・サーバのファイル・システム構造の構成である。ファイル構造８００は、図６のプロファイル６２４およびデルタ・ファイル６２６−６３０などのプロファイルおよびデルタ・ファイルを包含するファイル・システムの概略的表示である。
【００７０】
ファイル構造８００はホーム・ディレクトリ８０２を包含する。ホーム・ディレクトリ８０２は、例えば、それに限定されないけれども、エンタープライズ・アプリケーション・サーバがＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）アプリケーション・サーバであるときには￥ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）￥ＡｐｐＳｅｒｖｅｒ  ＷＡＳ＿ＨＯＭＥディレクトリであり得る。ＷｅｂＳｐｈｅｒｅはＩＢＭ社の登録商標である。
【００７１】
ホーム・ディレクトリ８０２は当初はバージョン・サブディレクトリ８０４を包含する。インストールされるエンタープライズ・アプリケーション・サーバの各パッチまたはソフトウェア・アップグレードについて、新しいバージョンのサブディレクトリがホーム・ディレクトリ８０２に加えられる。ホーム・ディレクトリ８０２は、種々のプロファイルをリストする。種々のプロファイルの各々は、エンタープライズ・アプリケーション・サーバの他のファイル、例えば、Ｊａｖａ（Ｒ）ディレクトリ８０６、ｌｉｂディレクトリ８０８、プラグイン・ディレクトリ８１０およびプロパティ・ファイル８１２、を含む。その他のファイルは、ＷＡＳ＿ＨＯＭＥ￥Ｖｅｒｓｉｏｎ＿ｂａｓｅ＿６．１．０．０レベルにインストールされる。
【００７２】
エンタープライズ・アプリケーション・サーバに対するアップグレードが行われるとき、新しいバージョンのサブディレクトリ８１４が作成される。例えば、バージョン６．１．０．０からバージョン６．１．０．２５へのアップグレードでは、バージョン６．１．０．０およびバージョン６．１．０．２５の両方がファイル・システムの中に格納されるように、ランタイム・ディレクトリ・ファイル、例えば、それらに限定はされないが、Ｊａｖａ（Ｒ）ディレクトリ８１６、ｌｉｂディレクトリ８１８、プラグイン・ディレクトリ８２０、およびプロパティ・ファイル８２２など、を包含するように￥ｖｅｒｓｉｏｎ＿ｂａｓｅ６．１．０．０ディレクトリが加えられる。
【００７３】
一実施例では、ランタイム・ディレクトリ・ファイル、例えば、それらに限定はされないが、Ｊａｖａ（Ｒ）ディレクトリ８１６、ｌｉｂディレクトリ８１８、プラグイン・ディレクトリ８２０、およびプロパティ・ファイル８２２など、は図６のデルタ・ファイル６２４−６２８の１つなどのデルタ・ファイルである。ランタイム・ディレクトリ・ファイル、例えば、それらに限定はされないが、Ｊａｖａ（Ｒ）ディレクトリ８１６、ｌｉｂディレクトリ８１８、プラグイン・ディレクトリ８２０、およびプロパティ・ファイル８２２など、はエンタープライズ・アプリケーション・サーバに対する以前のＪａｖａ（Ｒ）ディレクトリ８０６、ｌｉｂディレクトリ８０８、プラグイン・ディレクトリ８１０およびプロパティ・ファイル８１２からの変更である。
【００７４】
フィックスパック、パッチ、またはアップグレードがエンタープライズ・アプリケーション・サーバに対して用いられるとき、該フィックスパック、パッチ、またはアップグレードは“マイルストーン・アップグレード”またはノン−マイルストーン・”アップグレードであり得る。“マイルストーン”アップグレードが選択されるならば、ファイルの更新されたセットを包含する新しい￥ｖｅｒｓｉｏｎ＿ｄｅｌｔａ＿６．１．０．２５が作成される。例えば、バージョン６．１．０．０からバージョン６．１．０．２５へアップグレードするためには、バージョン６．１．０．０のランタイム・ディレクトリ・ファイルのためのデルタ・ファイル、例えば、Ｊａｖａ（Ｒ）ディレクトリ８１６、ｌｉｂディレクトリ８１８、プラグイン・ディレクトリ８２０、およびプロパティ・ファイル８２２、は新しいバージョン・サブディレクトリ８１４に格納される。
【００７５】
ノン−マイルストーン・インストレーションは、エンタープライズ・アプリケーション・サーバのファイルおよびディレクトリの全てを包含する完全なバージョン・レベルの完全なインストレーションである。ノン−マイルストーン・インストレーションでは、エンタープライズ・アプリケーション・サーバ・システム全体がより新しいバージョンにアップグレードされる。対照的に、マイルストーン・インストレーションは、１つ以上の他のインストレーション・ディレクトリおよびおそらく少なくとも１つの完全なベース・プロファイル／インストレーション・ディレクトリに依存するバージョン・レベルの部分的インストレーションである。マイルストーン・インストレーションでは、旧ファイル・バージョンおよび新ファイル・バージョンが保存される。新ファイル・バージョンは、図６のデルタ・ファイル６２６−６３０の１つなどのデルタ・ファイルとして格納される。
【００７６】
“ノン−マイルストーン”アップグレードが選択される場合に、アップグレードが行われると、ランタイム・ディレクトリ・ファイルは、アップグレードされたバージョンだけがファイル構造の中に存在するように単に上書きされる。
【００７７】
図６のアプリケーション・サーバ６１２−６１６の１つなどのアプリケーション・サーバが起動されるとき、Ｊａｖａ（Ｒ）仮想マシン・インスタンスは適切なプロファイルで起動される。仮想マシン・インスタンスのためのクラスパスが構築され、始めはｖｅｒｓｉｏｎ＿ｄｅｌｔａ＿６．１．０．２５からのファイルを、次にｖｅｒｓｉｏｎ＿ｂａｓｅ＿６．１．０．０からのファイルを包含する。幾つかの状態データ・ファイル、例えばプロパティ・サブディレクトリ内のもの、は、矛盾しないよう、必要ならば全体が複製され得る。特定のプロファイルが特定のデルタ・ファイルと組み合わされて起動され得る。エンタープライズ・アプリケーション・サーバ・ランタイムは、ベース・ファイルで、あるいは場合によっては他のデルタ・ファイルで、バックフィルされる。
【００７８】
このようにして、エンタープライズ・アプリケーション・サーバの以前のバージョン上でも、後のバージョン上でも、全ファイルを完全にコピーすることを必要とせずにプロファイルを実行する能力が維持される。
【００７９】
図９は、一実施例に従うエンタープライズ・アプリケーション・サーバのアップグレード、パッチ、またはフィックスパックのインストレーションを概略的に示すブロック図である。プロセス９００は、図６のプロファイル・マネージャ６３４などのソフトウェア・コンポーネント上で実行するソフトウェア・プロセスである。
【００８０】
プロセス９００は、アップグレードされたバージョンをインストールするためにインストーラを起動することにより始まる（ステップ９０２）。そのアップグレードがマイルストーン・アップグレードであるかが判定される（ステップ９０４）。該アップグレードはマイルストーン・アップグレードであるという判定に応答して（ステップ９０４のイエス出力）、該アップグレードは、該アップグレードにより更新されるファイルの全ての以前のバージョンを維持しながらインストールされる（ステップ９０６）。該アップグレードはマイルストーン・アップグレードではないという判定に応答して（ステップ９０４のノー出力）、該アップグレードは、以前のバージョンのためのファイルをアップグレード済みバージョンのためのファイルに替えることによってＷＡＳのシステム全体がアップグレードされるように、インストールされる（ステップ９０８）。
【００８１】
図１０は、一実施例に従ってランタイム環境によりシステムのバージョンを選択する方法を概略的に示すフローチャートである。プロセス１０００は、図６のプロファイル・マネージャ６３４などの、ソフトウェア・プロセス上で実行するソフトウェア方法である。プロセス１０００は、クラスタ内の各ノードが同じアップデート・インストーラ・パッケージをインストールされていること、および、それらのパッケージが無矛盾の仕方でインストールされたということを想定する。従って、もし既存のプロファイル・ツールがプロファイルとランタイムとの間の関連付けを更新するために拡張され、かつノード・エージェントを用いて全ノードにプッシュアウトされるならば、この関連付けは容易に行われ得る。該関連付けを格納するために、ファイル、例えば、プロファイル￥ＡｐｐＳｒｖ０１￥ｃｏｎｆｉｇ￥ｃｅｌｌｓ￥ｃｅｌｌＮａｍｅ￥ｎｏｄｅｓ￥ｎｏｄｅＮａｍｅ￥ｒｕｎｔｉｍｅ  ｖｅｒｓｉｏｎ．ｘｍｌ内のファイル、が導入され得る。
【００８２】
プロセス１０００は、プロファイルを起動することにより始まる（ステップ１００２）。プロセス１０００は、ユーザ・インターフェースが特定のバージョン・レベルでプロファイルとランタイム・サーバ・インスタンスとの間の関連付けをセットアップすることを可能にする（ステップ１００４）。
【００８３】
プロセス１０００は、要求を満たすためにエンタープライズ・アプリケーション・サーバのどのバージョンが使用されるべきかを特定する（ステップ１００６）。プロセス１０００は、その特定を、図６のプロファイル識別子６３６などのプロファイル識別子に基づいて行う。選択されたバージョンからのファイルを包含するクラスパスが構築され、以前のバージョンからの任意の必要なファイルでバックフィルされる（ステップ１００８）。例えば、バージョン６．１．０．２５がプロファイル識別子により示される。その後、バージョン６．１．０．２５をバージョン６．１．０．２５に包含されていない任意の必要なファイルでバックフィルするためにバージョン−ベース−６．１．０．０が使用される。必要とされたバージョンが起動され（ステップ１０１０）、その後、該プロセスは終了する。
【００８４】
このように、実施例は、システムのランタイム環境を構築するためのコンピュータ実行方法、有形記憶媒体、およびデータ処理システムを提供する。プロファイル・マネージャは、プロファイル識別子を包含するサービス要求を受け取る。プロファイル識別子は、少なくとも１つのソフトウェア・コンポーネントの必要とされるバージョンを指定する。プロファイル・マネージャは、該ソフトウェア・コンポーネントの完全なインストレーションと、少なくとも１つのデルタ・ファイルとを特定する。プロファイル・マネージャは、その少なくとも１つのデルタ・ファイルからのファイルと、それらに続く、該完全なインストレーションからのファイルとを優先的に利用することによって、該必要とされるバージョンのためのクラスパスを動的に構築する。ランタイム環境は、その後、そのクラスパスを利用して構築される。
【００８５】
実施例は、アプリケーション／プロファイルがランタイム中にランタイム環境のバージョンを選択するためのコンピュータ実行方法、システムおよびコンピュータ・プログラム製品を提供する。一実施例では、エンタープライズ・アプリケーション・サーバ・フィックス・パックのアップグレードは、仮想インストレーションのように機能し、エンタープライズ・アプリケーション・サーバのバージョンを全体としてはアップグレードしない。代わりに、アプリケーション・スタートアップまたはプロファイル・スタートアップ段階の間にどちらのバージョンも選択され得るように、アップグレード後に現在のバージョンとより新しいバージョンとの両方がシステムに存在するべきである。
【００８６】
別の１つの実施例では、ベース・バージョンとアップグレードされたバージョンとを含む種々のランタイム・バージョンがシステムにおいて維持されて、ランタイム選択に基づいて動的にロードされる。
【００８７】
プロファイルのランタイム環境へのマッチングは、プロファイル・マネージャ・ツールによって、あるいは該プロファイルの頂部の何らかのディプロイメント記述子を編集することによって、行われることができる。ノード・クラスタの各ノード上の対応するプロファイルは、クラスタの各ノード上の対応するランタイム・バージョンにマッチングされなければならないかもしれない。
【００８８】
図面中のフローチャートおよびブロック図は、本発明の種々の実施態様に従うシステム、方法およびコンピュータ・プログラム製品の可能なインプリメンテーションのアーキテクチャ、機能性、および動作を示す。これに関して、該フローチャートまたはブロック図中の各ブロックは、指定された論理機能（１つまたは複数）を実行するための１つ以上の実行可能な命令を含むコードのモジュール、セグメント、または部分を表わすことができる。或る代わりのインプリメンテーションでは、ブロック中に記されている機能は図に記されている順序から外れて生じ得ることにも留意するべきである。例えば、連続して示されている２つのブロックは、実際には、実質的に同時に実行されることがあり、あるいは、それらのブロックは、ときには、関係する機能性に依存して逆の順序で実行されることがある。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、指定された機能または行為を実行する特殊目的ハードウェア・ベースのシステムにより、あるいは特殊目的ハードウェアおよびコンピュータ命令の組み合わせにより、実行され得ることにも留意するべきである。
【００８９】
ここで使用されている術語は、特定の実施態様だけを記述することを目的としているのであって、本発明を限定するべく意図されているのではない。さらに、“含む”という用語は、この明細書で使用されるとき、述べられた機能、インテジャー、ステップ、操作、エレメント、またはコンポーネントあるいはそれらのうちの組み合わせの存在を明示するけれども、１つ以上の他の機能、インテジャー、ステップ、操作、エレメント、コンポーネントまたはそれらのグループあるいはそれらの組み合わせの存在または付加を除外しないことが理解されるであろう。
【００９０】
添付の請求項の中の全ての手段またはステッププラス・ファンクションの要素の対応する構造、材料、行為、および同等物は、請求項において明示された他の要素と組み合わされた機能を実行するための任意の構造、材料、または行為を含むように意図されている。本発明の記述は、解説および記述を目的として提示されているが、網羅的であることあるいは開示された形の発明に限定されることは意図されていない。本発明の範囲を逸脱しない多くの改変および変化形が、当業者にとっては明らかであろう。実施態様は、本発明の原理および実際的応用を最善に説明するとともに、熟慮されている特定の使用法に適する種々の改変を伴う種々の実施態様について他の当業者が本発明を理解することを可能にするために選択され記述された。
【００９１】
本発明は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様あるいはハードウェア要素およびソフトウェア要素の両方を包含する実施態様の形をとることができる。１つの好ましい実施態様では、本発明はソフトウェアで実現され、それはファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されない。
【００９２】
さらに、本発明は、コンピュータまたは任意の命令実行システムにより、あるいはそれらと関連して、使用されるプログラム・コードを提供するコンピュータ使用可能なあるいはコンピュータ可読の媒体からアクセスし得るコンピュータ・プログラム製品の形をとることができる。この記述の目的上、コンピュータ使用可能なあるいはコンピュータ可読の媒体は、命令実行システム、装置、またはデバイスにより、あるいはこれらと関連して、使用されるプログラムを包含し、記憶し、伝達し、伝播し、あるいは移送することのできる任意の有形装置であり得る。
【００９３】
媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム（あるいは装置またはデバイス）、あるいは伝播媒体であり得る。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＲＡＭ））、読み出し専用メモリ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＲＯＭ））、堅固な磁気ディスクおよび光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−読み出し専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ））、コンパクト・ディスク−読出し／書き込み（ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ（ＣＤ−Ｒ／Ｗ））およびＤＶＤを含む。
【００９４】
プログラム・コードの記憶または実行あるいはその両方を行うのに適するデータ処理システムは、システム・バスを通して記憶素子に直接あるいは間接的に接続された少なくとも１つのプロセッサを含むであろう。記憶素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、および、実行中にコードを大容量記憶装置から取り出さなければならない回数を減らすために少なくとも幾らかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリを含むことができる。
【００９５】
入力／出力装置あるいはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらに限定されない）は、直接、あるいは中間のＩ／Ｏコントローラを通して、システムに接続され得る。
【００９６】
中間の構内ネットワークまたは公衆網を通してデータ処理システムを他のデータ処理システムまたは遠隔プリンタまたは記憶装置に接続できるようにネットワーク・アダプタをシステムに接続させることもできる。モデム、ケーブル・モデムおよびイーサネット（Ｒ）・カードは、現在利用できるタイプのネットワーク・アダプタのほんの幾つかである。
【００９７】
本発明の記述は、解説および記述を目的として提示されているが、網羅的であることあるいは開示された形の発明に限定されることは意図されていない。多くの改変および変化形が、当業者にとっては明らかであろう。実施態様は、本発明の原理および実際的応用を最善に説明するとともに、熟慮されている特定の使用法に適する種々の改変を伴う種々の実施態様について他の当業者が本発明を理解することを可能にするために選択され記述された。
【図１】
0005663006.tif 000002
【図２】
0005663006.tif 000003
【図３】
0005663006.tif 000004
【図４】
0005663006.tif 000005
【図５】
0005663006.tif 000006
【図６】
0005663006.tif 000007
【図７】
0005663006.tif 000008
【図８】
0005663006.tif 000009
【図９】
0005663006.tif 000010
【図１０】
0005663006.tif 000011