JP5663006B2 - ランタイム環境を構築するためのシステムおよび方法 - Google Patents

ランタイム環境を構築するためのシステムおよび方法 Download PDF

Info

Publication number
JP5663006B2
JP5663006B2 JP2012510271A JP2012510271A JP5663006B2 JP 5663006 B2 JP5663006 B2 JP 5663006B2 JP 2012510271 A JP2012510271 A JP 2012510271A JP 2012510271 A JP2012510271 A JP 2012510271A JP 5663006 B2 JP5663006 B2 JP 5663006B2
Authority
JP
Japan
Prior art keywords
java
version
files
file
profile
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012510271A
Other languages
English (en)
Other versions
JP2012527027A (ja
Inventor
シャンムガム、ダーンダパニ
ブルサード、スコット
ガラガリ、プラード、ダラヴァラジ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012527027A publication Critical patent/JP2012527027A/ja
Application granted granted Critical
Publication of JP5663006B2 publication Critical patent/JP5663006B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明は、一般的にはデータ処理分野に関し、特に、少なくとも1つのソフトウェア・コンポーネントの複数の異なるバージョンを包含するシステムのランタイム環境を構築するためのコンピュータ実行方法、装置およびコンピュータ・プログラム製品に関する。
生産システムにおけるエンタープライズ・アプリケーション・サーバ(enterprise application server(EAS))が更新されるとき、大抵のフィックス・パック・インストレーション・ソフトウェアはエンタープライズ・アプリケーション・サーバ全体を完全にアップグレードする。特に、全てのプロファイルまたはサーバ・ランタイムは最新のフィックス・パック・バージョンにアップグレードされて全て同じエンタープライズ・アプリケーション・サーバ・フィックス・パック・レベルで動作する。様々のフィックス・パック・バージョンを同じマシンにインストールして維持するための備えは無い。
例えば、IBM(IBM社の登録商標)WebSphere(IBM社の登録商標)Application Server(アプリケーション・サーバ(WAS))バージョン6.1などのエンタープライズ・アプリケーション・サーバ・ベース・バージョンがシステムにインストールされると想定する。さらに、3つの異なるランタイム環境(runtime environment(RE))、例えばWASプロファイルX、Y、およびZがエンタープライズ・アプリケーション・サーバ上に存在するということ、および、該X、YおよびZプロファイル上にディプロイされた3つの異なるアプリケーション、例えばプロファイルX上のTEST1、プロファイルY上のTEST2、及びプロファイルZ上のTEST3、があるということも想定しよう。さらに、ランタイム環境Y上にディプロイされたアプリケーションTEST2だけについてEASをあるバージョンから別のバージョンへ、例えばWASバージョン6.1からWASバージョン6.1.0.25へ、アップグレードする必要があり、他のアプリケーションについてはEASをアップグレードする必要は無いということも想定する。このアップグレードは、実際上、アプリケーションTEST1およびTEST3の一方または両方に悪影響を及ぼすかもしれない。例えば、アプリケーションTEST1は、特に、IBM(IBM社の登録商標)WebSphere(IBM社の登録商標)アプリケーション・サーバのバージョン6.1により提供されるインターフェースを使用するように開発されているかもしれない。
エンタープライズ・アプリケーションのための現在のパッチ・アップグレードは、一般に、エンタープライズ・アプリケーション・サーバ全体をアップグレードする。様々のランタイム環境が、該ランタイム環境上にディプロイされたアプリケーションに関連する様々のフィックス・パック・レベルで動作し得るようにエンタープライズ・アプリケーション・サーバの1つ以上の特定のランタイム環境だけをアップグレードするための備えは無い。現在のランタイム環境は、ベース・エンタープライズ・アプリケーション・サーバが動作し、ベース・エンタープライズ・アプリケーション・サーバ・ファイルに完全に依存することも要求する。それらは、興味あるバージョンを選択するオプションを持っていない、例えば、システムs1上に存在するプロファイルXはIBM(IBM社の登録商標)WebSphere(IBM社の登録商標)アプリケーション・サーバ6.1上で動作することを望み、同じシステムs1上のプロファイルYはIBM(IBM社の登録商標)WebSphere(IBM社の登録商標)アプリケーション・サーバ6.1.5上で動作することを望むかもしれない。
システムのランタイム環境を構築するためのコンピュータ実行方法、コンピュータ・プログラム、およびデータ処理システムが提供される。
本発明の一実施態様に従って、システムのランタイム環境を構築するためのコンピュータ実行方法、有形の記憶媒体、およびデータ処理システムが提供される。プロファイル・マネージャは、プロファイル識別子を包含するサービス要求を受け取る。該プロファイル識別子は、少なくとも1つのソフトウェア・コンポーネントの必要とされるバージョンを指定する。該プロファイル・マネージャは、そのソフトウェア・コンポーネントの完全なインストレーションと、少なくとも1つのデルタ・ファイルとを特定する。該プロファイル・マネージャは、該少なくとも1つのデルタ・ファイルからのファイルと、それらに続く、該完全なインストレーションからのファイルとを優先的に利用することによって、該必要とされるバージョンのためのクラスパスを動的に構築する。ランタイム環境は、その後、該クラスパスを利用して構築される。
次に、添付されている図面を参照して、単に例を挙げて、本発明の実施態様が記述される。
実施例が実現され得るデータ処理システムのネットワークの図面を描いている。 実施例が実現され得るデータ処理システムのブロック図である。 本発明を実施し得るコンピュータ・システムの中で動作するソフトウェア・コンポーネント同士の関係を示すブロック図である。 一実施例に従うJava(R)仮想マシンのブロック図である。 データ処理システムのJava(R)仮想マシンにプロファイルを供給するための現在知られているデータフロー図である。 一実施例に従うデータ処理システムのJava(R)仮想マシンにプロファイルを供給するためのデータフロー図である。 従来技術に従うエンタープライズ・アプリケーション・サーバ・ファイル・システム構造を概略的に示すブロック図である。 一実施例に従うエンタープライズ・アプリケーション・サーバ・ファイル・システム構造を概略的に示すブロック図である。 一実施例に従うエンタープライズ・アプリケーション・サーバ・アップグレード、パッチ、またはフィックスパックのインストレーションを概略的に示すブロック図である。 一実施例に従うランタイム環境によってシステム・バージョンを選択する方法を概略的に示すフローチャートである。
当業者により理解されるであろうように、本発明はシステム、方法あるいはコンピュータ・プログラム製品として具体化され得る。従って、本発明は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいはソフトウェアと、ここで“回路”、“モジュール”または“システム”と全て一般的に称され得るハードウェア側面とを組み合わせた実施態様の形をとることができる。さらに、本発明は、コンピュータ使用可能なプログラム・コードが具体化されている任意の有形表現媒体において具体化されたコンピュータ・プログラム製品の形をとることができる。
1つ以上のコンピュータ使用可能なあるいはコンピュータ可読の媒体(1つまたは複数)の任意の組み合わせが利用され得る。該コンピュータ使用可能なあるいはコンピュータ可読の媒体は、例えば、それらに限定されないが、電子、磁気、光学、電磁、赤外線、または半導体のシステム、装置、デバイス、または伝播媒体であり得る。コンピュータ可読媒体のより具体的な例(非網羅的なリスト)は次のものを含む:1つ以上のワイヤを有する電気的結線、携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(random access memory(RAM))、読み出し専用メモリ(read−only memory(ROM))、消去可能なプログラマブル読み出し専用メモリ(erasable programmable read−only memory(EPROMまたはフラッシュ・メモリ))、光ファイバ、携帯用コンパクト・ディスク読み出し専用メモリ(compact disc read−only memory(CDROM))、光記憶装置、インターネットまたはイントラネットをサポートするものなどの伝送媒体、あるいは磁気記憶装置。プログラムは、例えば紙または他の媒体の光学式走査を介して電子的に取り込まれ、その後、必要ならば、コンパイルされ、解釈されあるいは適切な仕方で別様に処理され、その後コンピュータ・メモリに格納され得るので、該コンピュータ使用可能なあるいはコンピュータ可読の媒体は、プログラムが印刷されている紙または他の適切な媒体であっても良いことに留意されたい。この文書の文脈においては、コンピュータ使用可能なあるいはコンピュータ可読の媒体は、命令実行システム、装置、またはデバイスに使用されるあるいは関連するプログラムを包含し、記憶し、伝達し、伝播し、あるいは運ぶことのできる任意の媒体であり得る。コンピュータ使用可能な媒体は、ベースバンドであるいは搬送波の一部として、コンピュータ使用可能なプログラム・コードが具体化されている伝播されるデータ信号を含むことができる。コンピュータ使用可能なプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、RFなどを含むが限定はされない任意の適切な媒体を用いて伝送され得る。
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk、C++等のオブジェクト指向のプログラミング言語および在来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書かれ得る。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で、実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(local area network(LAN))またはワイド・エリア・ネットワーク(wide area network(WAN))を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されることができ、あるいは、接続は外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)なされることができる。
本発明は、以下で、本発明の実施態様に従う方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して記述される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロック同士の組み合わせはコンピュータ・プログラム命令により実行され得ることが理解されるであろう。
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する命令が該フローチャートまたは該ブロック図あるいはその両方の1つ若しくは複数のブロックにおいて指定されている機能/行為を実行するための手段を作成するようにマシンを製造するために、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブルなデータ処理装置のプロセッサに提供され得る。これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が該フローチャートまたは該ブロック図あるいはその両方の1つ若しくは複数のブロックにおいて指定されている機能/行為を実行する命令手段を含む製造物品を生じさせるように、特定の仕方で機能するようにコンピュータまたは他のプログラマブルなデータ処理装置に指令できるコンピュータ可読媒体に格納されることもできる。
該コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルな装置上で実行する命令が該フローチャートまたは該ブロック図あるいはその両方の1つ若しくは複数のブロックにおいて指定されている機能/行為を実行するためのプロセスを提供するように、コンピュータ実行プロセスを生じさせるべくコンピュータまたは他のプログラマブルな装置上で一連の操作ステップを実行させるためにコンピュータまたは他のプログラマブルなデータ処理装置にロードされることもできる。
ここで図を参照すると、特に図1−2を参照すると、実施例が実現され得るデータ処理環境の代表的な図が提供されている。図1−2は、単に代表的なものであること、種々の実施態様が実現され得る環境に関して如何なる限定も主張あるいは示唆するものではないこと、が理解されるべきである。描かれている環境に多くの改変を加えることができる。
図1は、実施例が実現され得るデータ処理システムのネットワークの絵画的表示を描いている。ネットワーク・データ処理システム100は、実施例が実現され得るコンピュータのネットワークである。ネットワーク・データ処理システム100はネットワーク102を包含し、これは、ネットワーク・データ処理システム100の中で互いに接続されている種々のデバイスおよびコンピュータの間の通信リンクを提供するために用いられる媒体である。ネットワーク102は、有線、無線通信リンク、または光ファイバ・ケーブルなどの結線を含むことができる。
描かれている例では、サーバ104およびサーバ106は、記憶単位108とともにネットワーク102に接続する。さらに、クライアント110、112、および114がネットワーク102に接続する。クライアント110、112、および114は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータであり得る。描かれている例では、サーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどの情報をクライアント110、112、および114に提供する。クライアント110、112、および114は、この例ではサーバ104に対してクライアントである。ネットワーク・データ処理システム100は、図示されていないさらなるサーバ、クライアント、および他のデバイスを含むことができる。
ネットワーク・データ処理システム100に置かれるプログラム・コードは、コンピュータ記録可能記憶媒体に格納されて、使用されるべくデータ処理システムまたは他のデバイスにダウンロードされることができる。例えば、プログラム・コードは、サーバ104上のコンピュータ記録可能記憶媒体に格納されて、クライアント110上で使用されるべくネットワーク102によりクライアント110にダウンロードされることができる。
描かれている例では、ネットワーク・データ処理システム100は、相互に通信するためにプロトコルの伝送制御プロトコル/インターネット・プロトコル(Transmission Control Protocol/Internet Protocol(TCP/IP))スイートを使用するネットワークおよびゲートウェイの世界的集合を表わすネットワーク102を有するインターネットである。インターネットの中心部には、データおよびメッセージを経路指定する数千の商用、政府機関用、教育用およびその他のコンピュータ・システムから成る、主要なノードまたはホスト・コンピュータ間の高速データ通信ラインのバックボーンがある。もちろん、ネットワーク・データ処理システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN)、あるいはワイド・エリア・ネットワーク(WAN)などの多くの異なるタイプのネットワークとしても実現され得る。図1は、例示されているのであって、種々の実施例についての構成上の限定として意図されているのではない。
ここで図2を参照すると、実施例が実現され得るデータ処理システムのブロック図が示されている。データ処理システム200は、図1におけるサーバ104またはクライアント110などのコンピュータの例であり、その中に、プロセスを実行するコンピュータ使用可能プログラム・コードまたは命令を実施例のために置くことができる。この例では、データ処理システム200は通信ファブリック202を含み、これは、プロセッサ・ユニット204、メモリ206、永続記憶装置208、通信ユニット210、入力/出力(input/output(I/O))ユニット212、およびディスプレイ214の間の通信を提供する。
プロセッサ・ユニット204は、メモリ206にロードされ得るソフトウェアのための命令を実行する役割を果たす。プロセッサ・ユニット204は、インプリメンテーションにより、1つ以上のプロセッサのセットであることができ、あるいはマルチ・プロセッサ・コアであることができる。さらに、プロセッサ・ユニット204は、主プロセッサが副プロセッサとともに単一のチップ上に存在する1つ以上のヘテロジニアス・プロセッサ・システムを用いて実装され得る。他の1つの例では、プロセッサ・ユニット204は、同じタイプの複数のプロセッサを包含する対称的マルチ・プロセッサ・システムであることができる。
メモリ206および永続記憶装置208は、記憶装置216の例である。記憶装置は、例えば無限定で、データ、関数形式のプログラム・コード、または他の適切な情報のうちの少なくとも1つあるいはそれらの組み合わせなどの情報を一時的にまたは永久的にあるいは一時的にかつ永久的に記憶することのできる任意のハードウェア・ピースである。メモリ206は、これらの例では、例えば、ランダム・アクセス・メモリあるいは他の任意の適切な揮発性または不揮発性の記憶装置であることができる。永続記憶装置208は、特定のインプリメンテーションにより種々の形をとることができる。例えば、永続記憶装置208は、1つ以上のコンポーネントまたはデバイスを包含することができる。例えば、永続記憶装置208は、ハード・ディスク、フラッシュ・メモリ、再書き込み可能な光ディスク、再書き込み可能な磁気テープ、あるいは上記のものの何らかの組み合わせであることができる。永続記憶装置208により使用される媒体は取り外し可能であることもできる。例えば、永続記憶装置208のために取り外し可能のハード・ディスクが使用され得る。
通信ユニット210は、これらの例において、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット210はネットワーク・インターフェース・カードである。通信ユニット210は、物理的通信リンクおよび無線通信リンクの一方または両方の使用を通して通信を提供することができる。
入力/出力ユニット212は、データ処理システム200に接続され得る他のデバイスとのデータの入力または出力あるいはその両方のためのものである。例えば、入力/出力ユニット212は、キーボード、マウス、および他の何らかの適切な入力装置のうちの少なくとも1つを通してのユーザ入力のための接続を提供することができる。さらに、入力/出力ユニット212は、出力をプリンタに送ることができる。ディスプレイ214は、情報をユーザに表示するためのメカニズムを提供する。
オペレーティング・システム、アプリケーション、またはプログラムあるいはそれらの組み合わせのための命令は記憶装置216に置かれることができ、これは通信ファブリック202を通してプロセッサ・ユニット204と通信する。これらの実施例では、命令は関数形式で永続記憶装置208上に存在する。これらの命令は、プロセッサ・ユニット204により実行されるべくメモリ206にロードされることができる。種々の実施態様のプロセスは、コンピュータ実行命令を用いるプロセッサ・ユニット204により実行されることができ、それらはメモリ206などのメモリに置かれることができる。
これらの命令は、プロセッサ・ユニット204内のプロセッサにより読み出されて実行され得るプログラム・コード、コンピュータ使用可能プログラム・コード、あるいはコンピュータ可読プログラム・コードと称される。種々の実施態様におけるプログラム・コードは、メモリ206または永続記憶装置208などの、種々の物理的なあるいは有形のコンピュータ可読媒体上で具体化されることができる。
プログラム・コード218は、選択的に取り外すことのできるコンピュータ可読媒体220上に関数形式で置かれて、プロセッサ・ユニット204により実行されるべくデータ処理システム200にロードされあるいは転送されることができる。プログラム・コード218およびコンピュータ可読媒体220は、これらの例ではコンピュータ・プログラム製品222を形成する。一例では、コンピュータ可読媒体220は、例えば、永続記憶装置208の一部分であるハード・ディスク等の記憶装置に転送されるべく永続記憶装置208の一部分であるドライブまたは他のデバイスに挿入されあるいは中に置かれる光ディスクまたは磁気ディスクなど、有形の形式であることができる。有形の形式では、コンピュータ可読媒体218は、データ処理システム200に接続されるハード・ディスク、サム・ドライブ、またはフラッシュ・メモリなどの永続記憶装置の形をとることもできる。コンピュータ可読媒体220の有形の形式は、コンピュータ記録可能記憶媒体とも称される。或る例では、コンピュータ可読媒体220は取り外し可能でないかもしれない。
あるいは、プログラム・コード218は、通信ユニット210への通信リンクを通して、または入力/出力ユニット212への結線を通して、あるいはその両方を通して、コンピュータ可読媒体220からデータ処理システム200に転送されることができる。該通信リンクまたは該結線あるいはその両方は、該例では物理的なものでありあるいは無線であることができる。コンピュータ可読媒体は、通信リンク、あるいはプログラム・コードを包含する無線伝送などの、非有形の媒体の形をとることもできる。
或る実施例では、プログラム・コード218は、データ処理システム200内で使用されるべく他のデバイスまたはデータ処理システムからネットワークを介して永続記憶装置208にダウンロードされることができる。例えば、サーバ・データ処理システム内のコンピュータ可読記憶媒体に格納されているプログラム・コードはネットワークを介して該サーバからデータ処理システム200にダウンロードされることができる。プログラム・コード218を提供するデータ処理システムは、サーバ・コンピュータ、クライアント・コンピュータ、あるいは、プログラム・コード218を記憶し送信することのできる他の何らかのデバイスであることができる。
データ処理システム200のために示された種々のコンポーネントは、種々の実施態様が実現され得る仕方に構成上の限定を与えるよう意図されているのではない。種々の実施例は、データ処理システム200のために示されたもの以外の、あるいはそれらの代わりのコンポーネントを含むデータ処理システムにおいて実現されることができる。図2に示されている他のコンポーネントは、図示された例から変えられることができる。種々の実施態様は、プログラム・コードを実行することのできる任意のハードウェア・デバイスまたはシステムを用いて実現されることができる。一例として、データ処理システムは、無機コンポーネントと統合された有機コンポーネントを含むことができ、または人間を除外した有機コンポーネントから完全に構成されることができ、あるいは、無機コンポーネントと統合された有機コンポーネントを含み、かつ人間を除外した有機コンポーネントから完全に構成されることもできる。例えば、記憶装置は、有機半導体から構成されることができる。
他の1つの例として、データ処理システム200の記憶装置は、データを記憶できる任意のハードウェア装置である。メモリ206、永続記憶装置208およびコンピュータ可読媒体220は、有形の形式の記憶装置の例である。
他の1つの例では、バス・システムが、通信ファブリック202を実現するために使用されることができ、システム・バスまたは入力/出力バスなどの1つ以上のバスから構成されることができる。もちろん、バス・システムは、該バス・システムに取り付けられた種々のコンポーネントまたはデバイス間にデータの転送のための手段を提供する任意の適切なタイプのアーキテクチャを用いて実現されることができる。さらに、通信ユニットは、モデムまたはネットワーク・アダプタなど、データを送信し受信するために使用される1つ以上のデバイスを含むことができる。さらに、メモリは、例えば、メモリ206、または、通信ファブリック202に存在し得るインターフェースおよびメモリ・コントローラ・ハブに見出されるようなキャッシュであることができる。
ここで図3を参照すると、ブロック図が、本発明を実施し得るコンピュータ・システムの中で動作するソフトウェア・コンポーネント同士の関係を示している。Java(R)ベースのシステム300は、特定のハードウェア・プラットフォーム上で実行するソフトウェアにハードウェアおよびシステム・サポートを提供するプラットフォーム固有オペレーティング・システム302を包含する。Java(R)仮想マシン(Java virtual machine(JVM))304は、該オペレーティング・システムと関連して実行し得る1つのソフトウェア・アプリケーションである。Java(R)仮想マシン304は、Java(R)プログラミング言語で書かれたプログラム、サーブレット、またはソフトウェア・コンポーネントであるJava(R)アプリケーション/アプレット306を実行する能力を持ったJava(R)ランタイム環境を提供する。Java(R)仮想マシン304が動作するコンピュータ・システムは、上記のデータ処理システム200またはコンピュータ100に類似することができる。しかし、Java(R)仮想マシン304は、picoJavaコアが埋め込まれているいわゆるJava(R)チップ、Java(R)オン・シリコン、あるいはJava(R)プロセッサ上の専用ハードウェアに実現され得る。
Java(R)ランタイム環境の中心にはJava(R)仮想マシンがあり、これは、そのアーキテクチャ、セキュリティ機能、およびネットワークを渡るモビリティ、およびプラットフォーム独立性を含む、Java(R)の環境の全側面をサポートする。
Java(R)仮想マシンは仮想コンピュータ、例えば、抽象的に明示されるコンピュータ、である。その仕様は、Java(R)仮想マシンがその上で実行するように設計されるプラットフォームに依存し得る或る範囲の設計選択肢のある、どのJava(R)仮想マシンもが実現しなければならない或る機能を定める。例えば、全てのJava(R)仮想マシンは、Java(R)バイトコードを実行しなければならず、該バイトコードにより表される命令を実行するために或る範囲の技術を使用することができる。Java(R)仮想マシンは、完全にソフトウェアで、あるいは或る程度ハードウェアで、実現されることができる。この柔軟性は、メインフレーム・コンピュータおよびPDAのために種々のJava(R)仮想マシンを設計することを可能にする。
Java(R)仮想マシンは、実際にJava(R)プログラムを実行する仮想コンピュータ・コンポーネントの名称である。Java(R)プログラムは、中央プロセッサによって直接実行されるのではなくて、それ自体が該プロセッサ上で動作する1つのソフトウェアであるJava(R)仮想マシンにより実行される。Java(R)仮想マシンは、該コードがそれ向けにコンパイルされた唯一のプラットフォームではなくて異なるプラットフォーム上でJava(R)プログラムを実行することを可能にする。Java(R)プログラムは、Java(R)仮想マシン向けにコンパイルされる。このようにして、Java(R)は、多様な中央処理装置およびオペレーティング・システム・アーキテクチャを包含し得る多くのタイプのデータ処理システムのためのアプリケーションをサポートすることができる。Java(R)アプリケーションがいろいろなタイプのデータ処理システム上で実行し得るように、コンパイラは、通例、アーキテクチャ中立のファイル・フォーマットを生成する。このコンパイルされたコードは、Java(R)ランタイム・システムが存在するならば、多くのプロセッサ上で実行可能である。Java(R)コンパイラは、特定のコンピュータ・アーキテクチャ向けではないバイトコード命令を生成する。バイトコードは、Java(R)コンパイラにより生成されてJava(R)インタープリタにより実行されるマシン非依存コードである。Java(R)インタープリタは、1つまたは複数のバイトコードの復号と解釈とを交互に行うJava(R)仮想マシンの部分である。これらのバイトコード命令は、どんなコンピュータでも容易に解釈でき、かつネイティブのマシン・コードに容易にオン・ザ・フライで翻訳されるように設計される。バイトコードは、ジャスト・イン・タイム(just−in−time(JIT))コンパイラによってネイティブ・コードに翻訳されることができる。
Java(R)仮想マシンは、クラス・ファイルをロードし、それらの中のバイトコードを実行する。クラス・ファイルはJava(R)仮想マシン内のクラス・ローダによってロードされる。クラス・ローダは、アプリケーションからのクラス・ファイルと、そのアプリケーションが必要とするJava(R)アプリケーション・プログラミング・インターフェース(application programming interface(API))からのクラス・ファイルとをロードする。バイトコードを実行する実行エンジンは、プラットフォームおよびインプリメンテーションにより異なり得る。
1つのタイプのソフトウェア・ベースの実行エンジンはジャスト・イン・タイム・コンパイラである。このタイプの実行では、メソッドをジッティング(jitting)することについての或るタイプの基準がうまく満たされると、メソッドのバイトコードはネイティブ・マシン・コードにコンパイルされる。該メソッドのためのネイティブ・マシン・コードはその後キャッシュされて、該メソッドが次に呼び出されると再使用される。実行エンジンは、Java(R)バイトコードがネイティブ的に実行されるようにハードウェアで実現されてチップに埋め込まれることもできる。Java(R)仮想マシンは、普通はバイトコードを解釈するけれども、Java(R)仮想マシンは、バイトコードを実行するためにジャスト・イン・タイム・コンパイリングなどの他の手法を使用することもできる。
アプリケーションがプラットフォーム固有のオペレーティング・システム上のソフトウェアに実装されているJava(R)仮想マシン上で実行されるとき、Java(R)アプリケーションは、ネイティブ・メソッドを呼び出すことによってホスト・オペレーティング・システムとインタラクトすることができる。Java(R)メソッドは、Java(R)言語で書かれ、バイトコードにコンパイルされ、クラス・ファイルに格納される。ネイティブ・メソッドは、他の何らかの言語で書かれて特定のプロセッサのネイティブ・マシン・コードにコンパイルされる。ネイティブ・メソッドは、その正確な形がプラットフォーム固有である動的にリンクされるライブラリに格納される。
ここで図4を参照すると、一実施例に従うJava(R)仮想マシンのブロック図が描かれている。Java(R)仮想マシン(JVM)400は、完全修飾名を与えられた、クラスおよびインターフェースなどのタイプをロードするためのメカニズムであるクラス・ローダ・サブシステム402を含む。Java(R)仮想マシン400は、ランタイム・データ・エリア404、実行エンジン406、ネイティブ・メソッド・インターフェース408、およびメモリ・マネージメント410も包含している。実行エンジン406は、クラス・ローダ・サブシステム402によりロードされるクラスのメソッドに包含される命令を実行するためのメカニズムである。実行エンジン406は、例えば、Java(R)インタープリタ412またはジャスト・イン・タイム・コンパイラ414であることができる。ネイティブ・メソッド・インターフェース408は、下にあるオペレーティング・システム内のリソースへのアクセスを可能にする。ネイティブ・メソッド・インターフェース408は、例えば、Java(R)ネイティブ・インターフェース(Native Interface(JNI))であることができる。
ランタイム・データ・エリア404は、ネイティブ・メソッド・スタック416、Java(R)スタック418、PCレジスタ420、メソッド・エリア422、およびヒープ424を包含する。これらの種々のデータ・エリアは、Java(R)仮想マシンがプログラムを実行するために必要とするメモリの構成を表わす。
Java(R)スタック418は、Java(R)メソッドの呼び出しの状態を格納するために使用される。新しいスレッドが起動されるとき、Java(R)仮想マシンは、そのスレッドのために新しいJava(R)スタックを作成する。Java(R)仮想マシンは、Java(R)スタックに対して2つの操作だけを直接実行する。それは、フレームをプッシュしポップする。スレッドのJava(R)スタックは、そのスレッドのためのJava(R)メソッドの呼び出しの状態を記憶する。Java(R)メソッドの呼び出しの状態は、そのローカル変数、それを呼び出すのに使われたパラメータ、もしあるならばその戻り値、および中間の計算を含む。Java(R)スタックは、スタック・フレームから構成される。スタック・フレームは、単一のJava(R)メソッドの呼び出しの状態を包含する。スレッドがメソッドを呼び出すとき、Java(R)仮想マシンは新しいフレームを該スレッドのJava(R)スタックにプッシュする。該メソッドが完了すると、Java(R)仮想マシンはそのメソッドのためのフレームをポップし、それを廃棄する。Java(R)仮想マシンは中間値を保持するためのレジスタを持っていない;中間値を必要としあるいは生じさせるJava(R)命令は、その中間値を保持するために該スタックを使用する。このようにして、Java(R)命令セットは、いろいろなプラットフォーム・アーキテクチャのために明確に定義される。
プログラム・カウンタ(program counter(PC))レジスタ420は、次に実行されるべき命令を示すために使用される。各々のインスタンス化されたスレッドは、それ自身のPCレジスタおよびJava(R)スタックを得る。もし該スレッドがJava(R)仮想マシン・メソッドを実行しているならば、該PCレジスタの値は次に実行するべき命令を示す。もし該スレッドがネイティブ・メソッドを実行しているならば、該PCレジスタの内容は不定である。
ネイティブ・メソッド・スタック416は、ネイティブ・メソッドの呼び出しの状態を記憶する。ネイティブ・メソッドの呼び出しの状態は、ネイティブ・メソッド・スタック、レジスタ、または他のインプリメンテーション依存のメモリ・エリアにインプリメンテーション依存の仕方で格納される。或るJava(R)仮想マシン・インプリメンテーションでは、ネイティブ・メソッド・スタック416とJava(R)スタック418とは結合される。
メソッド・エリア422はクラス・データを包含し、ヒープ424は全てのインスタンス化されたオブジェクトを包含する。定数プールは、これらの例ではメソッド・エリア422に置かれる。Java(R)仮想マシン仕様は、データ・タイプおよび操作を厳密に定義する。大抵のJava(R)仮想マシンは1つのメソッド・エリアおよび1つのヒープを持つことを選択し、その各々は、Java(R)仮想マシン400などのJava(R)仮想マシンの中で動作する全てのスレッドにより共有される。Java(R)仮想マシン400は、クラス・ファイルをロードするとき、該クラス・ファイルに包含されているバイナリ・データからタイプに関する情報を構文解析する。Java(R)仮想マシン400は、このタイプの情報をメソッド・エリアに入れる。クラス・インスタンスまたはアレイが作成されるたびに、新しいオブジェクトのためのメモリはヒープ424から割り当てられる。Java(R)仮想マシン400は、ヒープ424のためにメモリの中のメモリ・スペースを割り当てる命令を含むけれども、メモリの中のそのスペースを解放するための命令を含んでいない。描かれている例においてメモリ・マネージメント410は、ヒープ424に割り当てられたメモリの中のメモリ・スペースを管理する。メモリ・マネージメント410はガーベージ・コレクタを含むことができ、それは、最早参照されないオブジェクトにより使用されているメモリを自動的に解放する。さらに、ガーベージ・コレクタは、ヒープの断片化を減少させるためにオブジェクトを移動させることもできる。
本出願の実施例は、システムのランタイム環境を構築するためのコンピュータ実行方法、有形の記憶媒体、およびデータ処理システムを記述する。プロファイル・マネージャは、プロファイル識別子を包含するサービス要求を受け取る。該プロファイル識別子は、少なくとも1つのソフトウェア・コンポーネントの必要とされるバージョンを指定する。該プロファイル・マネージャは、そのソフトウェア・コンポーネントの完全なインストレーションと、少なくとも1つのデルタ・ファイルとを特定する。該プロファイル・マネージャは、該少なくとも1つのデルタ・ファイルからのファイルと、それらに続く、該完全なインストレーションからのファイルとを優先的に利用することによって、該必要とされるバージョンのためのクラスパスを動的に構築する。ランタイム環境は、その後、該クラスパスを利用して構築される。
実施例は、アプリケーション/プロファイルがランタイム中にランタイム環境バージョンを選択するためのコンピュータ実行方法、システムおよびコンピュータ・プログラム製品を提供する。一実施例では、エンタープライズ・アプリケーション・サーバ・フィックス・パック・アップグレードは、仮想インストレーションのように機能し、該エンタープライズ・アプリケーション・サーバ・バージョンを全体としてはアップグレードしない。代わりに、アプリケーション・スタートアップまたはプロファイル・スタートアップ段階の間にどちらのバージョンも選択され得るように、アップグレード後に現在のバージョンとより新しいバージョンとの両方がシステムに存在するべきである。
1つのさらなる実施例では、ベース・バージョンとアップグレードされたバージョンとを含む種々のランタイム・バージョンがシステムにおいて維持されて、ランタイム選択に基づいて動的にロードされる。
ここで図5を参照すると、データ処理システムのJava(R)仮想マシンにプロファイルを供給するための既知のデータフロー図が描かれている。Java(R)仮想マシン510は、図4のJava(R)仮想マシン400などのJava(R)仮想マシンである。Java(R)仮想マシン510は、エンタープライズ・アプリケーション・サーバの種々のバージョンを同じマシンの別々のプロファイルにおいて、その別々のプロファイルの各々のために完全なインストレーションを維持することによって、インストールし維持する。
Java(R)仮想マシン510はアプリケーション・サーバ512−516を包含する。アプリケーション・サーバ512−516は、Java(R)仮想マシン510のアプリケーションが実際にそこで実行するところの主要なランタイム・コンポーネントである。
アプリケーション・サーバ512−516の各々は、Java(R)仮想マシン・インスタンス518−522の1つを実行する。Java(R)仮想マシン・インスタンス518−522は、Java(R)仮想マシン510の中のクラス・インスタンスである。Java(R)仮想マシン・インスタンス518−522の幾つかは、それらのインスタンスがアプリケーション・サーバ512−516などの別々のアプリケーション・サーバに各々包含される限り、Java(R)仮想マシン510の中で別々に実行することができる。
Java(R)仮想マシン・インスタンス518−522は、プロファイル・データベース530に格納されているプロファイル524−528の1つを用いて作成される。プロファイル・データベース529は、プロファイル524−528の位置を包含しあるいは参照する、図1の記憶単位108などの、記憶単位上に実現されるデータ構造である。プロファイル524−528は、ディプロイメント・マネージャまたはアプリケーション・サーバなどの、アプリケーション・サーバ・プロセスのためのランタイム環境を定義するファイルを含む別々のデータ・パーティションである。各ランタイム環境は、それ自身の構成ファイル、ログ、プロパティおよび他の属性を有する。プロファイル524−528は、アプリケーション・サーバ512−516の各ランタイムを一意で、かつサーバ・バイナリおよび他のプロファイルとは異なるものとすることができる。
各プロファイル524−528は、該プロファイルが作成されるときに利用し得るどのソフトウェア・パッチおよびアップデートをも含む、完全なエンタープライズ・アプリケーション・サーバ・インストレーションである。プロファイル524−528の1つがパッチされあるいは更新されるたびに、新しい、別のプロファイルが作成される。従って、一実施例では、プロファイル524は、エンタープライズ・アプリケーション・サーバのマイルストーン・リリースの完全なインストレーションである。プロファイル526は、エンタープライズ・アプリケーション・サーバの完全なインストレーションである。プロファイル526は、プロファイル524のパッチされたバージョンでもある。プロファイル528は、エンタープライズ・アプリケーション・サーバの完全なインストレーションである。プロファイル528は、プロファイル526のパッチされたバージョンでもある。
Java(R)仮想マシン510がサービス要求530を受け取ると、プロファイル・マネージャ532はプロファイル識別子534を認識する。プロファイル識別子534は、その要求を満たすためにエンタープライズ・アプリケーション・サーバのどのバージョンが使用されるべきであるか、従って、Java(R)仮想マシン・インスタンス518−522の1つなどの特定のインスタンスを作成するときにプロファイル524−528のいずれが利用されるべきか、の表示である。プロファイル・マネージャ532は、その後、プロファイル524−528の表示された1つを取り出し、その取り出したプロファイルを、アプリケーション・サーバ512−516のうちの、該インスタンスを実行する1つに割り当てる。
ここで図6を参照すると、一実施例に従うデータ処理システムのJava(R)仮想マシンにプロファイルを供給するためのデータフロー図が示されている。Java(R)仮想マシン610は、図4のJava(R)仮想マシン400などのJava(R)仮想マシンである。Java(R)仮想マシン610は、エンタープライズ・アプリケーション・サーバの種々のバージョンを、そして同じマシンに別々のプロファイルを、その別々のプロファイルの各々のためにデルタ・ファイルを維持することにより、インストールし維持する。
Java(R)仮想マシン610は、アプリケーション・サーバ612−616を包含する。アプリケーション・サーバ612−616は、Java(R)仮想マシン610のアプリケーションが実際にそこで実行するところの主要なランタイム・コンポーネントである。
アプリケーション・サーバ612−616の各々は、Java(R)仮想マシン・インスタンス618−622の1つを実行する。Java(R)仮想マシン・インスタンス618−622は、Java(R)仮想マシン610の中のクラス・インスタンスである。Java(R)仮想マシン・インスタンス618−622の幾つかは、それらのインスタンスがアプリケーション・サーバ612−616などの別々のアプリケーション・サーバにそれぞれ包含されている限り、Java(R)仮想マシン610の中で別々に実行することができる。
Java(R)仮想マシン・インスタンス618−622は、プロファイル・データベース631に格納されているプロファイルの1つ624と、デルタ・ファイル626−630の1つ以上とを用いて作成される。プロファイル・データベース631は、プロファイル624の位置を包含しあるいは参照する、図1の記憶単位108などの記憶単位において実現されるデータ構造である。プロファイル624は、ディプロイメント・マネージャまたはアプリケーション・サーバなどの、アプリケーション・サーバ・プロセスのためのランタイム環境を定義するファイルを含む独立のデータ・パーティションである。各ランタイム環境は、それ自身の構成ファイル、ログ、プロパティ、および他の属性を有する。プロファイル624は、アプリケーション・サーバ612−616の各ランタイムを一意で、かつサーバ・バイナリおよび他のプロファイルとは異なるものとすることができる。
プロファイル624は、完全なエンタープライズ・アプリケーション・サーバ・インストレーションである。図5のプロファイル524−528とは違って、プロファイル624は、該プロファイルが作成されるときに利用し得るどのソフトウェア・パッチおよびアップデートも含まない。一実施例ではプロファイル624は、エンタープライズ・アプリケーション・サーバのマイルストーン・リリースの完全なインストレーションである。
デルタ・ファイル626−630は、プロファイル624などのベース・プロファイルに対する変更、あるいはデルタ・ファイル626−630のうちの他のものなどの、以前のデルタ・ファイルに対する変更を含むファイルである。プロファイル624に対して用いられるべきソフトウェア・パッチまたはアップデートに関しては、プロファイル624に対して行われるべき変更は初めはプロファイル624に対して用いられずに、デルタ・ファイル626−630の1つとして保存される。
一実施例では、デルタ・ファイル626−630の各々は、プロファイル624に対して行われるべき変更を包含するソフトウェア・パッチまたはアップデートである。プロファイル624がアプリケーション・サーバ612−616の1つに動的にロードされるとき、クラスパスは、始めは特定されたデルタ・ファイル626−630からのファイルで、次にはベース・プロファイル624からのファイルで、構築される。
一実施例では、デルタ・ファイル626−630の各々は、デルタ・ファイル626−630のうちの以前の1つにより改変されたプロファイル624に対して行われるべき変更を包含するシーケンシャルなソフトウェア・パッチまたはアップデートである。例えば、それに限定はされないけれども、デルタ・ファイル626は、デルタ・ファイル626のソフトウェア・パッチまたはアップデートがプロファイル624に対して直接用いられるべきであるような、プロファイル624に対する第1アップデートであり得る。デルタ・ファイル628は、デルタ・ファイル628のソフトウェア・パッチまたはアップデートが、デルタ・ファイル626により改変されたプロファイル624に対して用いられるべきであるような、プロファイル624に対する次のアップデートであり得る。デルタ・ファイル630は、デルタ・ファイル628のソフトウェア・パッチまたはアップデートが、デルタ・ファイル626およびデルタ・ファイル628の両方により改変されたプロファイル624に対して用いられるべきであるような、プロファイル624に対するさらなる次のアップデートであり得る。従って、もしサービス要求632がデルタ・ファイル626−630の各々を含むプロファイル・バージョンを特定するならば、クラスパスは、始めにデルタ・ファイル630からのファイルで、次にデルタ・ファイル628からのファイルで、次にデルタ・ファイル626からのファイルで、次にベース・プロファイル624からのファイルで構築される。
Java(R)仮想マシン610がサービス要求632を受け取ると、プロファイル・マネージャ634はプロファイル識別子636を認識する。プロファイル識別子636は、その要求を満たすためにエンタープライズ・アプリケーション・サーバのどのバージョンが使用されるべきであるか、従って、Java(R)仮想マシン・インスタンス618−622の1つなどの特定のインスタンスを作成するときにプロファイル624とともにデルタ・ファイル626−630のいずれが利用されるべきか、の表示である。プロファイル・マネージャ634は、その後、プロファイル624とともにデルタ・ファイル626−630のうちの表示されたものを取り出し、その取り出したプロファイルを、アプリケーション・サーバ612−616のうちの、該インスタンスを実行する1つに割り当てる。
実施例は、アプリケーション/プロファイルがランタイム中にランタイム環境のバージョンを選択するためのコンピュータ実行方法、システムおよびコンピュータ・プログラム製品を提供する。一実施例では、エンタープライズ・アプリケーション・サーバ・フィックス・パック・アップグレードは、仮想インストレーションのように機能し、該エンタープライズ・アプリケーション・サーバ・バージョンを全体としてはアップグレードしない。代わりに、アプリケーションのスタートアップまたはプロファイルのスタートアップ段階の間にどちらのバージョンでも選択され得るように、アップグレード後に現在のバージョンとより新しいバージョンとの両方がシステムに存在するべきである。
1つのさらなる実施例では、ベース・バージョンとアップグレードされたバージョンとを含む種々のランタイム・バージョンがシステムにおいて維持されて、ランタイム選択に基づいて動的にロードされる。
ここで図7を参照すると、従来技術に従うエンタープライズ・アプリケーション・サーバのファイル・システム構造を概略的に示すブロック図が示されている。ファイル構造700は、ランタイム・ファイルのベース・バージョンと他の多数の完全なインストレーションとがエンタープライズ・アプリケーション・サーバのホーム・ディレクトリにおいて維持され得るEASのファイル・システム構造の構成である。ファイル構造700は、図5のプロファイル524−528などのプロファイルを包含するファイル・システムの概略的表示である。
ファイル構造700はホーム・ディレクトリ702を含む。ホーム・ディレクトリ702は、例えば、それに限定されないけれども、エンタープライズ・アプリケーション・サーバがWebSphere(IBM社の登録商標)アプリケーション・サーバであるときには¥WebSphere(IBM社の登録商標)¥AppServer WAS_HOMEディレクトリであり得る。WebSphereはIBM社の登録商標である。¥プロファイル・ディレクトリは種々のプロファイルをリストしているけれども、WebSphere(IBM社の登録商標)の他のディレクトリおよびファイル、例えば、Java(R)ディレクトリ704、libディレクトリ706、プラグイン・ディレクトリ708およびプロパティ・ファイル710、は全てWAS_HOMEレベルにある。エンタープライズ・アプリケーション・サーバに対するアップグレードが、例えば、バージョン6.1.0.0からバージョン6.1.0.25へのアップグレードのために、行われるときには、ファイルの各々、例えば、Java(R)ディレクトリ704、libディレクトリ706、プラグイン・ディレクトリ708およびプロパティ・ファイル710の中のファイル、は全て該アップグレードを反映するように変更される。
もしエンタープライズ・アプリケーション・サーバに対するアップグレードが異なるファイル名として保存されるならば、ファイル構造700は、アップグレードされたエンタープライズ・アプリケーション・サーバとオリジナルのエンタープライズ・アプリケーション・サーバとの両方の完全なコピーを維持することができる。エンタープライズ・アプリケーション・サーバに対するアップグレードが異なるファイル名として保存されないのであれば、エンタープライズ・アプリケーション・サーバのオリジナルのバージョンのためのファイルは取って代わられて失われる。
ここで図8を参照すると、一実施例に従うエンタープライズ・アプリケーション・サーバのファイル・システム構造を概略的に示すブロック図が示されている。ファイル構造800は、ランタイム・ファイルのベース・バージョンと他の多数の完全なインストレーションとがエンタープライズ・アプリケーション・サーバのホーム・ディレクトリにおいて維持され得るエンタープライズ・アプリケーション・サーバのファイル・システム構造の構成である。ファイル構造800は、図6のプロファイル624およびデルタ・ファイル626−630などのプロファイルおよびデルタ・ファイルを包含するファイル・システムの概略的表示である。
ファイル構造800はホーム・ディレクトリ802を包含する。ホーム・ディレクトリ802は、例えば、それに限定されないけれども、エンタープライズ・アプリケーション・サーバがWebSphere(IBM社の登録商標)アプリケーション・サーバであるときには¥WebSphere(IBM社の登録商標)¥AppServer WAS_HOMEディレクトリであり得る。WebSphereはIBM社の登録商標である。
ホーム・ディレクトリ802は当初はバージョン・サブディレクトリ804を包含する。インストールされるエンタープライズ・アプリケーション・サーバの各パッチまたはソフトウェア・アップグレードについて、新しいバージョンのサブディレクトリがホーム・ディレクトリ802に加えられる。ホーム・ディレクトリ802は、種々のプロファイルをリストする。種々のプロファイルの各々は、エンタープライズ・アプリケーション・サーバの他のファイル、例えば、Java(R)ディレクトリ806、libディレクトリ808、プラグイン・ディレクトリ810およびプロパティ・ファイル812、を含む。その他のファイルは、WAS_HOME¥Version_base_6.1.0.0レベルにインストールされる。
エンタープライズ・アプリケーション・サーバに対するアップグレードが行われるとき、新しいバージョンのサブディレクトリ814が作成される。例えば、バージョン6.1.0.0からバージョン6.1.0.25へのアップグレードでは、バージョン6.1.0.0およびバージョン6.1.0.25の両方がファイル・システムの中に格納されるように、ランタイム・ディレクトリ・ファイル、例えば、それらに限定はされないが、Java(R)ディレクトリ816、libディレクトリ818、プラグイン・ディレクトリ820、およびプロパティ・ファイル822など、を包含するように¥version_base6.1.0.0ディレクトリが加えられる。
一実施例では、ランタイム・ディレクトリ・ファイル、例えば、それらに限定はされないが、Java(R)ディレクトリ816、libディレクトリ818、プラグイン・ディレクトリ820、およびプロパティ・ファイル822など、は図6のデルタ・ファイル624−628の1つなどのデルタ・ファイルである。ランタイム・ディレクトリ・ファイル、例えば、それらに限定はされないが、Java(R)ディレクトリ816、libディレクトリ818、プラグイン・ディレクトリ820、およびプロパティ・ファイル822など、はエンタープライズ・アプリケーション・サーバに対する以前のJava(R)ディレクトリ806、libディレクトリ808、プラグイン・ディレクトリ810およびプロパティ・ファイル812からの変更である。
フィックスパック、パッチ、またはアップグレードがエンタープライズ・アプリケーション・サーバに対して用いられるとき、該フィックスパック、パッチ、またはアップグレードは“マイルストーン・アップグレード”またはノン−マイルストーン・”アップグレードであり得る。“マイルストーン”アップグレードが選択されるならば、ファイルの更新されたセットを包含する新しい¥version_delta_6.1.0.25が作成される。例えば、バージョン6.1.0.0からバージョン6.1.0.25へアップグレードするためには、バージョン6.1.0.0のランタイム・ディレクトリ・ファイルのためのデルタ・ファイル、例えば、Java(R)ディレクトリ816、libディレクトリ818、プラグイン・ディレクトリ820、およびプロパティ・ファイル822、は新しいバージョン・サブディレクトリ814に格納される。
ノン−マイルストーン・インストレーションは、エンタープライズ・アプリケーション・サーバのファイルおよびディレクトリの全てを包含する完全なバージョン・レベルの完全なインストレーションである。ノン−マイルストーン・インストレーションでは、エンタープライズ・アプリケーション・サーバ・システム全体がより新しいバージョンにアップグレードされる。対照的に、マイルストーン・インストレーションは、1つ以上の他のインストレーション・ディレクトリおよびおそらく少なくとも1つの完全なベース・プロファイル/インストレーション・ディレクトリに依存するバージョン・レベルの部分的インストレーションである。マイルストーン・インストレーションでは、旧ファイル・バージョンおよび新ファイル・バージョンが保存される。新ファイル・バージョンは、図6のデルタ・ファイル626−630の1つなどのデルタ・ファイルとして格納される。
“ノン−マイルストーン”アップグレードが選択される場合に、アップグレードが行われると、ランタイム・ディレクトリ・ファイルは、アップグレードされたバージョンだけがファイル構造の中に存在するように単に上書きされる。
図6のアプリケーション・サーバ612−616の1つなどのアプリケーション・サーバが起動されるとき、Java(R)仮想マシン・インスタンスは適切なプロファイルで起動される。仮想マシン・インスタンスのためのクラスパスが構築され、始めはversion_delta_6.1.0.25からのファイルを、次にversion_base_6.1.0.0からのファイルを包含する。幾つかの状態データ・ファイル、例えばプロパティ・サブディレクトリ内のもの、は、矛盾しないよう、必要ならば全体が複製され得る。特定のプロファイルが特定のデルタ・ファイルと組み合わされて起動され得る。エンタープライズ・アプリケーション・サーバ・ランタイムは、ベース・ファイルで、あるいは場合によっては他のデルタ・ファイルで、バックフィルされる。
このようにして、エンタープライズ・アプリケーション・サーバの以前のバージョン上でも、後のバージョン上でも、全ファイルを完全にコピーすることを必要とせずにプロファイルを実行する能力が維持される。
図9は、一実施例に従うエンタープライズ・アプリケーション・サーバのアップグレード、パッチ、またはフィックスパックのインストレーションを概略的に示すブロック図である。プロセス900は、図6のプロファイル・マネージャ634などのソフトウェア・コンポーネント上で実行するソフトウェア・プロセスである。
プロセス900は、アップグレードされたバージョンをインストールするためにインストーラを起動することにより始まる(ステップ902)。そのアップグレードがマイルストーン・アップグレードであるかが判定される(ステップ904)。該アップグレードはマイルストーン・アップグレードであるという判定に応答して(ステップ904のイエス出力)、該アップグレードは、該アップグレードにより更新されるファイルの全ての以前のバージョンを維持しながらインストールされる(ステップ906)。該アップグレードはマイルストーン・アップグレードではないという判定に応答して(ステップ904のノー出力)、該アップグレードは、以前のバージョンのためのファイルをアップグレード済みバージョンのためのファイルに替えることによってWASのシステム全体がアップグレードされるように、インストールされる(ステップ908)。
図10は、一実施例に従ってランタイム環境によりシステムのバージョンを選択する方法を概略的に示すフローチャートである。プロセス1000は、図6のプロファイル・マネージャ634などの、ソフトウェア・プロセス上で実行するソフトウェア方法である。プロセス1000は、クラスタ内の各ノードが同じアップデート・インストーラ・パッケージをインストールされていること、および、それらのパッケージが無矛盾の仕方でインストールされたということを想定する。従って、もし既存のプロファイル・ツールがプロファイルとランタイムとの間の関連付けを更新するために拡張され、かつノード・エージェントを用いて全ノードにプッシュアウトされるならば、この関連付けは容易に行われ得る。該関連付けを格納するために、ファイル、例えば、プロファイル¥AppSrv01¥config¥cells¥cellName¥nodes¥nodeName¥runtime version.xml内のファイル、が導入され得る。
プロセス1000は、プロファイルを起動することにより始まる(ステップ1002)。プロセス1000は、ユーザ・インターフェースが特定のバージョン・レベルでプロファイルとランタイム・サーバ・インスタンスとの間の関連付けをセットアップすることを可能にする(ステップ1004)。
プロセス1000は、要求を満たすためにエンタープライズ・アプリケーション・サーバのどのバージョンが使用されるべきかを特定する(ステップ1006)。プロセス1000は、その特定を、図6のプロファイル識別子636などのプロファイル識別子に基づいて行う。選択されたバージョンからのファイルを包含するクラスパスが構築され、以前のバージョンからの任意の必要なファイルでバックフィルされる(ステップ1008)。例えば、バージョン6.1.0.25がプロファイル識別子により示される。その後、バージョン6.1.0.25をバージョン6.1.0.25に包含されていない任意の必要なファイルでバックフィルするためにバージョン−ベース−6.1.0.0が使用される。必要とされたバージョンが起動され(ステップ1010)、その後、該プロセスは終了する。
このように、実施例は、システムのランタイム環境を構築するためのコンピュータ実行方法、有形記憶媒体、およびデータ処理システムを提供する。プロファイル・マネージャは、プロファイル識別子を包含するサービス要求を受け取る。プロファイル識別子は、少なくとも1つのソフトウェア・コンポーネントの必要とされるバージョンを指定する。プロファイル・マネージャは、該ソフトウェア・コンポーネントの完全なインストレーションと、少なくとも1つのデルタ・ファイルとを特定する。プロファイル・マネージャは、その少なくとも1つのデルタ・ファイルからのファイルと、それらに続く、該完全なインストレーションからのファイルとを優先的に利用することによって、該必要とされるバージョンのためのクラスパスを動的に構築する。ランタイム環境は、その後、そのクラスパスを利用して構築される。
実施例は、アプリケーション/プロファイルがランタイム中にランタイム環境のバージョンを選択するためのコンピュータ実行方法、システムおよびコンピュータ・プログラム製品を提供する。一実施例では、エンタープライズ・アプリケーション・サーバ・フィックス・パックのアップグレードは、仮想インストレーションのように機能し、エンタープライズ・アプリケーション・サーバのバージョンを全体としてはアップグレードしない。代わりに、アプリケーション・スタートアップまたはプロファイル・スタートアップ段階の間にどちらのバージョンも選択され得るように、アップグレード後に現在のバージョンとより新しいバージョンとの両方がシステムに存在するべきである。
別の1つの実施例では、ベース・バージョンとアップグレードされたバージョンとを含む種々のランタイム・バージョンがシステムにおいて維持されて、ランタイム選択に基づいて動的にロードされる。
プロファイルのランタイム環境へのマッチングは、プロファイル・マネージャ・ツールによって、あるいは該プロファイルの頂部の何らかのディプロイメント記述子を編集することによって、行われることができる。ノード・クラスタの各ノード上の対応するプロファイルは、クラスタの各ノード上の対応するランタイム・バージョンにマッチングされなければならないかもしれない。
図面中のフローチャートおよびブロック図は、本発明の種々の実施態様に従うシステム、方法およびコンピュータ・プログラム製品の可能なインプリメンテーションのアーキテクチャ、機能性、および動作を示す。これに関して、該フローチャートまたはブロック図中の各ブロックは、指定された論理機能(1つまたは複数)を実行するための1つ以上の実行可能な命令を含むコードのモジュール、セグメント、または部分を表わすことができる。或る代わりのインプリメンテーションでは、ブロック中に記されている機能は図に記されている順序から外れて生じ得ることにも留意するべきである。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行されることがあり、あるいは、それらのブロックは、ときには、関係する機能性に依存して逆の順序で実行されることがある。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、指定された機能または行為を実行する特殊目的ハードウェア・ベースのシステムにより、あるいは特殊目的ハードウェアおよびコンピュータ命令の組み合わせにより、実行され得ることにも留意するべきである。
ここで使用されている術語は、特定の実施態様だけを記述することを目的としているのであって、本発明を限定するべく意図されているのではない。さらに、“含む”という用語は、この明細書で使用されるとき、述べられた機能、インテジャー、ステップ、操作、エレメント、またはコンポーネントあるいはそれらのうちの組み合わせの存在を明示するけれども、1つ以上の他の機能、インテジャー、ステップ、操作、エレメント、コンポーネントまたはそれらのグループあるいはそれらの組み合わせの存在または付加を除外しないことが理解されるであろう。
添付の請求項の中の全ての手段またはステッププラス・ファンクションの要素の対応する構造、材料、行為、および同等物は、請求項において明示された他の要素と組み合わされた機能を実行するための任意の構造、材料、または行為を含むように意図されている。本発明の記述は、解説および記述を目的として提示されているが、網羅的であることあるいは開示された形の発明に限定されることは意図されていない。本発明の範囲を逸脱しない多くの改変および変化形が、当業者にとっては明らかであろう。実施態様は、本発明の原理および実際的応用を最善に説明するとともに、熟慮されている特定の使用法に適する種々の改変を伴う種々の実施態様について他の当業者が本発明を理解することを可能にするために選択され記述された。
本発明は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様あるいはハードウェア要素およびソフトウェア要素の両方を包含する実施態様の形をとることができる。1つの好ましい実施態様では、本発明はソフトウェアで実現され、それはファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されない。
さらに、本発明は、コンピュータまたは任意の命令実行システムにより、あるいはそれらと関連して、使用されるプログラム・コードを提供するコンピュータ使用可能なあるいはコンピュータ可読の媒体からアクセスし得るコンピュータ・プログラム製品の形をとることができる。この記述の目的上、コンピュータ使用可能なあるいはコンピュータ可読の媒体は、命令実行システム、装置、またはデバイスにより、あるいはこれらと関連して、使用されるプログラムを包含し、記憶し、伝達し、伝播し、あるいは移送することのできる任意の有形装置であり得る。
媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム(あるいは装置またはデバイス)、あるいは伝播媒体であり得る。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(random access memory(RAM))、読み出し専用メモリ(read−only memory(ROM))、堅固な磁気ディスクおよび光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−読み出し専用メモリ(compact disk−read only memory(CD−ROM))、コンパクト・ディスク−読出し/書き込み(compact disk−read/write(CD−R/W))およびDVDを含む。
プログラム・コードの記憶または実行あるいはその両方を行うのに適するデータ処理システムは、システム・バスを通して記憶素子に直接あるいは間接的に接続された少なくとも1つのプロセッサを含むであろう。記憶素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、および、実行中にコードを大容量記憶装置から取り出さなければならない回数を減らすために少なくとも幾らかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリを含むことができる。
入力/出力装置あるいはI/O装置(キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらに限定されない)は、直接、あるいは中間のI/Oコントローラを通して、システムに接続され得る。
中間の構内ネットワークまたは公衆網を通してデータ処理システムを他のデータ処理システムまたは遠隔プリンタまたは記憶装置に接続できるようにネットワーク・アダプタをシステムに接続させることもできる。モデム、ケーブル・モデムおよびイーサネット(R)・カードは、現在利用できるタイプのネットワーク・アダプタのほんの幾つかである。
本発明の記述は、解説および記述を目的として提示されているが、網羅的であることあるいは開示された形の発明に限定されることは意図されていない。多くの改変および変化形が、当業者にとっては明らかであろう。実施態様は、本発明の原理および実際的応用を最善に説明するとともに、熟慮されている特定の使用法に適する種々の改変を伴う種々の実施態様について他の当業者が本発明を理解することを可能にするために選択され記述された。

