JP2000322261A - 複数のアプリケーションプログラムを実行する単一処理環境を有するコンピュータシステム - Google Patents
複数のアプリケーションプログラムを実行する単一処理環境を有するコンピュータシステムInfo
- Publication number
- JP2000322261A JP2000322261A JP2000120923A JP2000120923A JP2000322261A JP 2000322261 A JP2000322261 A JP 2000322261A JP 2000120923 A JP2000120923 A JP 2000120923A JP 2000120923 A JP2000120923 A JP 2000120923A JP 2000322261 A JP2000322261 A JP 2000322261A
- Authority
- JP
- Japan
- Prior art keywords
- instance
- factory
- program
- library
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】オフ゛シ゛ェクト指向フ゜ロク゛ラム開発において、以前に開
発したオフ゛シ゛ェクトのテスト済みの振舞いを新たな製品に含め
ることを可能にすること。 【解決手段】単一の処理空間を有する環境(200)を含
む、コンヒ゜ュータシステムである。かかる環境において、複数のア
フ゜リケーションフ゜ロク゛ラム(311,313)が競合なしに共通のライフ゛ラリフ゜
ロク゛ラム仕様(312)を参照できる。例えば、第1のアフ゜リケーション
フ゜ロク゛ラム(340)がライフ゛ラリオフ゛シ゛ェクト(348)のインスタンス生成を要
求する場合、そのライフ゛ラリオフ゛シ゛ェクトがライフ゛ラリのファクトリオフ゛シ゛
ェクト(346)によりインスタンス生成される。各アフ゜リケーションフ゜ロク゛ラム
に対するシンク゛ルトンファクトリオフ゛シ゛ェクトのインスタンス変数は、ライフ゛ラリ
オフ゛シ゛ェクト間に共用テ゛ータを提供する。統合フ゜ロク゛ラム仕様の
方法には、ファクトリクラスを含むためにライフ゛ラリクラスを改訂する
こと、ファクトリインスタンス変数として静的クラス変数を書き直すこ
と、及びファクトリインスタンス変数に関して静的クラス変数に対する
全ての参照を置換するためにライフ゛ラリを再コンハ゜イルことを含
む。
発したオフ゛シ゛ェクトのテスト済みの振舞いを新たな製品に含め
ることを可能にすること。 【解決手段】単一の処理空間を有する環境(200)を含
む、コンヒ゜ュータシステムである。かかる環境において、複数のア
フ゜リケーションフ゜ロク゛ラム(311,313)が競合なしに共通のライフ゛ラリフ゜
ロク゛ラム仕様(312)を参照できる。例えば、第1のアフ゜リケーション
フ゜ロク゛ラム(340)がライフ゛ラリオフ゛シ゛ェクト(348)のインスタンス生成を要
求する場合、そのライフ゛ラリオフ゛シ゛ェクトがライフ゛ラリのファクトリオフ゛シ゛
ェクト(346)によりインスタンス生成される。各アフ゜リケーションフ゜ロク゛ラム
に対するシンク゛ルトンファクトリオフ゛シ゛ェクトのインスタンス変数は、ライフ゛ラリ
オフ゛シ゛ェクト間に共用テ゛ータを提供する。統合フ゜ロク゛ラム仕様の
方法には、ファクトリクラスを含むためにライフ゛ラリクラスを改訂する
こと、ファクトリインスタンス変数として静的クラス変数を書き直すこ
と、及びファクトリインスタンス変数に関して静的クラス変数に対する
全ての参照を置換するためにライフ゛ラリを再コンハ゜イルことを含
む。
Description
【0001】
【発明の属する技術分野】本発明の実施態様は、オブジ
ェクト指向プログラムを開発する方法と、オブジェクト
指向プログラムを実行するシステムとに関する。
ェクト指向プログラムを開発する方法と、オブジェクト
指向プログラムを実行するシステムとに関する。
【0002】
【従来の技術】オブジェクト指向プログラムは、次のよ
うなコンピュータプログラミング言語で書かれたコンピ
ュータプログラムである。すなわち、互いの間でメッセ
ージを渡すことによって協動するよう設計されたソフト
ウェアコンポーネントを記述するための意味論を有する
コンピュータプログラミング言語である。かかるコンピ
ュータプログラムは、いわゆる「オブジェクト」の振舞
いの組合せとしてプログラム全体の振舞いを定義する。
オブジェクトは、データ構造と振舞いの連係である。オ
ブジェクト指向プログラムは、マルチタスクプログラム
の振舞いを採用することができる。
うなコンピュータプログラミング言語で書かれたコンピ
ュータプログラムである。すなわち、互いの間でメッセ
ージを渡すことによって協動するよう設計されたソフト
ウェアコンポーネントを記述するための意味論を有する
コンピュータプログラミング言語である。かかるコンピ
ュータプログラムは、いわゆる「オブジェクト」の振舞
いの組合せとしてプログラム全体の振舞いを定義する。
オブジェクトは、データ構造と振舞いの連係である。オ
ブジェクト指向プログラムは、マルチタスクプログラム
の振舞いを採用することができる。
【0003】オブジェクト指向プログラムを実行するコ
ンピュータは、一度に1つの命令のみを実行する1つの
中央処理装置のみを有しているが、各オブジェクトの命
令の中には、タイムシェアリングの周知の技術によりス
ライスで順次実行されるものもある。
ンピュータは、一度に1つの命令のみを実行する1つの
中央処理装置のみを有しているが、各オブジェクトの命
令の中には、タイムシェアリングの周知の技術によりス
ライスで順次実行されるものもある。
【0004】オブジェクト指向プログラムは、同様の全
振舞いを提供する従来からの非オブジェクト指向プログ
ラムよりも、広範囲の入力に応答するように見える。プ
ログラマは、オブジェクト指向プログラミング技術を使
用して開発されたプログラムが、複雑な振舞いに関し
て、数が多すぎてすべての組合せでテストを行うことが
できない広範囲の入力からの特定の入力シーケンスに対
し、正しい振舞いを提供する可能性がより高い、という
ことが分っている。
振舞いを提供する従来からの非オブジェクト指向プログ
ラムよりも、広範囲の入力に応答するように見える。プ
ログラマは、オブジェクト指向プログラミング技術を使
用して開発されたプログラムが、複雑な振舞いに関し
て、数が多すぎてすべての組合せでテストを行うことが
できない広範囲の入力からの特定の入力シーケンスに対
し、正しい振舞いを提供する可能性がより高い、という
ことが分っている。
【0005】オブジェクト指向プログラミング言語の意
味論により、複数のオブジェクトを有するプログラムの
記述が可能となる。その各オブジェクトは、それ自身の
値で動作する。例えば、ランダムに、ランダムな位置お
よびサイズで、連続してかつ表面上は同時に再描画され
ている複数の円の表示を、複数のオブジェクトを用いた
オブジェクト指向プログラムによって定義することがで
きる。その各オブジェクトは、1つの円を描画する機能
を有し、それ自身の変数に排他的にアクセスして動作す
る。中央処理装置(CPU)によって分るように、オブ
ジェクトの振舞いは、メモリ内の特定のアドレスからフ
ェッチされた、CPUに適した実行可能命令コードにお
ける命令シーケンスとして、表現されている。かかる命
令により、CPUは、メモリ内の特定のアドレスにおい
て多くの変数の値を読出し修正する。円の再描画を表面
的に同時に実現するために、各オブジェクトの実行はタ
イムスライスに制限されている。タイムスライスは、円
描画オブジェクトの1つによって実行されているシーケ
ンス中にいつ何時でも消滅する可能性があることから、
特定のオブジェクトに別のタイムスライスが与えられる
時に特定の円を続けるために、CPUが、命令シーケン
ス(スレッド)における位置を記述するデータを保存
し、後に参照しなければならない。
味論により、複数のオブジェクトを有するプログラムの
記述が可能となる。その各オブジェクトは、それ自身の
値で動作する。例えば、ランダムに、ランダムな位置お
よびサイズで、連続してかつ表面上は同時に再描画され
ている複数の円の表示を、複数のオブジェクトを用いた
オブジェクト指向プログラムによって定義することがで
きる。その各オブジェクトは、1つの円を描画する機能
を有し、それ自身の変数に排他的にアクセスして動作す
る。中央処理装置(CPU)によって分るように、オブ
ジェクトの振舞いは、メモリ内の特定のアドレスからフ
ェッチされた、CPUに適した実行可能命令コードにお
ける命令シーケンスとして、表現されている。かかる命
令により、CPUは、メモリ内の特定のアドレスにおい
て多くの変数の値を読出し修正する。円の再描画を表面
的に同時に実現するために、各オブジェクトの実行はタ
イムスライスに制限されている。タイムスライスは、円
描画オブジェクトの1つによって実行されているシーケ
ンス中にいつ何時でも消滅する可能性があることから、
特定のオブジェクトに別のタイムスライスが与えられる
時に特定の円を続けるために、CPUが、命令シーケン
ス(スレッド)における位置を記述するデータを保存
し、後に参照しなければならない。
【0006】各オブジェクトは、振舞いと状態とを有す
る。オブジェクトの機能(関数)(すなわち、動作また
はサービス)は、その振舞いと呼ばれる。変数の値を記
述するデータおよび命令シーケンスの位置を記述するデ
ータは、まとめてオブジェクトの状態と呼ばれる。オブ
ジェクト指向プログラムは、プログラム仕様において、
各々固有のオブジェクトの振舞いおよびその関数に必要
な変数を定義する。この定義は、プログラミング言語に
よっては、クラスと呼ばれる。オブジェクトの1つまた
は複数のインスタンスは、このクラスから動作を開始す
る(例えば、インスタンス生成される)ことができる。
る。オブジェクトの機能(関数)(すなわち、動作また
はサービス)は、その振舞いと呼ばれる。変数の値を記
述するデータおよび命令シーケンスの位置を記述するデ
ータは、まとめてオブジェクトの状態と呼ばれる。オブ
ジェクト指向プログラムは、プログラム仕様において、
各々固有のオブジェクトの振舞いおよびその関数に必要
な変数を定義する。この定義は、プログラミング言語に
よっては、クラスと呼ばれる。オブジェクトの1つまた
は複数のインスタンスは、このクラスから動作を開始す
る(例えば、インスタンス生成される)ことができる。
【0007】一般に、複雑なプログラムは、時にパッケ
ージと呼ばれるモジュールで書かれる。一緒にされるす
べてのモジュールにおいてプログラマによって与えられ
る定義は、一度に1モジュールでコンパイルされ、次
に、そのコンパイルの結果はリンクされて、メモリアド
レスに具体的に関係する実行可能コードが形成される。
リンキングは、特定モジュールのオブジェクトが必要と
なる直前まで遅延する場合もある。
ージと呼ばれるモジュールで書かれる。一緒にされるす
べてのモジュールにおいてプログラマによって与えられ
る定義は、一度に1モジュールでコンパイルされ、次
に、そのコンパイルの結果はリンクされて、メモリアド
レスに具体的に関係する実行可能コードが形成される。
リンキングは、特定モジュールのオブジェクトが必要と
なる直前まで遅延する場合もある。
【0008】動作中、各オブジェクトの各インスタンス
の状態に対しメモリが割当てられる。上記表示例につい
て引続き述べると、円描画オブジェクトのすべてが同じ
振舞いを有するため、メモリは、特定の時間に、すべて
の円描画オブジェクトによって使用される円を描画する
という振舞いの1つのコピー(例えば、クラスのメソッ
ド仕様に対する命令コード)、および円描画オブジェク
トの各インスタンスに対する円描画状態(例えば、クラ
スのプロトタイプによって定義された)の1つのコピー
を含む場合がある。
の状態に対しメモリが割当てられる。上記表示例につい
て引続き述べると、円描画オブジェクトのすべてが同じ
振舞いを有するため、メモリは、特定の時間に、すべて
の円描画オブジェクトによって使用される円を描画する
という振舞いの1つのコピー(例えば、クラスのメソッ
ド仕様に対する命令コード)、および円描画オブジェク
トの各インスタンスに対する円描画状態(例えば、クラ
スのプロトタイプによって定義された)の1つのコピー
を含む場合がある。
【0009】
【発明が解決しようとする課題】プログラマのチーム
が、何年にもわたってコンピュータプログラムを含む製
品を開発する場合、次の製品に、以前に開発したオブジ
ェクトのうちのいくつかのテスト済みの振舞いを含める
ことが望ましい。しかしながら、かかるオブジェクト
は、独立して定義されていない関数を含む場合がある。
これは、例えば、関数間のデータの共用が、オブジェク
トの状態の範囲を越えて1つまたは複数の変数に関して
実行されていることによる。モジュール間の独立性を確
立する簡単な方法が無いため、次の製品に含まれる各モ
ジュールの各振舞いを再度書くということはコストがか
かるが、避けることができない。そのような仕事の時間
および費用により、市場に出ない製品もある。従って、
競争の広がりおよびペースが抑えられ、社会への利益が
実現されない。
が、何年にもわたってコンピュータプログラムを含む製
品を開発する場合、次の製品に、以前に開発したオブジ
ェクトのうちのいくつかのテスト済みの振舞いを含める
ことが望ましい。しかしながら、かかるオブジェクト
は、独立して定義されていない関数を含む場合がある。
これは、例えば、関数間のデータの共用が、オブジェク
トの状態の範囲を越えて1つまたは複数の変数に関して
実行されていることによる。モジュール間の独立性を確
立する簡単な方法が無いため、次の製品に含まれる各モ
ジュールの各振舞いを再度書くということはコストがか
かるが、避けることができない。そのような仕事の時間
および費用により、市場に出ない製品もある。従って、
競争の広がりおよびペースが抑えられ、社会への利益が
実現されない。
【0010】
【課題を解決するための手段】本発明の様々な態様によ
るメモリは、動作時に状態の示標(indicia)を与える
オブジェクト指向プログラムの示標を有する。この状態
は、ファクトリの2つのインスタンスとオブジェクトの
2つのインスタンスとを含む。ファクトリの第1のイン
スタンスは、第1のインスタンス変数を含む。ファクト
リの第2のインスタンスは、第2のインスタンス変数を
含む。第1のインスタンス変数は、ファクトリによる第
1のオブジェクトのインスタンス生成または第1のオブ
ジェクトの動作に応答する。第2のインスタンス変数
は、第2のファクトリによる第2のオブジェクトのイン
スタンス生成または第2のオブジェクトの動作に応答す
る。第1のインスタンス変数は、第2のオブジェクトの
インスタンス生成と第2のオブジェクトの動作との両方
から独立している。
るメモリは、動作時に状態の示標(indicia)を与える
オブジェクト指向プログラムの示標を有する。この状態
は、ファクトリの2つのインスタンスとオブジェクトの
2つのインスタンスとを含む。ファクトリの第1のイン
スタンスは、第1のインスタンス変数を含む。ファクト
リの第2のインスタンスは、第2のインスタンス変数を
含む。第1のインスタンス変数は、ファクトリによる第
1のオブジェクトのインスタンス生成または第1のオブ
ジェクトの動作に応答する。第2のインスタンス変数
は、第2のファクトリによる第2のオブジェクトのイン
スタンス生成または第2のオブジェクトの動作に応答す
る。第1のインスタンス変数は、第2のオブジェクトの
インスタンス生成と第2のオブジェクトの動作との両方
から独立している。
【0011】例えば、各ファクトリの第1および第2の
インスタンス変数が、第1および第2のオブジェクトの
インスタンス生成に応答する場合、各ファクトリは、そ
の結果として、インスタンス生成されたオブジェクトの
数のカウントを保持する。各オブジェクトは、そのファ
クトリに適用するそれぞれのインスタンスの数を読出す
ことができる。それぞれのファクトリのインスタンス変
数としてインスタンスのカウントを実行することによ
り、オブジェクトのクラスの静的変数とは対照的に、第
1および第2のオブジェクトは、互いに無関係に実行す
ることができる。別の例として、実行環境に、単一の処
理空間をサポートするJAVA仮想マシン(JVM)が
含まれる場合、上述したように独立して実行することに
より、複数のアプリケーションプログラムをJVMによ
って並行して実行することが可能である。
インスタンス変数が、第1および第2のオブジェクトの
インスタンス生成に応答する場合、各ファクトリは、そ
の結果として、インスタンス生成されたオブジェクトの
数のカウントを保持する。各オブジェクトは、そのファ
クトリに適用するそれぞれのインスタンスの数を読出す
ことができる。それぞれのファクトリのインスタンス変
数としてインスタンスのカウントを実行することによ
り、オブジェクトのクラスの静的変数とは対照的に、第
1および第2のオブジェクトは、互いに無関係に実行す
ることができる。別の例として、実行環境に、単一の処
理空間をサポートするJAVA仮想マシン(JVM)が
含まれる場合、上述したように独立して実行することに
より、複数のアプリケーションプログラムをJVMによ
って並行して実行することが可能である。
【0012】本発明の様々な態様によるプリンタは、プ
リントエンジンと、プロセッサと、メモリと、を含む。
プロセッサは、プリントエンジンに対してデータを供給
する。メモリは、プロセッサにより上述した状態の示標
を提供するよう実行されるオブジェクト指向プログラム
の示標を有する。例えば、それぞれのファクトリの第1
および第2のインスタンス変数が、それぞれのオブジェ
クトの動作に応答する場合、各オブジェクトは、他のオ
ブジェクトの動作とは無関係にそのファクトリのインス
タンス変数を使用することができる。別の例として、実
行環境に、単一の処理空間をサポートするJAVA仮想
マシン(JVM)が含まれる場合、上述したように独立
して実行することにより、複数のアプリケーションプロ
グラムが、独立した状態を有する同じライブラリオブジ
ェクトの振舞いを独立して使用することができる。
リントエンジンと、プロセッサと、メモリと、を含む。
プロセッサは、プリントエンジンに対してデータを供給
する。メモリは、プロセッサにより上述した状態の示標
を提供するよう実行されるオブジェクト指向プログラム
の示標を有する。例えば、それぞれのファクトリの第1
および第2のインスタンス変数が、それぞれのオブジェ
クトの動作に応答する場合、各オブジェクトは、他のオ
ブジェクトの動作とは無関係にそのファクトリのインス
タンス変数を使用することができる。別の例として、実
行環境に、単一の処理空間をサポートするJAVA仮想
マシン(JVM)が含まれる場合、上述したように独立
して実行することにより、複数のアプリケーションプロ
グラムが、独立した状態を有する同じライブラリオブジ
ェクトの振舞いを独立して使用することができる。
【0013】本発明の様々な態様による、第1のプログ
ラム仕様をアプリケーションプログラム仕様に統合する
方法には、いかなる順序でも実行される2つのステップ
が含まれる。第1の仕様は、静的データに対する参照を
含む。結果としての統合は、ある環境、例えば上述した
JVMにおいて動作する。ステップのうちの1つでは、
改訂された第1の仕様が、ファクトリ仕様を含むように
作成される。ここで、ファクトリは、改訂された第1の
仕様に従ってオブジェクトのインスタンス生成を実行す
るように指定され、ファクトリ仕様は、ファクトリイン
スタンスデータを定義する。別のステップでは、静的デ
ータに対する第1の参照が、ファクトリインスタンスデ
ータに対する第2の参照に置換され、ファクトリ仕様に
従ってインスタンス生成されたファクトリオブジェクト
が、第1の改訂された仕様のそれぞれのオブジェクトの
インスタンス生成に対する各要求に応答するように、各
アプリケーション仕様が作成される。
ラム仕様をアプリケーションプログラム仕様に統合する
方法には、いかなる順序でも実行される2つのステップ
が含まれる。第1の仕様は、静的データに対する参照を
含む。結果としての統合は、ある環境、例えば上述した
JVMにおいて動作する。ステップのうちの1つでは、
改訂された第1の仕様が、ファクトリ仕様を含むように
作成される。ここで、ファクトリは、改訂された第1の
仕様に従ってオブジェクトのインスタンス生成を実行す
るように指定され、ファクトリ仕様は、ファクトリイン
スタンスデータを定義する。別のステップでは、静的デ
ータに対する第1の参照が、ファクトリインスタンスデ
ータに対する第2の参照に置換され、ファクトリ仕様に
従ってインスタンス生成されたファクトリオブジェクト
が、第1の改訂された仕様のそれぞれのオブジェクトの
インスタンス生成に対する各要求に応答するように、各
アプリケーション仕様が作成される。
【0014】第1の仕様と、アプリケーション仕様を改
訂する(または最初に書き込む)ための基準とに対する
改訂により、例えば複数の別々の処理空間を可能にする
ために実行環境を修正するよりもかなり簡単な態様で、
並行してアプリケーションを実行することが可能にな
る。複数のアプリケーションプログラムを実行する能力
は、処理環境を変更することなくサポートされる。例え
ば、上述したようにJVMによって実行されるオブジェ
クト指向プログラムの仕様に適用される場合、結果の統
合は、単一のプロセス実行が意図されている1つの変更
されていないJVMで動作する。各アプリケーション仕
様に対してJVMを提供する費用の発生を、避けること
が可能となる。
訂する(または最初に書き込む)ための基準とに対する
改訂により、例えば複数の別々の処理空間を可能にする
ために実行環境を修正するよりもかなり簡単な態様で、
並行してアプリケーションを実行することが可能にな
る。複数のアプリケーションプログラムを実行する能力
は、処理環境を変更することなくサポートされる。例え
ば、上述したようにJVMによって実行されるオブジェ
クト指向プログラムの仕様に適用される場合、結果の統
合は、単一のプロセス実行が意図されている1つの変更
されていないJVMで動作する。各アプリケーション仕
様に対してJVMを提供する費用の発生を、避けること
が可能となる。
【0015】ここで、本発明の実施態様を、図面を参照
して更に説明する。なお、同じ符号は同じ要素を示して
いる。
して更に説明する。なお、同じ符号は同じ要素を示して
いる。
【0016】
【発明の実施の形態】本発明の様々な態様によるコンピ
ュータシステムは、単一の処理空間における複数のアプ
リケーションプログラムの独立した動作を獲得する。か
かるコンピュータシステムには、オブジェクト指向プロ
グラムの実行環境を提供する、従来からのいかなる回路
または装置のネットワークが含まれる。自動化装置(例
えば、プリンタ)は、そのようなコンピュータシステム
の一部であり、かかるコンピュータシステムを内部的に
組込むことも可能である。一般に、実行環境は、従来か
らのオペレーティングシステムによって提供される。プ
ラットフォームに依存しないオブジェクト指向プログラ
ムを実行するために、処理環境は、従来からの仮想マシ
ンまたはインタプリタ(例えば、JAVA仮想マシン、
JAVAは、SunMicrosystems Inc.の登録商標)によっ
て提供されることができる。例えば、図1に示すコンピ
ュータシステム100または図5に示すプリンタ500
は、各々、図2に示す実行環境200を提供することが
できる。コンピュータシステム100は、いかなる数の
プロセッサ120、いかなる数のメモリ130、および
いかなる数の入力/出力サブシステム150をも含むこ
とができ、これらはバス140によってデータ転送およ
び制御のために共に結合されている。
ュータシステムは、単一の処理空間における複数のアプ
リケーションプログラムの独立した動作を獲得する。か
かるコンピュータシステムには、オブジェクト指向プロ
グラムの実行環境を提供する、従来からのいかなる回路
または装置のネットワークが含まれる。自動化装置(例
えば、プリンタ)は、そのようなコンピュータシステム
の一部であり、かかるコンピュータシステムを内部的に
組込むことも可能である。一般に、実行環境は、従来か
らのオペレーティングシステムによって提供される。プ
ラットフォームに依存しないオブジェクト指向プログラ
ムを実行するために、処理環境は、従来からの仮想マシ
ンまたはインタプリタ(例えば、JAVA仮想マシン、
JAVAは、SunMicrosystems Inc.の登録商標)によっ
て提供されることができる。例えば、図1に示すコンピ
ュータシステム100または図5に示すプリンタ500
は、各々、図2に示す実行環境200を提供することが
できる。コンピュータシステム100は、いかなる数の
プロセッサ120、いかなる数のメモリ130、および
いかなる数の入力/出力サブシステム150をも含むこ
とができ、これらはバス140によってデータ転送およ
び制御のために共に結合されている。
【0017】本発明の様々な態様によるメモリは、複数
のプログラム仕様の示標を含み、動作中は、プログラム
仕様からインスタンス生成されたオブジェクトの状態を
記録するデータ構造を含む。例えば、いくつかのプログ
ラミング言語において、仕様は、「クラス」と呼ばれ、
1つまたは複数のデータ構造においてプログラム仕様間
の階層関係を示すように配置されることができる。物理
的に、メモリ130,518は、例えばディスクメモリ
または半導体メモリ等を含む、従来からのデータ記憶装
置および検索装置のあらゆる組合せを含むことができ
る。メモリは、単一の基板上で1つまたは複数のプロセ
ッサと統合されることができ、または情報の便利な記
憶、処理、およびコンピュータシステムおよび/または
自動化装置への組込みのために、回路モジュールとして
パッケージ化されることも可能である。例えば、JVM
を、1つまたは複数の物理的に別々のパッケージ(例え
ば、集積回路基板、チップセット、またはモジュール)
で提供してもよく、JVMで実行されるアプリケーショ
ンプログラムを、同じかまたは他のパッケージで提供し
てもよい。異なる組織が、元の装置製造業者か、あるい
は本技術分野の技術者またはユーザがコンピュータシス
テム100またはプリンタ500に組込むためのパッケ
ージに寄与することも可能である。
のプログラム仕様の示標を含み、動作中は、プログラム
仕様からインスタンス生成されたオブジェクトの状態を
記録するデータ構造を含む。例えば、いくつかのプログ
ラミング言語において、仕様は、「クラス」と呼ばれ、
1つまたは複数のデータ構造においてプログラム仕様間
の階層関係を示すように配置されることができる。物理
的に、メモリ130,518は、例えばディスクメモリ
または半導体メモリ等を含む、従来からのデータ記憶装
置および検索装置のあらゆる組合せを含むことができ
る。メモリは、単一の基板上で1つまたは複数のプロセ
ッサと統合されることができ、または情報の便利な記
憶、処理、およびコンピュータシステムおよび/または
自動化装置への組込みのために、回路モジュールとして
パッケージ化されることも可能である。例えば、JVM
を、1つまたは複数の物理的に別々のパッケージ(例え
ば、集積回路基板、チップセット、またはモジュール)
で提供してもよく、JVMで実行されるアプリケーショ
ンプログラムを、同じかまたは他のパッケージで提供し
てもよい。異なる組織が、元の装置製造業者か、あるい
は本技術分野の技術者またはユーザがコンピュータシス
テム100またはプリンタ500に組込むためのパッケ
ージに寄与することも可能である。
【0018】上述したように、オブジェクト指向実行環
境は、1つまたは複数のパッケージのメモリに結合され
た1つまたは複数のプロセッサによって提供されること
ができる。動作中、かかる環境は、プログラムステップ
の実行を制御し、現在実行中のプログラム仕様に加えら
れるプログラム仕様の動的なローディング、すなわち追
加のメモリの動的な割当てを要求するプログラムステッ
プをサポートし、プログラム実行の複数のスレッドの実
行をサポートすることができる。例えば、実行環境20
0には、5つの協動プロセスが含まれる。すなわち、監
視プロセス202、メモリ管理プロセス212、スレッ
ド管理プロセス222、ローディングプロセス232お
よびプログラムステップ実行プロセス242である。
境は、1つまたは複数のパッケージのメモリに結合され
た1つまたは複数のプロセッサによって提供されること
ができる。動作中、かかる環境は、プログラムステップ
の実行を制御し、現在実行中のプログラム仕様に加えら
れるプログラム仕様の動的なローディング、すなわち追
加のメモリの動的な割当てを要求するプログラムステッ
プをサポートし、プログラム実行の複数のスレッドの実
行をサポートすることができる。例えば、実行環境20
0には、5つの協動プロセスが含まれる。すなわち、監
視プロセス202、メモリ管理プロセス212、スレッ
ド管理プロセス222、ローディングプロセス232お
よびプログラムステップ実行プロセス242である。
【0019】監視プロセスには、パワーオン初期化手続
きと、機器、バスおよびメモリ回路制御手続きと、機器
関連エラー状態手続きと、パワーオフ手続きと、を含む
プラットフォーム特定の振舞いの役割を果たすあらゆる
プロセスが含まれる。例えば、監視プロセス202に
は、オブジェクト指向プログラムの従来からのプログラ
ム仕様の実行の準備および実行に必要なすべての手続き
が含まれる。
きと、機器、バスおよびメモリ回路制御手続きと、機器
関連エラー状態手続きと、パワーオフ手続きと、を含む
プラットフォーム特定の振舞いの役割を果たすあらゆる
プロセスが含まれる。例えば、監視プロセス202に
は、オブジェクト指向プログラムの従来からのプログラ
ム仕様の実行の準備および実行に必要なすべての手続き
が含まれる。
【0020】メモリ管理プロセスには、メモリの割当
て、割当てられたメモリの解放、および不要部分の整理
の役割を果たすあらゆるプロセスが含まれる。一般に、
割当てには、プログラム仕様における記憶域の宣言に対
し、メモリの特定のアドレス範囲を識別することが含ま
れる。メモリを、プログラム仕様、共用(静的)変数お
よび/またはオブジェクトの状態の記憶域に対して割当
てることができる。一般に、オブジェクトのインスタン
ス生成には、オブジェクトの状態を記述するデータ構造
に十分なメモリの割当てが含まれ、オブジェクトの振舞
いに対する命令への動的に結合したリンクが含まれる場
合もある。オブジェクトの状態に対するデータ構造は、
一般に、それぞれのプログラム仕様に記述されている。
て、割当てられたメモリの解放、および不要部分の整理
の役割を果たすあらゆるプロセスが含まれる。一般に、
割当てには、プログラム仕様における記憶域の宣言に対
し、メモリの特定のアドレス範囲を識別することが含ま
れる。メモリを、プログラム仕様、共用(静的)変数お
よび/またはオブジェクトの状態の記憶域に対して割当
てることができる。一般に、オブジェクトのインスタン
ス生成には、オブジェクトの状態を記述するデータ構造
に十分なメモリの割当てが含まれ、オブジェクトの振舞
いに対する命令への動的に結合したリンクが含まれる場
合もある。オブジェクトの状態に対するデータ構造は、
一般に、それぞれのプログラム仕様に記述されている。
【0021】スレッド管理プロセスには、1つまたは複
数の実行ストリームの実行を行うことの役割を果たすあ
らゆるプロセスが含まれる。マルチスレッディング(多
重糸)に適したプログラム仕様の部分は、必然的に再入
可能に設計される。再入可能であるためには、とりわ
け、オブジェクトは一般に、そのオブジェクトの状態を
格納するためのデータ構造に含まれていない情報を参照
することができない。このような状況は、一般に、オブ
ジェクトが共用(静的)変数を参照する時には満足され
ない。マルチスレッディングは、以下の点でマルチプロ
セッシングとは異なっている。すなわち、マルチプロセ
ッシングでは、一般に、複数のアプリケーションプログ
ラムによって同じメモリアドレスが使用される。従っ
て、プロセスの切換え中、一般にメモリのコピーが他の
場所に格納されるか、またはメモリのアドレス指定に変
更が施される。プロセスの切換えは、プロセッサが単一
の処理空間を使用している時には実行されない(そのた
め、システム設計から削除してもよい)。マルチスレッ
ディングでは、異なるスレッドにおいて実行中のオブジ
ェクトは、各々の状態情報を同じアドレスに格納しな
い。従って、すべてのスレッドのすべてのオブジェクト
により単一の処理空間を使用することができる。
数の実行ストリームの実行を行うことの役割を果たすあ
らゆるプロセスが含まれる。マルチスレッディング(多
重糸)に適したプログラム仕様の部分は、必然的に再入
可能に設計される。再入可能であるためには、とりわ
け、オブジェクトは一般に、そのオブジェクトの状態を
格納するためのデータ構造に含まれていない情報を参照
することができない。このような状況は、一般に、オブ
ジェクトが共用(静的)変数を参照する時には満足され
ない。マルチスレッディングは、以下の点でマルチプロ
セッシングとは異なっている。すなわち、マルチプロセ
ッシングでは、一般に、複数のアプリケーションプログ
ラムによって同じメモリアドレスが使用される。従っ
て、プロセスの切換え中、一般にメモリのコピーが他の
場所に格納されるか、またはメモリのアドレス指定に変
更が施される。プロセスの切換えは、プロセッサが単一
の処理空間を使用している時には実行されない(そのた
め、システム設計から削除してもよい)。マルチスレッ
ディングでは、異なるスレッドにおいて実行中のオブジ
ェクトは、各々の状態情報を同じアドレスに格納しな
い。従って、すべてのスレッドのすべてのオブジェクト
により単一の処理空間を使用することができる。
【0022】例えば、スレッド管理プロセス222は、
あらゆる従来からの態様で配置されたスレッドテーブル
264のすべてのアクティブなスレッドのスレッド状態
を記録する。監視プロセス202によってスレッドの切
換えが要求された場合、スレッド管理プロセス222
は、スレッドテーブル264に関してプロセッサ状態情
報(例えば、内部レジスタの内容)をスワップし、適切
に次のスレッドに制御を移す。スレッド管理プロセス2
22には、あらゆる従来からのスレッド優先順位決定お
よびスケジューリングの手続きを含むことが可能であ
る。
あらゆる従来からの態様で配置されたスレッドテーブル
264のすべてのアクティブなスレッドのスレッド状態
を記録する。監視プロセス202によってスレッドの切
換えが要求された場合、スレッド管理プロセス222
は、スレッドテーブル264に関してプロセッサ状態情
報(例えば、内部レジスタの内容)をスワップし、適切
に次のスレッドに制御を移す。スレッド管理プロセス2
22には、あらゆる従来からのスレッド優先順位決定お
よびスケジューリングの手続きを含むことが可能であ
る。
【0023】ロードプロセスには、プロセッサの実行可
能メモリ空間にプログラム仕様の少なくとも一部をコピ
ーすること、およびロードされた情報をプログラム実行
プロセスが参照または実行するのを可能にすることの役
割を果たすあらゆるプロセスが含まれる。例えば、実行
可能メモリ空間が制限されている場合、アプリケーショ
ンプログラム仕様の第1の部分が、アプリケーションプ
ログラムの実行を開始するために最初にロードされてい
る(または常駐している)。アプリケーションプログラ
ム仕様の別のロードされていない部分を参照することに
より、プログラム実行プロセスからローディングプロセ
スへの制御の移行が呼出される。このローディングプロ
セスでは、追加のプログラム仕様情報に対してメモリを
割当て、その割当てられたメモリに適切なプログラム仕
様を(一部または全部)コピーすると共に、その後の実
行のためにロードされた情報を動的に結合する(これも
また事後結合または事後リンクと呼ばれる)。例えば、
ローディングプロセス232は、監視プロセス202お
よびメモリ管理プロセス212と協動してメモリの割当
てを行い、監視プロセス202と協動して第2の記憶域
(例えば、ページメモリまたはディスク記憶装置)から
クラスを取得し、動的結合を実行して、ロードされたク
ラスをクラステーブル266に適切に格納されたクラス
階層構造に組込む。ロードされたクラスは、クラス階層
構造のサブツリーに格納することができる。サブツリー
を、名前に対して順序正しく参照するために採用するこ
とができる。このサブツリーにより、例えば、階層構造
における重複した名前の各名前を明確に参照することが
できる。予備的なステップとして、ローディングプロセ
ス232は、クラステーブル266の一部を第2の記憶
域に格納することにより、その後の割当てのためにメモ
リを解放するようにしてもよい。
能メモリ空間にプログラム仕様の少なくとも一部をコピ
ーすること、およびロードされた情報をプログラム実行
プロセスが参照または実行するのを可能にすることの役
割を果たすあらゆるプロセスが含まれる。例えば、実行
可能メモリ空間が制限されている場合、アプリケーショ
ンプログラム仕様の第1の部分が、アプリケーションプ
ログラムの実行を開始するために最初にロードされてい
る(または常駐している)。アプリケーションプログラ
ム仕様の別のロードされていない部分を参照することに
より、プログラム実行プロセスからローディングプロセ
スへの制御の移行が呼出される。このローディングプロ
セスでは、追加のプログラム仕様情報に対してメモリを
割当て、その割当てられたメモリに適切なプログラム仕
様を(一部または全部)コピーすると共に、その後の実
行のためにロードされた情報を動的に結合する(これも
また事後結合または事後リンクと呼ばれる)。例えば、
ローディングプロセス232は、監視プロセス202お
よびメモリ管理プロセス212と協動してメモリの割当
てを行い、監視プロセス202と協動して第2の記憶域
(例えば、ページメモリまたはディスク記憶装置)から
クラスを取得し、動的結合を実行して、ロードされたク
ラスをクラステーブル266に適切に格納されたクラス
階層構造に組込む。ロードされたクラスは、クラス階層
構造のサブツリーに格納することができる。サブツリー
を、名前に対して順序正しく参照するために採用するこ
とができる。このサブツリーにより、例えば、階層構造
における重複した名前の各名前を明確に参照することが
できる。予備的なステップとして、ローディングプロセ
ス232は、クラステーブル266の一部を第2の記憶
域に格納することにより、その後の割当てのためにメモ
リを解放するようにしてもよい。
【0024】クラステーブルは、プログラム仕様情報の
格納に適したあらゆるデータ構造を含む。例えば、クラ
ステーブル266は、JVMにおいて一般的に使用され
るような単一のクラス階層構造を保持する1つまたは複
数のデータ構造を含む。かかるクラス階層構造は、上述
したサブツリーを有することができる。
格納に適したあらゆるデータ構造を含む。例えば、クラ
ステーブル266は、JVMにおいて一般的に使用され
るような単一のクラス階層構造を保持する1つまたは複
数のデータ構造を含む。かかるクラス階層構造は、上述
したサブツリーを有することができる。
【0025】プログラムステップ実行プロセスには、プ
ログラム仕様を実行または解釈してオブジェクトの動作
(またはサービス)を実行するあらゆるプロセスが含ま
れる。各オブジェクトの状態が(それぞれのプログラム
仕様の実行中に修正されるに従い)、処理空間における
それぞれのデータ構造に格納される。オブジェクトが複
数回インスタンス生成される場合(例えば、再帰または
複数スレッドに対し)、オブジェクトの状態を格納する
ためのデータ構造のコピーは、各オブジェクトインスタ
ンスによって排他的に参照されるために、処理空間に保
持される。例えば、プログラムステップ実行プロセス2
42は、スレッド管理プロセス222と協動して、現在
アクティブなスレッドについて実行する次のステップを
識別する処理状態情報を取得する。そして、プログラム
ステップ実行プロセスは、識別されたステップを実行
し、その結果、影響されたオブジェクトの状態のインス
タンス変数、およびこれら状態の範囲を越えて共用(静
的)変数が変化する。実行ストリームが一時停止するか
または終了した場合、プログラムステップ実行プロセス
242は、適切な動作か、またはエラーメッセージのた
めに適切に監視プロセス202およびスレッド管理プロ
セス222に通知する。実行は、ロードプロセス232
が実行すべき更なるステップの動的結合を完了するま
で、一時停止することができる。
ログラム仕様を実行または解釈してオブジェクトの動作
(またはサービス)を実行するあらゆるプロセスが含ま
れる。各オブジェクトの状態が(それぞれのプログラム
仕様の実行中に修正されるに従い)、処理空間における
それぞれのデータ構造に格納される。オブジェクトが複
数回インスタンス生成される場合(例えば、再帰または
複数スレッドに対し)、オブジェクトの状態を格納する
ためのデータ構造のコピーは、各オブジェクトインスタ
ンスによって排他的に参照されるために、処理空間に保
持される。例えば、プログラムステップ実行プロセス2
42は、スレッド管理プロセス222と協動して、現在
アクティブなスレッドについて実行する次のステップを
識別する処理状態情報を取得する。そして、プログラム
ステップ実行プロセスは、識別されたステップを実行
し、その結果、影響されたオブジェクトの状態のインス
タンス変数、およびこれら状態の範囲を越えて共用(静
的)変数が変化する。実行ストリームが一時停止するか
または終了した場合、プログラムステップ実行プロセス
242は、適切な動作か、またはエラーメッセージのた
めに適切に監視プロセス202およびスレッド管理プロ
セス222に通知する。実行は、ロードプロセス232
が実行すべき更なるステップの動的結合を完了するま
で、一時停止することができる。
【0026】単一の処理空間におけるアプリケーション
プログラム間の独立性を得ることは、本発明の様々な態
様に従い、一部は、各々共通して使用される再入可能な
オブジェクトの間接的なインスタンス生成によって達成
される。間接的なインスタンス生成は、図1乃至図4お
よび表1に示すようなコンピュータシステム100によ
って実行される一連の動作の例からより理解することが
できる。表1において、監視プロセス202は、第1の
アプリケーションプログラムAPPL_A340をロー
ドして実行を開始し、そして、第2のアプリケーション
プログラムAPPL_B360をロードして実行を開始
する。実行は、予め決められた名前、例えば、STAR
T(他のプログラム言語では、MAINまたは同等のも
の)を有するオブジェクトによって開始する。各アプリ
ケーションプログラムは、説明の便宜上OBJECT_
AおよびOBJECT_Bとして識別されるそれぞれ固
有のオブジェクトをインスタンス生成する。そして、各
アプリケーションは、FACTORY_Cと名付けられ
たオブジェクトおよびOBJECT_Cを示す1つまた
は複数のオブジェクトによって提供されるサービスに対
し、プログラム仕様LIBRARY_Cを参照する。こ
の例では、FACTORY_CおよびOBJECT_C
のすべてのインスタンスは、同じプログラム仕様から導
出されるが、振舞いは、図4に示すように、別々に保持
された状態346,348,366,368に従って変
化する可能性がある。
プログラム間の独立性を得ることは、本発明の様々な態
様に従い、一部は、各々共通して使用される再入可能な
オブジェクトの間接的なインスタンス生成によって達成
される。間接的なインスタンス生成は、図1乃至図4お
よび表1に示すようなコンピュータシステム100によ
って実行される一連の動作の例からより理解することが
できる。表1において、監視プロセス202は、第1の
アプリケーションプログラムAPPL_A340をロー
ドして実行を開始し、そして、第2のアプリケーション
プログラムAPPL_B360をロードして実行を開始
する。実行は、予め決められた名前、例えば、STAR
T(他のプログラム言語では、MAINまたは同等のも
の)を有するオブジェクトによって開始する。各アプリ
ケーションプログラムは、説明の便宜上OBJECT_
AおよびOBJECT_Bとして識別されるそれぞれ固
有のオブジェクトをインスタンス生成する。そして、各
アプリケーションは、FACTORY_Cと名付けられ
たオブジェクトおよびOBJECT_Cを示す1つまた
は複数のオブジェクトによって提供されるサービスに対
し、プログラム仕様LIBRARY_Cを参照する。こ
の例では、FACTORY_CおよびOBJECT_C
のすべてのインスタンスは、同じプログラム仕様から導
出されるが、振舞いは、図4に示すように、別々に保持
された状態346,348,366,368に従って変
化する可能性がある。
【0027】
【表1】
【0028】初期化中に、メモリ130内に環境200
が確立される。この時、メモリ130には、図4の一部
によって示すように、環境200の記述が含まれる。こ
れには、監視プロセス202に対する命令、メモリ管理
プロセス212に対する命令、スレッド管理プロセス2
22に対する命令、ロードプロセス232に対する命
令、プログラムステップ実行プロセス242に対する命
令、環境変数402、割当てテーブル262、最小スレ
ッドテーブル264、最小クラステーブル266および
最小処理空間268が含まれている。監視プロセス20
2が、初期化直後には、動作用にまだいずれのプログラ
ム仕様もロードしていないため、これら項目のいくつか
は最小である。例えば、クラステーブル266は、アプ
リケーションプログラムが使用するためのアプリケーシ
ョンプログラムインタフェース(API)として環境ク
ラス404を含むことができる。
が確立される。この時、メモリ130には、図4の一部
によって示すように、環境200の記述が含まれる。こ
れには、監視プロセス202に対する命令、メモリ管理
プロセス212に対する命令、スレッド管理プロセス2
22に対する命令、ロードプロセス232に対する命
令、プログラムステップ実行プロセス242に対する命
令、環境変数402、割当てテーブル262、最小スレ
ッドテーブル264、最小クラステーブル266および
最小処理空間268が含まれている。監視プロセス20
2が、初期化直後には、動作用にまだいずれのプログラ
ム仕様もロードしていないため、これら項目のいくつか
は最小である。例えば、クラステーブル266は、アプ
リケーションプログラムが使用するためのアプリケーシ
ョンプログラムインタフェース(API)として環境ク
ラス404を含むことができる。
【0029】なお、メモリ130の関連した内容を、メ
モリアドレスの物理的な面に関係なく図4において論理
的に説明する。論理的な配置は、説明のための便宜上の
ものである。様々なアドレス範囲の関数の物理的メモリ
マップは、処理に便利なあらゆる混在した構成を有する
ことができる。例えば、命令202、212,222,
232,242に対してコードブロックをコンパイルお
よびリンクする結果、断片化したアドレス領域がいかな
る配置にもなり得る。また、変数402、テーブル26
2,264,266および処理空間268に対してアド
レスの範囲を割当てた結果によっても、断片化したアド
レス範囲がいかなる配置にもなり得る。メモリ130
は、複数の物理的に不連続な範囲で任意の関数(命令、
ブロック、テーブル等)をサポートすることができる。
追加の環境変数、テーブルへの追加および処理空間への
追加に対しメモリが割当てられているため、例えば、図
4に示す論理記述または本発明の様々な機能的態様から
逸脱せずに、更なる断片化をもたらすことができる。更
に、メモリ130の内容のいかなる物理的配置も、セグ
メント化されたメモリ、拡張メモリ(extended memor
y)、拡張メモリ(expanded memory)、ディスクメモリ
からの要求時ページング、スワップテーブル、並列プロ
セッサ用の共用メモリ、キャッシュ等においてと同様
に、アクセス制限の影響を受ける場合がある。
モリアドレスの物理的な面に関係なく図4において論理
的に説明する。論理的な配置は、説明のための便宜上の
ものである。様々なアドレス範囲の関数の物理的メモリ
マップは、処理に便利なあらゆる混在した構成を有する
ことができる。例えば、命令202、212,222,
232,242に対してコードブロックをコンパイルお
よびリンクする結果、断片化したアドレス領域がいかな
る配置にもなり得る。また、変数402、テーブル26
2,264,266および処理空間268に対してアド
レスの範囲を割当てた結果によっても、断片化したアド
レス範囲がいかなる配置にもなり得る。メモリ130
は、複数の物理的に不連続な範囲で任意の関数(命令、
ブロック、テーブル等)をサポートすることができる。
追加の環境変数、テーブルへの追加および処理空間への
追加に対しメモリが割当てられているため、例えば、図
4に示す論理記述または本発明の様々な機能的態様から
逸脱せずに、更なる断片化をもたらすことができる。更
に、メモリ130の内容のいかなる物理的配置も、セグ
メント化されたメモリ、拡張メモリ(extended memor
y)、拡張メモリ(expanded memory)、ディスクメモリ
からの要求時ページング、スワップテーブル、並列プロ
セッサ用の共用メモリ、キャッシュ等においてと同様
に、アクセス制限の影響を受ける場合がある。
【0030】初期化後、上述した監視プロセス202に
よる動作によって、APPL_AおよびAPPL_Bの
実行を並行して進めることができる(例えば、単一プロ
セッサによるマルチタスキング)。APPL_Aのロー
ドの結果、クラステーブル266にAPPL_Aクラス
311が追加され、図4に示すように処理空間268に
おいてAPPL_A状態340に対し処理空間が割当て
られる。APPL_Aがロードされた後いつでも、監視
プロセス202がAPPL_B360をロードする。A
PPL_Bをロードした結果、クラステーブル266に
APPL_Bクラス313が追加され、処理空間268
においてAPPL_B状態360に対し処理空間が割当
てられる。APPL_AおよびAPPL_Bが独立して
開発されている場合、APPL_Aクラスが、APPL
_Aによって排他的に使用され、またその逆も同じであ
る。共通して使用される識別子間の矛盾(例えば、クラ
ステーブル266における重複によりもたらされる)
は、一意の識別子接頭語等のいずれの従来技術によって
も除くことができる。
よる動作によって、APPL_AおよびAPPL_Bの
実行を並行して進めることができる(例えば、単一プロ
セッサによるマルチタスキング)。APPL_Aのロー
ドの結果、クラステーブル266にAPPL_Aクラス
311が追加され、図4に示すように処理空間268に
おいてAPPL_A状態340に対し処理空間が割当て
られる。APPL_Aがロードされた後いつでも、監視
プロセス202がAPPL_B360をロードする。A
PPL_Bをロードした結果、クラステーブル266に
APPL_Bクラス313が追加され、処理空間268
においてAPPL_B状態360に対し処理空間が割当
てられる。APPL_AおよびAPPL_Bが独立して
開発されている場合、APPL_Aクラスが、APPL
_Aによって排他的に使用され、またその逆も同じであ
る。共通して使用される識別子間の矛盾(例えば、クラ
ステーブル266における重複によりもたらされる)
は、一意の識別子接頭語等のいずれの従来技術によって
も除くことができる。
【0031】間接的なインスタンス生成を、以下に示
す。間接的なインスタンス生成の結果として、OBJE
CT_C状態348が割当てられる。OBJECT_A
344は、本発明の様々な態様に従って、OBJECT
_Cに直接ではなくFACTORY_Cにメッセージを
渡すことにより、OBJECT_Cの新たなインスタン
スへの参照を取得する。FACTORY_Cは、メッセ
ージに応じて、OBJECT_C状態348のインスタ
ンスを生成し、OBJECT_A344に対しその状態
への参照を返す。
す。間接的なインスタンス生成の結果として、OBJE
CT_C状態348が割当てられる。OBJECT_A
344は、本発明の様々な態様に従って、OBJECT
_Cに直接ではなくFACTORY_Cにメッセージを
渡すことにより、OBJECT_Cの新たなインスタン
スへの参照を取得する。FACTORY_Cは、メッセ
ージに応じて、OBJECT_C状態348のインスタ
ンスを生成し、OBJECT_A344に対しその状態
への参照を返す。
【0032】ファクトリオブジェクトは、あらゆるオブ
ジェクトを含み、そのオブジェクトの振舞いは、予め決
められた種類の別のオブジェクトのインスタンス生成を
含む。また、ファクトリオブジェクトは、その状態にイ
ンスタンス変数を含むことができる。ファクトリオブジ
ェクトは、アプリケーションプログラムの文脈において
シングルトン(singleton:単集合、単生児)オブジェ
クトとなり得る。その状態にインスタンス変数を有する
シングルトンファクトリオブジェクトを利用することに
より、複数のライブラリオブジェクトが、ライブラリ静
的変数への参照に類似した方法によってファクトリのイ
ンスタンス変数を参照することができる。
ジェクトを含み、そのオブジェクトの振舞いは、予め決
められた種類の別のオブジェクトのインスタンス生成を
含む。また、ファクトリオブジェクトは、その状態にイ
ンスタンス変数を含むことができる。ファクトリオブジ
ェクトは、アプリケーションプログラムの文脈において
シングルトン(singleton:単集合、単生児)オブジェ
クトとなり得る。その状態にインスタンス変数を有する
シングルトンファクトリオブジェクトを利用することに
より、複数のライブラリオブジェクトが、ライブラリ静
的変数への参照に類似した方法によってファクトリのイ
ンスタンス変数を参照することができる。
【0033】OBJECT_Aを、OBJECT_Cを
直接インスタンス生成するよう設計することも可能であ
ったが、その代りに、インスタンス生成の責任をFAC
TORY_Cに持たせ、OBJECT_Cの直接のイン
スタンス生成を、設計方針によって禁じている。同様に
して、APPL_Aによって必要とされる各タイプのラ
イブラリオブジェクトは、APPL_Aに対する同じか
または別のシングルトンファクトリオブジェクトを介し
て間接的にインスタンス生成することができる。
直接インスタンス生成するよう設計することも可能であ
ったが、その代りに、インスタンス生成の責任をFAC
TORY_Cに持たせ、OBJECT_Cの直接のイン
スタンス生成を、設計方針によって禁じている。同様に
して、APPL_Aによって必要とされる各タイプのラ
イブラリオブジェクトは、APPL_Aに対する同じか
または別のシングルトンファクトリオブジェクトを介し
て間接的にインスタンス生成することができる。
【0034】本発明の様々な態様による方法では、共用
データに対する独立していない参照により誤って振舞う
可能性のある複数のアプリケーションプログラムを、競
合することなく単一の処理環境で実行することができ
る。例えば、ディスプレイ上でランダムな位置にランダ
ムなサイズで円を描画する第1のアプリケーションプロ
グラムを考える。新たな円が各々描画されるに従い、す
べての円の平均サイズが計算される。ここで、ディスプ
レイが2つの部分で管理され、第1のアプリケーション
プログラムが、そのディスプレイの左半分に対して役割
を果たし、第1のアプリケーションプログラムと同じ第
2のアプリケーションプログラムが、ディスプレイの右
半分に対して役割を果たすものとする。単一の処理環境
から、各アプリケーションプログラムの独立した動作が
提供される。両方のアプリケーションプログラムは、円
描画オブジェクトに対する共通のライブラリを用いて、
本来は書かれている。しかしながら、不都合なことに、
ライブラリプログラム仕様は、共通の(静的)記憶域に
おいていくつかの変数を宣言するステートメントを含
む。これら変数には、インスタンス生成されたライブラ
リオブジェクトの現在の数、およびライブラリオブジェ
クトによって描画されたすべてのグラフィックスの現在
の合計領域が含まれている。修正をしなければ、第1お
よび第2のアプリケーションプログラムは、とりわけ、
これら変数の独立した値を用いることなく独立して動作
することができない。コストを制御するために、アプリ
ケーションプログラムおよびライブラリに対する変更を
最小にすることが望ましい。
データに対する独立していない参照により誤って振舞う
可能性のある複数のアプリケーションプログラムを、競
合することなく単一の処理環境で実行することができ
る。例えば、ディスプレイ上でランダムな位置にランダ
ムなサイズで円を描画する第1のアプリケーションプロ
グラムを考える。新たな円が各々描画されるに従い、す
べての円の平均サイズが計算される。ここで、ディスプ
レイが2つの部分で管理され、第1のアプリケーション
プログラムが、そのディスプレイの左半分に対して役割
を果たし、第1のアプリケーションプログラムと同じ第
2のアプリケーションプログラムが、ディスプレイの右
半分に対して役割を果たすものとする。単一の処理環境
から、各アプリケーションプログラムの独立した動作が
提供される。両方のアプリケーションプログラムは、円
描画オブジェクトに対する共通のライブラリを用いて、
本来は書かれている。しかしながら、不都合なことに、
ライブラリプログラム仕様は、共通の(静的)記憶域に
おいていくつかの変数を宣言するステートメントを含
む。これら変数には、インスタンス生成されたライブラ
リオブジェクトの現在の数、およびライブラリオブジェ
クトによって描画されたすべてのグラフィックスの現在
の合計領域が含まれている。修正をしなければ、第1お
よび第2のアプリケーションプログラムは、とりわけ、
これら変数の独立した値を用いることなく独立して動作
することができない。コストを制御するために、アプリ
ケーションプログラムおよびライブラリに対する変更を
最小にすることが望ましい。
【0035】上記例におけるアプリケーションおよびラ
イブラリプログラム仕様の修正は、以下のステップを任
意の順序で含む本発明の方法に従って進めることができ
る。すなわち、(a)改訂されたライブラリプログラム
仕様を作成する。この場合、(a.1)改訂されたライ
ブラリが、上述したファクトリインスタンス変数を有す
るファクトリオブジェクトに対するプログラム仕様を含
み、(a.2)静的記憶域にある変数への各参照が、フ
ァクトリインスタンス変数へのそれぞれの参照に置換さ
れる。(b)ファクトリ仕様に従ってファクトリオブジ
ェクトがインスタンス生成されるように、各アプリケー
ション仕様を作成する。ここで、各ファクトリは、それ
ぞれのアプリケーションプログラムの文脈において、ラ
イブラリオブジェクトのインスタンス生成に対する各要
求に応答する。
イブラリプログラム仕様の修正は、以下のステップを任
意の順序で含む本発明の方法に従って進めることができ
る。すなわち、(a)改訂されたライブラリプログラム
仕様を作成する。この場合、(a.1)改訂されたライ
ブラリが、上述したファクトリインスタンス変数を有す
るファクトリオブジェクトに対するプログラム仕様を含
み、(a.2)静的記憶域にある変数への各参照が、フ
ァクトリインスタンス変数へのそれぞれの参照に置換さ
れる。(b)ファクトリ仕様に従ってファクトリオブジ
ェクトがインスタンス生成されるように、各アプリケー
ション仕様を作成する。ここで、各ファクトリは、それ
ぞれのアプリケーションプログラムの文脈において、ラ
イブラリオブジェクトのインスタンス生成に対する各要
求に応答する。
【0036】この方法は、円描画アプリケーションプロ
グラム例に適用されることにより、表2に示すようによ
り理解することができる。表2は、修正前(従属)およ
び修正後(独立)の、ライブラリおよび各アプリケーシ
ョンプログラムに対するJAVAプログラム仕様の関係
する部分を比較している。
グラム例に適用されることにより、表2に示すようによ
り理解することができる。表2は、修正前(従属)およ
び修正後(独立)の、ライブラリおよび各アプリケーシ
ョンプログラムに対するJAVAプログラム仕様の関係
する部分を比較している。
【0037】
【表2】
【0038】本発明の様々な態様による自動化装置に
は、上述したコンピュータシステムを含むことができ
る。かかる装置のいくつかの例として、コンピュータ、
コンピュータ周辺装置、通信装置、プロセス制御装置お
よび測器類が含まれる。例えば、図5のプリンタ500
は、図1のプロセッサ120、メモリ130およびバス
140に概して対応するように、バス512によって結
合されたプロセッサ514およびメモリ518を含む。
また、プリンタ500は、各々がバス512に結合され
た制御装置およびディスプレイ516、I/Oインタフ
ェース510およびプリントエンジン520を含み、そ
れらはまとめて入力/出力サブシステム150に概して
対応している。
は、上述したコンピュータシステムを含むことができ
る。かかる装置のいくつかの例として、コンピュータ、
コンピュータ周辺装置、通信装置、プロセス制御装置お
よび測器類が含まれる。例えば、図5のプリンタ500
は、図1のプロセッサ120、メモリ130およびバス
140に概して対応するように、バス512によって結
合されたプロセッサ514およびメモリ518を含む。
また、プリンタ500は、各々がバス512に結合され
た制御装置およびディスプレイ516、I/Oインタフ
ェース510およびプリントエンジン520を含み、そ
れらはまとめて入力/出力サブシステム150に概して
対応している。
【0039】プロセッサ514およびメモリ518は、
協動して図6の方法600を実行する。この場合、上述
したように、環境200がステップ604において確立
される。マルチスレッディングが、ステップ606にお
いて確立され、ステップ608において、4つのスレッ
ドにおいてステップ610乃至ステップ620の並行実
行(例えば、単一のプロセッサによるマルチタスキング
を介して)に対し使用可能となる。電源が切られる時、
制御はステップ622に進み、すべてのオブジェクトの
状態をメモリ518の不揮発性部分に保持することがで
きる。
協動して図6の方法600を実行する。この場合、上述
したように、環境200がステップ604において確立
される。マルチスレッディングが、ステップ606にお
いて確立され、ステップ608において、4つのスレッ
ドにおいてステップ610乃至ステップ620の並行実
行(例えば、単一のプロセッサによるマルチタスキング
を介して)に対し使用可能となる。電源が切られる時、
制御はステップ622に進み、すべてのオブジェクトの
状態をメモリ518の不揮発性部分に保持することがで
きる。
【0040】本発明の様々な態様に従って、プリンタ5
00の機能は拡張が可能である。例えば、ステップ61
2のプログラム仕様は、プログラム仕様614によって
補遺しおよび/または置換することが可能である。ステ
ップ612は、I/Oインタフェース510を管理しペ
ージ記述言語(PDL)のデータを管理するあらゆる従
来からの手続きを含むことができる。PDLには、Hewl
ett Packard Companyによって販売されているプリンタ
制御言語(PCL)またはAdobe Systems, Inc.によっ
て販売されているポストスクリプト(POSTSCRIPT)言語
によって例示されるタイプのPDLを含む、印刷される
画像を定義するプロトコルおよび/またはフォーマット
を含むことができる。なお、PCLおよびPOSTSCRIPT
は、それぞれの会社の登録商標である。ステップ612
において、インタフェース508を介して受信されるP
DLデータを用いて、元々受信していたPDLデータに
加えてまたはその代りに、印刷用の同じPDLに、補遺
のデータまたは置換データを与えることができる。
00の機能は拡張が可能である。例えば、ステップ61
2のプログラム仕様は、プログラム仕様614によって
補遺しおよび/または置換することが可能である。ステ
ップ612は、I/Oインタフェース510を管理しペ
ージ記述言語(PDL)のデータを管理するあらゆる従
来からの手続きを含むことができる。PDLには、Hewl
ett Packard Companyによって販売されているプリンタ
制御言語(PCL)またはAdobe Systems, Inc.によっ
て販売されているポストスクリプト(POSTSCRIPT)言語
によって例示されるタイプのPDLを含む、印刷される
画像を定義するプロトコルおよび/またはフォーマット
を含むことができる。なお、PCLおよびPOSTSCRIPT
は、それぞれの会社の登録商標である。ステップ612
において、インタフェース508を介して受信されるP
DLデータを用いて、元々受信していたPDLデータに
加えてまたはその代りに、印刷用の同じPDLに、補遺
のデータまたは置換データを与えることができる。
【0041】拡張性の別の例として、ステップ618の
プログラム仕様を、プログラム仕様620によって補遺
するか、置換するか、または無効にするようにしてもよ
い。ステップ618は、印刷されるデータのフォーマッ
ティングを管理しおよび/または特定のプリントエンジ
ンによる印刷を管理するいずれの従来の手続きをも含む
ことができる。ステップ620は、改良された画像フォ
ーマット技術、代替プリントエンジンのエミュレーショ
ン、またはステップ618によってサポートされるもの
とは異なるプリントエンジンの適応に対するサポートを
提供することができる。
プログラム仕様を、プログラム仕様620によって補遺
するか、置換するか、または無効にするようにしてもよ
い。ステップ618は、印刷されるデータのフォーマッ
ティングを管理しおよび/または特定のプリントエンジ
ンによる印刷を管理するいずれの従来の手続きをも含む
ことができる。ステップ620は、改良された画像フォ
ーマット技術、代替プリントエンジンのエミュレーショ
ン、またはステップ618によってサポートされるもの
とは異なるプリントエンジンの適応に対するサポートを
提供することができる。
【0042】ステップ614および/またはステップ6
20のプログラム仕様は、インタフェース508を介す
る受信、メモリ518の第2のまたはページングされた
部分から第1の部分への転送、あるいは、上述したよう
な製造中または現場での追加のメモリ518のインスト
ールによるものなどを含む、あらゆる態様で、プリンタ
500の環境200にロードされることができる。ステ
ップ610,612,616,618が第1の(例え
ば、標準、組込み等)アプリケーションプログラムを構
成している場合、ステップ614は第2のアプリケーシ
ョンプログラムを、ステップ620は第3のアプリケー
ションプログラムを構成することができる。図1乃至図
4を参照して概略的に説明した本発明の様々な態様によ
れば、ステップ612およびステップ614は、オブジ
ェクトの共通ライブラリ(例えば、フォント、線図形、
背景画像、PDL解釈等に関する)を独立して参照する
ことができ、ステップ618およびステップ620は、
オブジェクトの同じか、または別の共通ライブラリ(例
えば、輪郭強調、色制御、画像処理、プリントエンジン
制御等に関する)を独立して参照することができる。既
存のライブラリおよびアプリケーションプログラム仕様
に対し、ステップ614に適応するためのステップ61
2の修正およびステップ620に適応するためのステッ
プ618の修正は、上述した方法の様々な態様に従って
進めることができる。
20のプログラム仕様は、インタフェース508を介す
る受信、メモリ518の第2のまたはページングされた
部分から第1の部分への転送、あるいは、上述したよう
な製造中または現場での追加のメモリ518のインスト
ールによるものなどを含む、あらゆる態様で、プリンタ
500の環境200にロードされることができる。ステ
ップ610,612,616,618が第1の(例え
ば、標準、組込み等)アプリケーションプログラムを構
成している場合、ステップ614は第2のアプリケーシ
ョンプログラムを、ステップ620は第3のアプリケー
ションプログラムを構成することができる。図1乃至図
4を参照して概略的に説明した本発明の様々な態様によ
れば、ステップ612およびステップ614は、オブジ
ェクトの共通ライブラリ(例えば、フォント、線図形、
背景画像、PDL解釈等に関する)を独立して参照する
ことができ、ステップ618およびステップ620は、
オブジェクトの同じか、または別の共通ライブラリ(例
えば、輪郭強調、色制御、画像処理、プリントエンジン
制御等に関する)を独立して参照することができる。既
存のライブラリおよびアプリケーションプログラム仕様
に対し、ステップ614に適応するためのステップ61
2の修正およびステップ620に適応するためのステッ
プ618の修正は、上述した方法の様々な態様に従って
進めることができる。
【0043】上述した説明は、本発明の好ましい実施態
様について述べたものであり、これは、特許請求の範囲
で定義されている本発明の範囲を逸脱することなく変形
または修正することができるものである。説明を明瞭に
するために、本発明のいくつかの特定の実施態様につい
て説明したが、本発明の範囲は、上述した特許請求の範
囲によって判断されるよう意図されている。
様について述べたものであり、これは、特許請求の範囲
で定義されている本発明の範囲を逸脱することなく変形
または修正することができるものである。説明を明瞭に
するために、本発明のいくつかの特定の実施態様につい
て説明したが、本発明の範囲は、上述した特許請求の範
囲によって判断されるよう意図されている。
【0044】以下においては、本発明の種々の構成要件
の組み合わせからなる例示的な実施態様を示す。 1.オブジェクト指向プログラムの示標を有するメモリ
装置(130)であって、そのプログラムが、動作時に状
態の示標を提供し、その状態が、 a.第1のインスタンス変数を含む、ファクトリの第1
のインスタンス(346)と、 b.第2のインスタンス変数を含む、前記ファクトリの
第2のインスタンス(366)と、 c.オブジェクトの第1のインスタンス(348)と、そ
の第1のインスタンス変数が、前記ファクトリの第1の
インスタンスにより該オブジェクトの第1のインスタン
スを形成することからなる第1のセットの第1の動作
と、該オブジェクトの第1のインスタンスによる該オブ
ジェクトの動作とに応答することと、 d.前記オブジェクトの第2のインスタンス(368)
と、その第2のインスタンス変数が、前記ファクトリの
第2のインスタンスにより前記オブジェクトの第2のイ
ンスタンスを形成することからなる第2のセットの第2
の動作と、前記オブジェクトの第2のインスタンスによ
る前記オブジェクトの動作とに応答することと、を含
み、 e.前記第1のインスタンス変数が、前記第2の動作と
は無関係である、メモリ装置。 2.a.プリントエンジン(520)と、 b.前記プリントエンジンにデータを供給するプロセッ
サ(514)と、及び c.前記プロセッサが状態の示標を提供するために実行
するオブジェクト指向プログラムの示標を有するメモリ
装置(518)と、を含み、前記状態が、(1)第1の
インスタンス変数を含む、ファクトリの第1のインスタ
ンス(346)と、(2)第2のインスタンス変数を含
む、前記ファクトリの第2のインスタンス(366)と、
(3)オブジェクトの第1のインスタンス(348)と、
その第1のインスタンス変数が、前記ファクトリの第1
のインスタンスにより該オブジェクトの第1のインスタ
ンスを形成することからなる第1のセットの第1の動作
と、該オブジェクトの第1のインスタンスによる該オブ
ジェクトの動作とに応答することと、(4)前記オブジ
ェクトの第2のインスタンス(368)と、その第2のイ
ンスタンス変数が、前記ファクトリの第2のインスタン
スにより前記オブジェクトの第2のインスタンスを形成
することからなる第2のセットの第2の動作と、前記オ
ブジェクトの第2のインスタンスによる前記オブジェク
トの動作とに応答することと、を含み、(5)前記第1
のインスタンス変数が、前記第2の動作とは無関係であ
る、プリンタ装置。 3.前記プログラムの前記示標は、クラス階層構造(26
6)の示標を含み、前記階層構造が、 a.動作中、前記ファクトリの第1のインスタンスに対
し、前記オブジェクトの第1のインスタンスを形成する
よう命令する第1の仕様(344)を含む第1のサブツリ
ーと、 b.動作中、前記ファクトリの第2のインスタンスに対
し、前記オブジェクトの第2のインスタンスを形成する
よう命令する第2の仕様(364)を含む第2のサブツリ
ーと、を含む、上記1または2の装置。 4.前記階層構造が、前記ファクトリの仕様と前記オブ
ジェクトの仕様とを更に含む、上記3の装置。 5.前記メモリが、 a.前記第1の仕様の示標を含む第1のパッケージと、
及び b.前記第2の仕様の示標を含む第2のパッケージと、
を更に含む、上記4の装置。 6.a.前記第1の仕様が、(1)ページ記述言語に従
って第1のデータを受取るインタフェースコントローラ
と、及び(2)前記プリントエンジンを制御するフォー
マッタと、を含み、 b.第2の仕様が、前記第1のデータに対応して第2の
データを提供する変更子を含み、その第2のデータが、
前記インタフェースコントローラから受取られると共
に、前記ページ記述言語に従って前記フォーマッタに供
給される、上記5のプリンタ装置。 7.a.前記第1の仕様が、第1の動作モードにおいて
前記プリントエンジンを制御する第1のフォーマッタを
含み、その第1のフォーマッタが、ページ記述言語に従
って前記プリントエンジン用の第1のデータを作成し、
及び b.前記第2の仕様が、第2の動作モードにおいて前記
プリントエンジンを制御する第2のフォーマッタを含
み、その第2のフォーマッタが、前記ページ記述言語に
従って前記プリントエンジン用の第2のデータを作成す
る、上記5のプリンタ装置。 8.前記プログラムの示標が、JAVAバイトコードを
含む、上記1、2、3、4、5、6または7の装置。 9.第1の仕様を第2の仕様に統合する方法であって、
その第1の仕様が、静的データを参照して動作し、その
統合が、ある環境において動作する方法において、 a.前記第1の仕様に従って、ファクトリ仕様を含む第
3の仕様を作成し、そのファクトリが、オブジェクトの
インスタンス生成のためのものであり、該ファクトリ仕
様が、ファクトリインスタンスデータを含み、及び b.前記第2の仕様に従って、第4の仕様を作成し、そ
の第4の仕様が、動作時に、(1)前記ファクトリ仕様
に従ってファクトリオブジェクトをインスタンス生成
し、(2)前記ファクトリオブジェクトを介してオブジ
ェクトのインスタンス生成を要求し、及び(3)前記静
的データの代りに前記ファクトリインスタンスデータに
関して動作する、方法。 10.1つのパッケージを含むメモリに、前記第3の仕
様と前記第4の仕様とを格納することを更に含む、上記
9の方法。
の組み合わせからなる例示的な実施態様を示す。 1.オブジェクト指向プログラムの示標を有するメモリ
装置(130)であって、そのプログラムが、動作時に状
態の示標を提供し、その状態が、 a.第1のインスタンス変数を含む、ファクトリの第1
のインスタンス(346)と、 b.第2のインスタンス変数を含む、前記ファクトリの
第2のインスタンス(366)と、 c.オブジェクトの第1のインスタンス(348)と、そ
の第1のインスタンス変数が、前記ファクトリの第1の
インスタンスにより該オブジェクトの第1のインスタン
スを形成することからなる第1のセットの第1の動作
と、該オブジェクトの第1のインスタンスによる該オブ
ジェクトの動作とに応答することと、 d.前記オブジェクトの第2のインスタンス(368)
と、その第2のインスタンス変数が、前記ファクトリの
第2のインスタンスにより前記オブジェクトの第2のイ
ンスタンスを形成することからなる第2のセットの第2
の動作と、前記オブジェクトの第2のインスタンスによ
る前記オブジェクトの動作とに応答することと、を含
み、 e.前記第1のインスタンス変数が、前記第2の動作と
は無関係である、メモリ装置。 2.a.プリントエンジン(520)と、 b.前記プリントエンジンにデータを供給するプロセッ
サ(514)と、及び c.前記プロセッサが状態の示標を提供するために実行
するオブジェクト指向プログラムの示標を有するメモリ
装置(518)と、を含み、前記状態が、(1)第1の
インスタンス変数を含む、ファクトリの第1のインスタ
ンス(346)と、(2)第2のインスタンス変数を含
む、前記ファクトリの第2のインスタンス(366)と、
(3)オブジェクトの第1のインスタンス(348)と、
その第1のインスタンス変数が、前記ファクトリの第1
のインスタンスにより該オブジェクトの第1のインスタ
ンスを形成することからなる第1のセットの第1の動作
と、該オブジェクトの第1のインスタンスによる該オブ
ジェクトの動作とに応答することと、(4)前記オブジ
ェクトの第2のインスタンス(368)と、その第2のイ
ンスタンス変数が、前記ファクトリの第2のインスタン
スにより前記オブジェクトの第2のインスタンスを形成
することからなる第2のセットの第2の動作と、前記オ
ブジェクトの第2のインスタンスによる前記オブジェク
トの動作とに応答することと、を含み、(5)前記第1
のインスタンス変数が、前記第2の動作とは無関係であ
る、プリンタ装置。 3.前記プログラムの前記示標は、クラス階層構造(26
6)の示標を含み、前記階層構造が、 a.動作中、前記ファクトリの第1のインスタンスに対
し、前記オブジェクトの第1のインスタンスを形成する
よう命令する第1の仕様(344)を含む第1のサブツリ
ーと、 b.動作中、前記ファクトリの第2のインスタンスに対
し、前記オブジェクトの第2のインスタンスを形成する
よう命令する第2の仕様(364)を含む第2のサブツリ
ーと、を含む、上記1または2の装置。 4.前記階層構造が、前記ファクトリの仕様と前記オブ
ジェクトの仕様とを更に含む、上記3の装置。 5.前記メモリが、 a.前記第1の仕様の示標を含む第1のパッケージと、
及び b.前記第2の仕様の示標を含む第2のパッケージと、
を更に含む、上記4の装置。 6.a.前記第1の仕様が、(1)ページ記述言語に従
って第1のデータを受取るインタフェースコントローラ
と、及び(2)前記プリントエンジンを制御するフォー
マッタと、を含み、 b.第2の仕様が、前記第1のデータに対応して第2の
データを提供する変更子を含み、その第2のデータが、
前記インタフェースコントローラから受取られると共
に、前記ページ記述言語に従って前記フォーマッタに供
給される、上記5のプリンタ装置。 7.a.前記第1の仕様が、第1の動作モードにおいて
前記プリントエンジンを制御する第1のフォーマッタを
含み、その第1のフォーマッタが、ページ記述言語に従
って前記プリントエンジン用の第1のデータを作成し、
及び b.前記第2の仕様が、第2の動作モードにおいて前記
プリントエンジンを制御する第2のフォーマッタを含
み、その第2のフォーマッタが、前記ページ記述言語に
従って前記プリントエンジン用の第2のデータを作成す
る、上記5のプリンタ装置。 8.前記プログラムの示標が、JAVAバイトコードを
含む、上記1、2、3、4、5、6または7の装置。 9.第1の仕様を第2の仕様に統合する方法であって、
その第1の仕様が、静的データを参照して動作し、その
統合が、ある環境において動作する方法において、 a.前記第1の仕様に従って、ファクトリ仕様を含む第
3の仕様を作成し、そのファクトリが、オブジェクトの
インスタンス生成のためのものであり、該ファクトリ仕
様が、ファクトリインスタンスデータを含み、及び b.前記第2の仕様に従って、第4の仕様を作成し、そ
の第4の仕様が、動作時に、(1)前記ファクトリ仕様
に従ってファクトリオブジェクトをインスタンス生成
し、(2)前記ファクトリオブジェクトを介してオブジ
ェクトのインスタンス生成を要求し、及び(3)前記静
的データの代りに前記ファクトリインスタンスデータに
関して動作する、方法。 10.1つのパッケージを含むメモリに、前記第3の仕
様と前記第4の仕様とを格納することを更に含む、上記
9の方法。
【0045】
【発明の効果】本発明により、オブジェクト指向プログ
ラムの開発において、以前に開発したオブジェクトのテ
スト済みの振舞いを新たな製品に含めることが可能とな
り、開発時間と費用が低減される。
ラムの開発において、以前に開発したオブジェクトのテ
スト済みの振舞いを新たな製品に含めることが可能とな
り、開発時間と費用が低減される。
【図1】本発明の様々な態様によるコンピュータシステ
ムの機能ブロック図である。
ムの機能ブロック図である。
【図2】図1のコンピュータシステムによって提供され
るコンピューティング環境のデータフロー図である。
るコンピューティング環境のデータフロー図である。
【図3】図2の環境において動作する2つのアプリケー
ションプログラムのデータフロー図である。
ションプログラムのデータフロー図である。
【図4】図2に示す2つのアプリケーションプログラム
の動作中のメモリの内容を示すメモリマップである。
の動作中のメモリの内容を示すメモリマップである。
【図5】本発明の1つの実施態様におけるプリンタの機
能ブロック図である。
能ブロック図である。
【図6】図5のプリンタによって実行される方法であ
る。
る。
100 コンピュータシステム 120、514 プロセッサ 140 バス 130、518 メモリ 200 環境 266 クラステーブル 344 OBJECT_A状態 346 FACTORY_C状態 348 OBJECT_C状態 364 OBJECT_B状態 366 FACTORY_C状態 368 OBJECT_C状態 500 プリンタ 520 プリントエンジン
Claims (1)
- 【請求項1】オブジェクト指向プログラムの示標を有す
るメモリ装置(130)であって、そのプログラムが、動
作時に状態の示標を提供し、その状態が、 a.第1のインスタンス変数を含む、ファクトリの第1
のインスタンス(346)と、 b.第2のインスタンス変数を含む、前記ファクトリの
第2のインスタンス(366)と、 c.オブジェクトの第1のインスタンス(348)と、そ
の第1のインスタンス変数が、前記ファクトリの第1の
インスタンスにより該オブジェクトの第1のインスタン
スを形成することからなる第1のセットの第1の動作
と、該オブジェクトの第1のインスタンスによる該オブ
ジェクトの動作とに応答することと、 d.前記オブジェクトの第2のインスタンス(368)
と、その第2のインスタンス変数が、前記ファクトリの
第2のインスタンスにより前記オブジェクトの第2のイ
ンスタンスを形成することからなる第2のセットの第2
の動作と、前記オブジェクトの第2のインスタンスによ
る前記オブジェクトの動作とに応答することと、 を含み、 e.前記第1のインスタンス変数が、前記第2の動作と
は無関係である、メモリ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US299947 | 1999-04-26 | ||
US09/299,947 US6453460B1 (en) | 1999-04-26 | 1999-04-26 | Computer system with single processing environment for executing multiple application programs |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000322261A true JP2000322261A (ja) | 2000-11-24 |
JP2000322261A5 JP2000322261A5 (ja) | 2005-03-10 |
Family
ID=23157004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000120923A Withdrawn JP2000322261A (ja) | 1999-04-26 | 2000-04-21 | 複数のアプリケーションプログラムを実行する単一処理環境を有するコンピュータシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6453460B1 (ja) |
JP (1) | JP2000322261A (ja) |
DE (1) | DE10006417A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010521033A (ja) * | 2007-03-09 | 2010-06-17 | マイクロソフト コーポレーション | ユーザーインターフェース要素を用いた分離、管理および通信 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000259417A (ja) * | 1999-03-12 | 2000-09-22 | Sony Corp | データ処理装置、データ処理方法及びプログラム提供媒体 |
US6785691B1 (en) * | 1999-10-13 | 2004-08-31 | Avaya Technology Corp. | Object oriented processing system and data sharing environment for applications therein |
US6567974B1 (en) * | 2000-02-25 | 2003-05-20 | Sun Microsystems, Inc. | Small memory footprint system and method for separating applications within a single virtual machine |
GB2365554B (en) * | 2000-05-31 | 2004-09-01 | Ibm | Virtual machine support for multiple aplications |
US6901586B1 (en) * | 2000-11-06 | 2005-05-31 | Sun Microsystems, Inc. | Safe language static variables initialization in a multitasking system |
FR2820222B1 (fr) * | 2001-01-26 | 2003-03-21 | Schneider Automation | Procede de programmation d'une application d'automatisme |
US20020188703A1 (en) * | 2001-06-04 | 2002-12-12 | Mckesson Information Solutions Holdings Ltd. | Graphical tool for developing computer programs via specifications |
US6981268B2 (en) * | 2001-12-05 | 2005-12-27 | Microsoft Corporation | System and method for persisting and resolving application assembly binds |
US7107575B1 (en) * | 2002-08-21 | 2006-09-12 | Cisco Technology, Inc. | Method and system for providing a single object instance per client-server session |
US7551298B2 (en) * | 2004-06-04 | 2009-06-23 | Primax Electronics Ltd. | Print control device with embedded engine simulation module and test method thereof |
US9886532B1 (en) * | 2004-10-07 | 2018-02-06 | Gregory M. Scallon | Data integrity protection mechanism |
US7581216B2 (en) * | 2005-01-21 | 2009-08-25 | International Business Machines Corporation | Preserving platform independence with native accelerators for performance critical program objects |
US20080208374A1 (en) * | 2007-02-27 | 2008-08-28 | Rockwell Automation Technologies, Inc. | Testing utilizing controller engine instances |
US7899559B2 (en) * | 2007-02-27 | 2011-03-01 | Rockwell Automation Technologies, Inc. | Language-based organization of controller engine instances |
US7778713B2 (en) * | 2007-02-27 | 2010-08-17 | Rockwell Automation Technologies, Inc. | Construction of an industrial control system using multiple instances of industrial control engines |
US7797060B2 (en) * | 2007-02-27 | 2010-09-14 | Rockwell Automation Technologies, Inc. | Prioritization associated with controller engine instances |
US7870223B2 (en) * | 2007-02-27 | 2011-01-11 | Rockwell Automation Technologies, Inc. | Services associated with an industrial environment employing controller engine instances |
US7853336B2 (en) * | 2007-02-27 | 2010-12-14 | Rockwell Automation Technologies, Inc. | Dynamic versioning utilizing multiple controller engine instances to limit complications |
US7684876B2 (en) * | 2007-02-27 | 2010-03-23 | Rockwell Automation Technologies, Inc. | Dynamic load balancing using virtual controller instances |
US7987004B2 (en) * | 2007-02-27 | 2011-07-26 | Rockwell Automation Technologies, Inc. | Scalability related to controller engine instances |
US8856522B2 (en) | 2007-02-27 | 2014-10-07 | Rockwell Automation Technologies | Security, safety, and redundancy employing controller engine instances |
US7778714B2 (en) * | 2007-02-27 | 2010-08-17 | Rockwell Automation Technologies, Inc. | On-line editing associated with controller engine instances |
US9448818B2 (en) | 2014-02-14 | 2016-09-20 | Red Hat, Inc. | Defining classes as singleton classes or non-singleton classes |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297284A (en) * | 1991-04-09 | 1994-03-22 | Microsoft Corporation | Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language |
US5517645A (en) * | 1993-11-05 | 1996-05-14 | Microsoft Corporation | Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager |
US5509123A (en) * | 1994-03-22 | 1996-04-16 | Cabletron Systems, Inc. | Distributed autonomous object architectures for network layer routing |
JP3554045B2 (ja) * | 1994-10-28 | 2004-08-11 | 富士通株式会社 | 補助記憶装置の記録内容復元装置および記録復元装置 |
US5864862A (en) | 1996-09-30 | 1999-01-26 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for creating reusable components in an object-oriented programming environment |
US5822580A (en) * | 1996-01-19 | 1998-10-13 | Object Technology Licensing Corp. | Object oriented programming based global registry system, method, and article of manufacture |
US5765157A (en) | 1996-06-05 | 1998-06-09 | Sun Microsystems, Inc. | Computer system and method for executing threads of execution with reduced run-time memory space requirements |
US5864866A (en) | 1997-03-26 | 1999-01-26 | International Business Machines Corporation | Apparatus and method for providing externalization in an object-oriented environment |
US5920725A (en) * | 1997-07-02 | 1999-07-06 | Adaptivity Inc. | Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors |
-
1999
- 1999-04-26 US US09/299,947 patent/US6453460B1/en not_active Expired - Fee Related
-
2000
- 2000-02-14 DE DE10006417A patent/DE10006417A1/de not_active Ceased
- 2000-04-21 JP JP2000120923A patent/JP2000322261A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010521033A (ja) * | 2007-03-09 | 2010-06-17 | マイクロソフト コーポレーション | ユーザーインターフェース要素を用いた分離、管理および通信 |
Also Published As
Publication number | Publication date |
---|---|
DE10006417A1 (de) | 2000-11-02 |
US6453460B1 (en) | 2002-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000322261A (ja) | 複数のアプリケーションプログラムを実行する単一処理環境を有するコンピュータシステム | |
US7318141B2 (en) | Methods and systems to control virtual machines | |
US5274789A (en) | Multiprocessor system having distributed shared resources and dynamic and selective global data replication | |
US6711605B2 (en) | Multi OS configuration method and computer system | |
US5414848A (en) | Method and apparatus for sharing a common routine stored in a single virtual machine with other virtual machines operating in a preemptive muli-tasking computer system | |
JP2986075B2 (ja) | ローカル・オブジェクト・アドレス及びグローバル・オブジェクト識別子を結合して単一オブジェクト・ポインタにするためのシステム | |
US5553291A (en) | Virtual machine control method and virtual machine system | |
JP3546678B2 (ja) | マルチos構成方法 | |
EP0431467B1 (en) | Multiprocessor system having distributed shared resources and dynamic global data replication | |
US6167565A (en) | Method and system of custom marshaling of inter-language parameters | |
TWI573094B (zh) | 使共享虛擬記憶體中之虛擬函式在運算平台的異質處理器間共享之技術 | |
US20060026183A1 (en) | Method and system provide concurrent access to a software object | |
US20090024820A1 (en) | Memory Allocation For Crash Dump | |
CN101171572A (zh) | 在具有动态逻辑分区的计算环境中管理计算机存储器 | |
US20050071856A1 (en) | Dynamically loadable stub modules | |
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
JP2004503866A (ja) | モジュラーコンピュータシステムおよび関連方法 | |
JP5151559B2 (ja) | プログラム実行システム | |
US7213123B2 (en) | Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture | |
JPH0328943A (ja) | オーバーレイ管理方法 | |
US6600493B1 (en) | Allocating memory based on memory device organization | |
JP4084956B2 (ja) | オブジェクト集合方法およびシステム | |
US20080320459A1 (en) | Method And Systems For Providing Concurrency Control For Addressable Entities | |
US6275985B1 (en) | Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support | |
JP2009258798A (ja) | 仮想マシンシステム、ホスト計算機、i/oカード、仮想マシン構築方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040405 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040405 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070202 |