Claims (6)

  1. システムのランタイム環境を構築するためのコンピュータ実行方法であって:
    少なくとも1つのソフトウェア・コンポーネントの必要とされるバージョンを指定するプロファイル識別子を包含するサービス要求をプロセッサにより受け取るステップと;
    前記ソフトウェア・コンポーネントの完全なインストレーションと少なくとも1つのデルタ・ファイルとをプロセッサにより特定するステップと;
    前記少なくとも1つのデルタ・ファイルからのファイルと、それらに続く、前記完全なインストレーションからのファイルとを優先的に利用することによって、前記必要とされるバージョンのためのクラスパスをプロセッサにより構築するステップであって、
    前記ランタイム環境はオブジェクト指向プログラム・コード・ランタイム環境を含み、前記クラスパスは、前記必要とされるバージョンでユーザ・プロファイルにおいて指定されたオブジェクト指向プログラム・コード・クラスに複数のオブジェクト指向プログラム・コード・ソフトウェア・コンポーネントのうちのいずれかを論理的に重ね合わせることにより指定され、前記サービス要求内の前記プロファイル識別子は、必要とされるオブジェクト指向プログラム・コード・クラスのバージョンを指定しており、
    前記少なくとも1つのデルタ・ファイルは第1デルタ・ファイルおよび第2デルタ・ファイルをさらに含み、前記第1デルタ・ファイルは前記完全なインストレーションに対する1番目のアップデートであり、前記第2デルタ・ファイルは前記完全なインストレーションに対する2番目のアップデートであり、前記少なくとも1つのデルタ・ファイルからのファイルと、それらに続く、前記完全なインストレーションからのファイルとを優先的に利用することによって前記必要とされるバージョンのためのクラスパスを動的に構築する前記ステップは:
    前記第2デルタ・ファイル内のファイルおよびディレクトリをプロセッサにより用いるステップと;
    前記第2デルタ・ファイル内の前記ファイルおよび前記ディレクトリを用いることにプロセッサにより応答して、前記第1デルタ・ファイル内のファイルおよびディレクトリを用いるステップと;
    前記第1デルタ・ファイル内の前記ファイルおよび前記ディレクトリを用いることに応答して、前記完全なインストレーション内のファイルおよびディレクトリをプロセッサにより用いるステップと;
    をさらに含む、方法。
  2. 前記ランタイム環境は前記システム内の複数のランタイム環境の1つを含み、各ランタイム環境はオブジェクト指向プログラム仮想マシンの別々のインスタンスにおいて実現される、請求項1に記載の方法。
  3. 前記複数のランタイム環境のうちのランタイム環境は、前記複数のランタイム環境のうちの前記ランタイム環境が自分自身の構成ファイル、ログ、およびプロパティを有するように、前記少なくとも1つのデルタ・ファイルのうちの異なるデルタ・ファイルを利用する、請求項に記載の方法。
  4. 前記ソフトウェア・コンポーネントの前記完全なインストレーションは、エンタープライズ・アプリケーション・サーバの完全なインストレーションである、請求項1に記載の方法。
  5. 請求項1ないしのいずれか1つに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
  6. その上にコード化されているシステムのランタイム環境を構築するための命令を有する記憶単位と;
    前記記憶単位をプロセッサに接続するバス・システムと;
    請求項1ないしのいずれかの前記ステップを行うために前記命令を実行するプロセッサと;
    を含むデータ処理システム。
JP2012510271A 2009-05-13 2010-05-11 ランタイム環境を構築するためのシステムおよび方法 Expired - Fee Related JP5663006B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/465,282 2009-05-13
US12/465,282 US8375382B2 (en) 2009-05-13 2009-05-13 Enabling parallel websphere runtime versions
PCT/EP2010/056457 WO2010130734A1 (en) 2009-05-13 2010-05-11 System and method for building and updating a runtime environment

Publications (2)

Publication Number Publication Date
JP2012527027A JP2012527027A (ja) 2012-11-01
JP5663006B2 true JP5663006B2 (ja) 2015-02-04

Family

ID=42352292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012510271A Expired - Fee Related JP5663006B2 (ja) 2009-05-13 2010-05-11 ランタイム環境を構築するためのシステムおよび方法

Country Status (5)

Country Link
US (2) US8375382B2 (ja)
EP (1) EP2430529A1 (ja)
JP (1) JP5663006B2 (ja)
CN (1) CN102422266A (ja)
WO (1) WO2010130734A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324685B1 (en) 1998-03-18 2001-11-27 Becomm Corporation Applet server that provides applets in various forms
US8375382B2 (en) * 2009-05-13 2013-02-12 International Business Machines Corporation Enabling parallel websphere runtime versions
US9841982B2 (en) * 2011-02-24 2017-12-12 Red Hat, Inc. Locating import class files at alternate locations than specified in classpath information
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
CN102955702B (zh) * 2011-08-23 2016-08-10 腾讯科技(深圳)有限公司 一种软件安装及升级方法和装置
US20130117738A1 (en) * 2011-11-03 2013-05-09 Microsoft Corporation Server Upgrades with Safety Checking and Preview
US9275355B2 (en) * 2012-09-24 2016-03-01 International Business Machines Corporation Business process model analyzer and runtime selector
GB2507305A (en) 2012-10-25 2014-04-30 Ibm Server client negotiation of version selection in a messaging system
US20140366010A1 (en) * 2013-06-10 2014-12-11 Hua Fan Enabling parallel websphere runtime on different computer
US9383986B2 (en) * 2013-06-18 2016-07-05 Disney Enterprises, Inc. Safe low cost web services software deployments
CN103389910B (zh) * 2013-07-18 2016-03-30 百度在线网络技术(北京)有限公司 构建虚拟机的方法、虚拟机的管理方法及其装置
US9230208B2 (en) * 2013-12-18 2016-01-05 International Business Machines Corporation Haptic-based artificial neural network training
KR102271265B1 (ko) 2014-01-21 2021-07-01 오라클 인터내셔날 코포레이션 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티 테넌시를 지원하기 위한 시스템 및 방법
US9996339B2 (en) * 2014-06-04 2018-06-12 Microsoft Technology Licensing, Llc Enhanced updating for digital content
US9400663B2 (en) 2014-09-03 2016-07-26 International Business Machines Corporation Managing middleware using an application manager
EP3198431A1 (en) 2014-09-24 2017-08-02 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US10318280B2 (en) 2014-09-24 2019-06-11 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US9519468B2 (en) * 2015-02-13 2016-12-13 Oracle International Corporation Modular co-versioning in a dynamically linked runtime environment
CN106776125B (zh) * 2016-11-25 2020-04-10 武汉斗鱼网络科技有限公司 一种实现pc客户端软件实时修复的方法及装置
US10725808B2 (en) * 2017-01-04 2020-07-28 International Business Machines Corporation Virtual machine image conversion
US11237814B2 (en) 2017-08-17 2022-02-01 Oracle International Corporation System and method for supporting custom hooks during patching in an application server environment
CN109408067B (zh) * 2018-10-22 2021-10-22 明度智云(浙江)科技有限公司 一种基于单体应用的数据管理方法和服务器
CN112035153B (zh) * 2019-05-14 2021-08-24 腾讯科技(深圳)有限公司 应用更新方法、装置、终端及存储介质
CN114416133B (zh) * 2021-12-30 2024-07-02 武汉卓目科技股份有限公司 一种嵌入式文件数据更新方法及系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779406B2 (en) 1999-04-16 2010-08-17 Microsoft Corporation Method and system for managing lifecycles of deployed applications
US6964033B2 (en) * 2001-06-20 2005-11-08 Sun Microsystems, Inc. Object band customization of Java runtime environments
US7600225B2 (en) * 2003-07-21 2009-10-06 Microsoft Corporation System and method for intra-package delta compression of data
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7657533B2 (en) 2003-11-26 2010-02-02 Hewlett-Packard Development Company, L.P. Data management systems, data management system storage devices, articles of manufacture, and data management methods
US7398523B2 (en) 2004-08-19 2008-07-08 International Business Machines Corporation Adaptive class loading
US20060184937A1 (en) 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US8245216B2 (en) 2005-10-11 2012-08-14 Oracle International Corporation Patch management system
JP4725798B2 (ja) * 2006-06-21 2011-07-13 日本電気株式会社 コンピュータシステム、ネットワークブートシステム、osイメージ切替方法、osイメージ切替プログラム
JP5040301B2 (ja) * 2006-12-27 2012-10-03 日本電気株式会社 端末管理システム、方法、及び、プログラム
WO2008131460A2 (en) 2007-04-24 2008-10-30 Stacksafe, Inc. System and method for creating a virtual assurance system
US9262366B2 (en) * 2007-09-21 2016-02-16 Microsoft Technology Licensing, Llc Software deployment in large-scale networked systems
US9477462B2 (en) * 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
US8375382B2 (en) 2009-05-13 2013-02-12 International Business Machines Corporation Enabling parallel websphere runtime versions

Also Published As

Publication number Publication date
WO2010130734A1 (en) 2010-11-18
EP2430529A1 (en) 2012-03-21
CN102422266A (zh) 2012-04-18
US20120198433A1 (en) 2012-08-02
US8392906B2 (en) 2013-03-05
US8375382B2 (en) 2013-02-12
JP2012527027A (ja) 2012-11-01
US20100293537A1 (en) 2010-11-18

Similar Documents

Publication Publication Date Title
JP5663006B2 (ja) ランタイム環境を構築するためのシステムおよび方法
US7814476B2 (en) Systems and methods for updating software
US8397227B2 (en) Automatic deployment of Java classes using byte code instrumentation
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US7694277B2 (en) Cross version customization of design environment
US8136100B1 (en) Software installation and icon management support
US9779111B2 (en) Method and system for configuration of virtualized software applications
KR101963912B1 (ko) 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법
US6484309B2 (en) Enabling software designed for one operating system to operate on another operating system
CN100583032C (zh) 用于动态提供本地库及其相关性的方法和系统
US6826750B1 (en) Method of automatically selecting program and data updates based upon versions
US6938250B2 (en) Image-based software installation
US7434215B2 (en) Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy
EP3084596B1 (en) Executable code for constrained computing environments
US20130047150A1 (en) Software installation and process management support
US20090070752A1 (en) Method and system for optimization of an application
US8387032B1 (en) Captive runtime deployment
US20070078947A1 (en) Apparatus, System and Method for Detecting Old Versions of an Applet in a Client Browser's JVM
JP7311710B2 (ja) 実行時コンテナ
US20090144751A1 (en) Automatic discovery of the java classloader delegation hierarchy
US7987457B2 (en) Targeted patching for native generation images
US20170083298A1 (en) Resilient format for distribution of ahead-of-time compiled code components
US20140366010A1 (en) Enabling parallel websphere runtime on different computer
JP2006286003A (ja) 機能を追加するように、移動通信機器にてアプリケーションを拡張するシステム、およびその方法
TWI549056B (zh) 以函式庫作業系統達成之應用程式相容性

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141205

R150 Certificate of patent or registration of utility model

Ref document number: 5663006

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees