JPH1091446A - Javaベースアプリケーションの発見とダウンロードのための分散オブジェクトシステムの利用 - Google Patents
Javaベースアプリケーションの発見とダウンロードのための分散オブジェクトシステムの利用Info
- Publication number
- JPH1091446A JPH1091446A JP9177284A JP17728497A JPH1091446A JP H1091446 A JPH1091446 A JP H1091446A JP 9177284 A JP9177284 A JP 9177284A JP 17728497 A JP17728497 A JP 17728497A JP H1091446 A JPH1091446 A JP H1091446A
- Authority
- JP
- Japan
- Prior art keywords
- applet
- server
- execution code
- client
- class
- 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.)
- Pending
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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- 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/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
(57)【要約】
【課題】分散オブジェクトシステムで、Javaのアプリケ
ーションを遠隔マシンから利用する為のクラスの場所を
動的に発見しダウンロードする手法を提供する。 【解決手段】 クライアントは必要な基本クラスを含む
クラスサーバの決定の要求をネーミングサービスに伝
え、オブジェクト要求ブローカを使って、クラスサーバ
に基本クラスのコードを要求する。クラスサーバは、自
分のローカルファイル集合から引き出すか、適切な他の
クラスサーバをネーミングサービスに問い合せしてコー
ドを受け取り、要求されているコードをオブジェクト要
求ブローカを通してクライアントに返す。クライアント
は、返ってきたコードが未解決のクラスを含んでいない
かを決定する。未定義なクラスならば、未定義クラスの
コードを要求する。ネットワーククラスローダにより、
クライアントは、分散オブジェクトシステムの全体にわ
たって、クラスのロードと解決が可能になる。
ーションを遠隔マシンから利用する為のクラスの場所を
動的に発見しダウンロードする手法を提供する。 【解決手段】 クライアントは必要な基本クラスを含む
クラスサーバの決定の要求をネーミングサービスに伝
え、オブジェクト要求ブローカを使って、クラスサーバ
に基本クラスのコードを要求する。クラスサーバは、自
分のローカルファイル集合から引き出すか、適切な他の
クラスサーバをネーミングサービスに問い合せしてコー
ドを受け取り、要求されているコードをオブジェクト要
求ブローカを通してクライアントに返す。クライアント
は、返ってきたコードが未解決のクラスを含んでいない
かを決定する。未定義なクラスならば、未定義クラスの
コードを要求する。ネットワーククラスローダにより、
クライアントは、分散オブジェクトシステムの全体にわ
たって、クラスのロードと解決が可能になる。
Description
【0001】
【発明の属する技術分野】本発明は、計算機システムに
おけるアプリケーションプログラムのコードの獲得に関
連している。より詳しくは、分散オブジェクトシステム
におけるJAVAベースのアプリケーションの獲得に関連す
る。
おけるアプリケーションプログラムのコードの獲得に関
連している。より詳しくは、分散オブジェクトシステム
におけるJAVAベースのアプリケーションの獲得に関連す
る。
【0002】
【従来の技術】インターネットの普及にともない、イン
ターネットによる情報の移動や閲覧(view)に関する需
要が増大してきた。一般に、インターネットは、電子メ
イルによるコミュニケーションや、国際的な計算機ネッ
トワーク上での情報の閲覧に使用されている。インター
ネットの一側面として、ワールド・ワイド・ウエブ(Wo
rld Wide Werb)(以下、Web、またはWWWと記す)があ
る。Webは、ある特定の企業、組織そして個人のWebサイ
ト(または、Webページ)をアクセスするために使われ
ている。これらのWebサイトは、情報をもっており、WWW
の一部として閲覧可能である。ユーザがWebサイトをア
クセスするとき、典型的には、Webサイトからの情報が
ユーザの計算機にダウンロードされる。この情報は、グ
ラフィックス、ウインドウ、写真、音声、動画、そして
計算機ネットワーク上で受け渡すのに適したその他の情
報を含んでいる。
ターネットによる情報の移動や閲覧(view)に関する需
要が増大してきた。一般に、インターネットは、電子メ
イルによるコミュニケーションや、国際的な計算機ネッ
トワーク上での情報の閲覧に使用されている。インター
ネットの一側面として、ワールド・ワイド・ウエブ(Wo
rld Wide Werb)(以下、Web、またはWWWと記す)があ
る。Webは、ある特定の企業、組織そして個人のWebサイ
ト(または、Webページ)をアクセスするために使われ
ている。これらのWebサイトは、情報をもっており、WWW
の一部として閲覧可能である。ユーザがWebサイトをア
クセスするとき、典型的には、Webサイトからの情報が
ユーザの計算機にダウンロードされる。この情報は、グ
ラフィックス、ウインドウ、写真、音声、動画、そして
計算機ネットワーク上で受け渡すのに適したその他の情
報を含んでいる。
【0003】一般には、Webブラウザとして知られるソ
フトウエアを用いて、特定のWebサイトや情報を検索す
るためにWebをブラウズし、Webサイトに接続し、そし
て、最終的には、そのWebサイトからユーザの計算機に
情報をダウンロードする。また、さまざまな種類のWeb
ブラウザが利用可能である。例えば、広く普及している
2つのWebブラウザとして、ネットスケープ(Netscape)
とモザイク(Mosaic)がある。Webブラウザを使って、W
ebサイトから情報をダウンロードするとき、その情報は
ユーザの計算機のウインドウ上に表示されるのが一般的
である。そして、ユーザの計算機のその情報が表示去れ
ているウインドウか、あるいは、別のサブウインドウ上
で、実行可能なプログラムコードもロードされることが
望ましい。ユーザの計算機上で、プログラムのロードと
実行を行うための技術として、サン・マイクロシステム
(Sun Microsystems, Inc. of Mountain View, Califor
nia)の提供するプログラミング言語Javaを使うことが
考えられる。
フトウエアを用いて、特定のWebサイトや情報を検索す
るためにWebをブラウズし、Webサイトに接続し、そし
て、最終的には、そのWebサイトからユーザの計算機に
情報をダウンロードする。また、さまざまな種類のWeb
ブラウザが利用可能である。例えば、広く普及している
2つのWebブラウザとして、ネットスケープ(Netscape)
とモザイク(Mosaic)がある。Webブラウザを使って、W
ebサイトから情報をダウンロードするとき、その情報は
ユーザの計算機のウインドウ上に表示されるのが一般的
である。そして、ユーザの計算機のその情報が表示去れ
ているウインドウか、あるいは、別のサブウインドウ上
で、実行可能なプログラムコードもロードされることが
望ましい。ユーザの計算機上で、プログラムのロードと
実行を行うための技術として、サン・マイクロシステム
(Sun Microsystems, Inc. of Mountain View, Califor
nia)の提供するプログラミング言語Javaを使うことが
考えられる。
【0004】Javaは、実行時環境としてのインタプリタ
も備えたプログラミング言語である。また、ネットワー
ク上でのアプリケーションを支援するように設計され
た、オブジェクト指向プログラミング言語でもある。実
行時環境で実行されるJavaアプリケーションは、アプレ
ット(applet)と呼ばれる。Javaアプレットは、コンパ
クトで、Javaインタプリタが走っているあらゆる計算機
で実行可能であるコンパイルされたコードを含んでい
る。構造的には、それぞれのアプレットが、計算機のフ
ァイルシステムに格納されたクラスの集合である。Java
は、動的な言語なので、これらのクラスは、ネットワー
ク経由で、必要なときにロードされる。一つのファイル
に一つのクラスでも良いし、与えられた一つのファイル
に複数のクラスがあってもよい。Javaは、一つの計算機
上、あるいは、ネットワーク上の複数の計算機で走る、
そして、Javaは、Webブラウザに接続して使われるにも
かかわらず、計算機システム、あるいはネットワークの
一部としても利用される。Java言語の記述は、「Nutshe
llのJava」(David Flanagan著、O'Reilly &Associate
s、1996)にある。
も備えたプログラミング言語である。また、ネットワー
ク上でのアプリケーションを支援するように設計され
た、オブジェクト指向プログラミング言語でもある。実
行時環境で実行されるJavaアプリケーションは、アプレ
ット(applet)と呼ばれる。Javaアプレットは、コンパ
クトで、Javaインタプリタが走っているあらゆる計算機
で実行可能であるコンパイルされたコードを含んでい
る。構造的には、それぞれのアプレットが、計算機のフ
ァイルシステムに格納されたクラスの集合である。Java
は、動的な言語なので、これらのクラスは、ネットワー
ク経由で、必要なときにロードされる。一つのファイル
に一つのクラスでも良いし、与えられた一つのファイル
に複数のクラスがあってもよい。Javaは、一つの計算機
上、あるいは、ネットワーク上の複数の計算機で走る、
そして、Javaは、Webブラウザに接続して使われるにも
かかわらず、計算機システム、あるいはネットワークの
一部としても利用される。Java言語の記述は、「Nutshe
llのJava」(David Flanagan著、O'Reilly &Associate
s、1996)にある。
【0005】Webの普及以前は、Javaインタプリタは、
ローカルなコンピュータ上で実行するために、アプレッ
トをロードしていた。Javaでは、典型的には、まず最初
に必要な基本クラスがロードされる。そして、その基本
クラスが使用するためにロードする必要があるクラス
が、その基本クラスにより提示されている。必要だがま
だロードされていないクラスは、"未解決"と呼ばれ、必
要であり既にロードされている(あるいは、定義されて
いる)クラスは、"解決済み"と呼ばれる。そして、Web
の利用以前は、特定のアプレットのクラスが、ローカル
な計算機のファイルの集合に格納されていた。ローカル
な計算機で走っているJavaインタプリタは、ローカルな
ファイルシステムをアクセスし、必要なクラスに対応す
るファイルを取り出す。残念ながら、Javaインタプリタ
は、ローカルなファイルシステムしか知らないので、Ja
vaは、ローカルなファイルシステムから利用可能なアプ
レットを取り出すことしかできなかった。また、これら
のクラスは、固定されたファイル名によって記述されて
いた。
ローカルなコンピュータ上で実行するために、アプレッ
トをロードしていた。Javaでは、典型的には、まず最初
に必要な基本クラスがロードされる。そして、その基本
クラスが使用するためにロードする必要があるクラス
が、その基本クラスにより提示されている。必要だがま
だロードされていないクラスは、"未解決"と呼ばれ、必
要であり既にロードされている(あるいは、定義されて
いる)クラスは、"解決済み"と呼ばれる。そして、Web
の利用以前は、特定のアプレットのクラスが、ローカル
な計算機のファイルの集合に格納されていた。ローカル
な計算機で走っているJavaインタプリタは、ローカルな
ファイルシステムをアクセスし、必要なクラスに対応す
るファイルを取り出す。残念ながら、Javaインタプリタ
は、ローカルなファイルシステムしか知らないので、Ja
vaは、ローカルなファイルシステムから利用可能なアプ
レットを取り出すことしかできなかった。また、これら
のクラスは、固定されたファイル名によって記述されて
いた。
【0006】
【発明が解決しようとするき課題】しかし、Webのブラ
ウザの出現とともに、Javaは、遠隔のサイトからアプレ
ットを見つけ、ダウンロードすることが可能になった。
ただし、アプレットの獲得は、まだ制限されたものだっ
た。このような状況で、一般にブラウザは、ダウンロー
ドされたアプレットを実行するために、Javaインタプリ
タを組み入れている。Javaアプレットは、最初に基本ク
ラスの名前を同定することにより、ダウンロードされ
る。一旦基本クラスが同定されてダウンロードされる
と、その基本クラスにより使用される他のクラスが取り
出され、Javaインタプリタにダウンロードされる。一般
にブラウザは、ハイパー・テキスト・トランスファある
いはhttpプロトコルを使うので、計算機ネットワークに
おけるJavaクラスの位置は、ユニバーサル・リソース・
ロケータ(Universal Resource Locator:URT)により同
定される。URLは、計算機を相互に接続し、計算機の名
前とその計算機上のファイルへのパスを提供する。よっ
て、URLを通して、そのJavaクラスを含む個々のファイ
ルが計算機ネットワーク上で同定される。同定された計
算機で走っているhttpサーバが、これらのファイルを読
んで、そのクラス(実行ファイル(executablebyte)形
式)を実行を要求しているブラウザへ送り返す。
ウザの出現とともに、Javaは、遠隔のサイトからアプレ
ットを見つけ、ダウンロードすることが可能になった。
ただし、アプレットの獲得は、まだ制限されたものだっ
た。このような状況で、一般にブラウザは、ダウンロー
ドされたアプレットを実行するために、Javaインタプリ
タを組み入れている。Javaアプレットは、最初に基本ク
ラスの名前を同定することにより、ダウンロードされ
る。一旦基本クラスが同定されてダウンロードされる
と、その基本クラスにより使用される他のクラスが取り
出され、Javaインタプリタにダウンロードされる。一般
にブラウザは、ハイパー・テキスト・トランスファある
いはhttpプロトコルを使うので、計算機ネットワークに
おけるJavaクラスの位置は、ユニバーサル・リソース・
ロケータ(Universal Resource Locator:URT)により同
定される。URLは、計算機を相互に接続し、計算機の名
前とその計算機上のファイルへのパスを提供する。よっ
て、URLを通して、そのJavaクラスを含む個々のファイ
ルが計算機ネットワーク上で同定される。同定された計
算機で走っているhttpサーバが、これらのファイルを読
んで、そのクラス(実行ファイル(executablebyte)形
式)を実行を要求しているブラウザへ送り返す。
【0007】このプロセスがどのように働くかの例につ
いて、以下に説明する。一般に、Webページは、それが
ユーザの計算機にダウンロードされたときに、どのよう
に表示され、動くかを定義しているHTML言語(Hypertex
t Markup Language)で記述される。Webページなどをダ
ウンロードするために、ネットスケープ(Netscape)の
ようなWebブラウザを使う過程で、ロードすべき基本ク
ラスを示しているJavaアプレットがHTMLに記述されてい
るのを見つける。換言すれば、ユーザがネットスケープ
を通して獲得するHTMLページのデータは、そのページの
一部である小さなプログラムを実行するために使われる
アプレットクラスを参照している。よって、そのページ
が定義しているフレームでアプレットを走らせるため
に、プログラムを配置し、ダウンロードするように、ネ
ットスケープが指示される。このコードは、特定の計算
機を参照している特定のURLアドレスの参照により見つ
けられる。
いて、以下に説明する。一般に、Webページは、それが
ユーザの計算機にダウンロードされたときに、どのよう
に表示され、動くかを定義しているHTML言語(Hypertex
t Markup Language)で記述される。Webページなどをダ
ウンロードするために、ネットスケープ(Netscape)の
ようなWebブラウザを使う過程で、ロードすべき基本ク
ラスを示しているJavaアプレットがHTMLに記述されてい
るのを見つける。換言すれば、ユーザがネットスケープ
を通して獲得するHTMLページのデータは、そのページの
一部である小さなプログラムを実行するために使われる
アプレットクラスを参照している。よって、そのページ
が定義しているフレームでアプレットを走らせるため
に、プログラムを配置し、ダウンロードするように、ネ
ットスケープが指示される。このコードは、特定の計算
機を参照している特定のURLアドレスの参照により見つ
けられる。
【0008】Javaクラスを、ローカルなファイルシステ
ムで利用可能なファイル、または、URLでアクセスでき
るファイルに含まれていると定義することの欠点は、そ
のファイル名が固定されていることである。言い替える
と、あるアプレットを必要とするユーザは、どこかの実
物の計算機に対応しているファイルの実際の名前を知っ
ていなければならないことを意味する。しかし、この名
前を得ること、あるいは、更新することは困難である。
例えば、Javaアプレットやそのクラスが移動された場
合、そのファイル名は変更されなければならない。アプ
レットやクラスが、異なったサイトに置かれており、ク
ラスの移動が行われるインターネットにおいては、ファ
イル名が固定されていることは不便であり、望ましい状
況ではない。例えば、アプレットが、あるWebサイトに
ある衛星からの気象情報をWebブラウザに表示する機能
を実行する場合を考える。情報を表示する過程で、アプ
レットは、ネットワーク上の様々なクラスと見つけて、
ダウンロードする必要がある。このとき、固定されたフ
ァイル名が変更されたか、あるいは、そのクラス名が変
更されたかにより、あるクラスが見つからない状況は、
望ましくない。そのような場合、気象情報の表示が途中
で止まってしまうかもしれない。また、特定の計算機が
ダウンした場合、必要なクラスが、ネットワーク上の他
のサイトにあるにもかかわらず、アクセスできないこと
になる。
ムで利用可能なファイル、または、URLでアクセスでき
るファイルに含まれていると定義することの欠点は、そ
のファイル名が固定されていることである。言い替える
と、あるアプレットを必要とするユーザは、どこかの実
物の計算機に対応しているファイルの実際の名前を知っ
ていなければならないことを意味する。しかし、この名
前を得ること、あるいは、更新することは困難である。
例えば、Javaアプレットやそのクラスが移動された場
合、そのファイル名は変更されなければならない。アプ
レットやクラスが、異なったサイトに置かれており、ク
ラスの移動が行われるインターネットにおいては、ファ
イル名が固定されていることは不便であり、望ましい状
況ではない。例えば、アプレットが、あるWebサイトに
ある衛星からの気象情報をWebブラウザに表示する機能
を実行する場合を考える。情報を表示する過程で、アプ
レットは、ネットワーク上の様々なクラスと見つけて、
ダウンロードする必要がある。このとき、固定されたフ
ァイル名が変更されたか、あるいは、そのクラス名が変
更されたかにより、あるクラスが見つからない状況は、
望ましくない。そのような場合、気象情報の表示が途中
で止まってしまうかもしれない。また、特定の計算機が
ダウンした場合、必要なクラスが、ネットワーク上の他
のサイトにあるにもかかわらず、アクセスできないこと
になる。
【0009】特に分散オブジェクトシステムでは、固定
されたファイル名に依存するJavaクラスを見つけてダウ
ンロードする現在のモデルは、破綻する。例えば、分散
オブジェクトシステムの利点は、参照がオブジェクト
(クラスやファイル)に割り当てられ、ユーザはそのオ
ブジェクトがどこにあるかを正確に知る必要がないこと
にある。また、厳密な分散オブジェクトシステムは、必
要なオブジェクトを見つける要求を受け付けるシステム
内であれば、そのシステムのどこにあるオブジェクトが
あろうが受け入れることができる。よって、現在のよう
に固定化されたファイル名によって、Javaクラスを見つ
けてダウンロードする方式は、分散オブジェクトシステ
ムには適していない。したがって、分散オブジェクトシ
ステムにおいて、Javaベースのアプリケーションを見つ
けてダウンロードする技術をもつことが望まれる。その
ような技術により、必要なクラスが分散オブジェクトシ
ステムのどこにあるかによらず、また、そのクラスの正
確なファイル名やマシン名を与えるかどうかによらず、
必要なクラスを見つけダウンロードすることのできるよ
うな、アプレットへの要求を許容できる。
されたファイル名に依存するJavaクラスを見つけてダウ
ンロードする現在のモデルは、破綻する。例えば、分散
オブジェクトシステムの利点は、参照がオブジェクト
(クラスやファイル)に割り当てられ、ユーザはそのオ
ブジェクトがどこにあるかを正確に知る必要がないこと
にある。また、厳密な分散オブジェクトシステムは、必
要なオブジェクトを見つける要求を受け付けるシステム
内であれば、そのシステムのどこにあるオブジェクトが
あろうが受け入れることができる。よって、現在のよう
に固定化されたファイル名によって、Javaクラスを見つ
けてダウンロードする方式は、分散オブジェクトシステ
ムには適していない。したがって、分散オブジェクトシ
ステムにおいて、Javaベースのアプリケーションを見つ
けてダウンロードする技術をもつことが望まれる。その
ような技術により、必要なクラスが分散オブジェクトシ
ステムのどこにあるかによらず、また、そのクラスの正
確なファイル名やマシン名を与えるかどうかによらず、
必要なクラスを見つけダウンロードすることのできるよ
うな、アプレットへの要求を許容できる。
【0010】
【課題を解決するための手段】本発明の具体的な方法
は、分散オブジェクト計算システムにおいてアプレット
の実行コードを獲得する方法および装置(apparatus)
に関係している。分散オブジェクト計算システムは、ク
ライアント、アプレットサーバ、そして、クライアント
とアプレットサーバ間の通信を可能にするオブジェクト
要求ブローカからなる。方法論的には、まず最初に、特
定のアプレット実行コードを得るために利用できるアプ
レットサーバがシステム中に存在するかを否かを、クラ
イアントがオブジェクト要求ブローカに問い合わせる。
次に、アプレット実行コードの一部をオブジェクト要求
ブローカを利用することにより、見つかったアプレット
サーバへ要求する。いったん要求されると、そのアプレ
ットサーバは、要求されたアプレット実行コードの一部
を取り出し、オブジェクト要求ブローカを通じて、その
実行コードをクライアントに返送する。
は、分散オブジェクト計算システムにおいてアプレット
の実行コードを獲得する方法および装置(apparatus)
に関係している。分散オブジェクト計算システムは、ク
ライアント、アプレットサーバ、そして、クライアント
とアプレットサーバ間の通信を可能にするオブジェクト
要求ブローカからなる。方法論的には、まず最初に、特
定のアプレット実行コードを得るために利用できるアプ
レットサーバがシステム中に存在するかを否かを、クラ
イアントがオブジェクト要求ブローカに問い合わせる。
次に、アプレット実行コードの一部をオブジェクト要求
ブローカを利用することにより、見つかったアプレット
サーバへ要求する。いったん要求されると、そのアプレ
ットサーバは、要求されたアプレット実行コードの一部
を取り出し、オブジェクト要求ブローカを通じて、その
実行コードをクライアントに返送する。
【0011】関連した側面では、クライアントは、自分
がアプレット実行コードを実行できるようにするため
に、アプレットソフトウェアを取り込む。また、クライ
アントは、アプレットソフトウエアががオブジェクト要
求ブローカに呼出をおこなうことを可能にするため、特
殊なORBバインディング(binding)されたソフトウエア
をロードする。さらに、クライアントが、アプレットの
一部をロードし、コードを解決することを可能にするた
めに、ネットワーククラスローダをもつ。アプレットソ
フトウエアは、Javaプログラミング言語の一つのバージ
ョンであり、実行時環境は、分散システムに広く獲得さ
れているJavaアプレットを、クライアントが実行可能な
ようにする。これらのJavaアプレットは、システム内の
様々なクラスサーバから利用可能なJavaクラスとして蓄
えられる。ある見方では、アプレット実行コードは、Ja
vaクラスである。また、分散オブジェクトシステムは、
クライアントがアプレットサーバを特定のクラスに割り
当てるために使われる、ネーミングサーバを持ってい
る。
がアプレット実行コードを実行できるようにするため
に、アプレットソフトウェアを取り込む。また、クライ
アントは、アプレットソフトウエアががオブジェクト要
求ブローカに呼出をおこなうことを可能にするため、特
殊なORBバインディング(binding)されたソフトウエア
をロードする。さらに、クライアントが、アプレットの
一部をロードし、コードを解決することを可能にするた
めに、ネットワーククラスローダをもつ。アプレットソ
フトウエアは、Javaプログラミング言語の一つのバージ
ョンであり、実行時環境は、分散システムに広く獲得さ
れているJavaアプレットを、クライアントが実行可能な
ようにする。これらのJavaアプレットは、システム内の
様々なクラスサーバから利用可能なJavaクラスとして蓄
えられる。ある見方では、アプレット実行コードは、Ja
vaクラスである。また、分散オブジェクトシステムは、
クライアントがアプレットサーバを特定のクラスに割り
当てるために使われる、ネーミングサーバを持ってい
る。
【0012】ある具体化されたシステムでは、アプレッ
トサーバは、アプレット実行コードの一部がローカルな
ファイル集合内に存在するかを決定することにより、要
求されたアプレット実行コードを検索する。もし、一部
が存在すれば、アプレットサーバは、コード引き出しの
ためにファイルを読み込み、そして、要求してきたクラ
イアントに返す。もし、存在しなければ、そのアプレッ
トサーバは、分散オブジェクト計算システム内で、要求
されている一部に関連した別のアプレットサーバがない
か、ネーミングサーバに問い合わせる。そして、別のア
プレットサーバが見つかったときは、要求されている実
行コードが見つかるまで、先の処理が再帰的に繰り返さ
れる。
トサーバは、アプレット実行コードの一部がローカルな
ファイル集合内に存在するかを決定することにより、要
求されたアプレット実行コードを検索する。もし、一部
が存在すれば、アプレットサーバは、コード引き出しの
ためにファイルを読み込み、そして、要求してきたクラ
イアントに返す。もし、存在しなければ、そのアプレッ
トサーバは、分散オブジェクト計算システム内で、要求
されている一部に関連した別のアプレットサーバがない
か、ネーミングサーバに問い合わせる。そして、別のア
プレットサーバが見つかったときは、要求されている実
行コードが見つかるまで、先の処理が再帰的に繰り返さ
れる。
【0013】また、別の見方もできる。一度アプレット
実行コードの部分(portion)がクライアントに返送さ
れると、そのクライアントは、その実行コードの一部
が、実行コードの別の部分の参照で解決さえていないも
のを含んでいないか調べる。これらの未解決な参照は、
未定義か、あるいはロードされていない実行コードによ
って使われるクラスの形式をとる。もし未解決の参照が
あれば、クライアントは、最初に見つかったアプレット
サーバへ、送れた未解決の参照に対応した付加的な実行
コードを要求する。そして、このアプレットサーバは、
コード自身を返すか、ネーミングサーバにそのコードを
アクセスできる別のアプレットサーバを問い合わせる。
このようにして、必要なすべてのアプレット実行コード
が、実行のために、クライアントにロードされる。
実行コードの部分(portion)がクライアントに返送さ
れると、そのクライアントは、その実行コードの一部
が、実行コードの別の部分の参照で解決さえていないも
のを含んでいないか調べる。これらの未解決な参照は、
未定義か、あるいはロードされていない実行コードによ
って使われるクラスの形式をとる。もし未解決の参照が
あれば、クライアントは、最初に見つかったアプレット
サーバへ、送れた未解決の参照に対応した付加的な実行
コードを要求する。そして、このアプレットサーバは、
コード自身を返すか、ネーミングサーバにそのコードを
アクセスできる別のアプレットサーバを問い合わせる。
このようにして、必要なすべてのアプレット実行コード
が、実行のために、クライアントにロードされる。
【0014】
【発明の実施の形態】本発明は、分散オブジェクトシス
テム用に設計されており、図表で説明されるいくつかの
実装例を参照しながら記述される。本発明は、CORBA
か、あるいは、他の適切な仕様で定義されたどのような
分散オブジェクトシステムにおいても、実装される。し
かし、説明のために、オブジェクト管理グループ(OMG,
Revision 2.0, July 1995)のCORBA仕様におけるオブジ
ェクト要求ブローカが利用できる環境下を想定する。図
1は、本発明の実装に適した典型的な分散オブジェクト
システムの全体のアーキテクチャを示している。図7
は、3つのレベルの発送メカニズムをもつアーキテクチ
ャにおけるクライアントからサーバへの要求のパスであ
る。図8は、クライアントがサーバオブジェクトを参照
するのに用いる、オブジェクト参照データ構造である。
テム用に設計されており、図表で説明されるいくつかの
実装例を参照しながら記述される。本発明は、CORBA
か、あるいは、他の適切な仕様で定義されたどのような
分散オブジェクトシステムにおいても、実装される。し
かし、説明のために、オブジェクト管理グループ(OMG,
Revision 2.0, July 1995)のCORBA仕様におけるオブジ
ェクト要求ブローカが利用できる環境下を想定する。図
1は、本発明の実装に適した典型的な分散オブジェクト
システムの全体のアーキテクチャを示している。図7
は、3つのレベルの発送メカニズムをもつアーキテクチ
ャにおけるクライアントからサーバへの要求のパスであ
る。図8は、クライアントがサーバオブジェクトを参照
するのに用いる、オブジェクト参照データ構造である。
【0015】分散オブジェクトシステム 10 は、典型的
には、図1に示されるようなオブジェクト要求ブローカ
(Object Request Broker:ORB)11 を持っている。ORB1
1 は、クライアントがサーバを呼出し、サーバがクライ
アントに応答するために必要な配置、発送メカニズム、
設備をすべて備えている。これらは、後で、図7を使っ
て説明される。クライアントとサーバは、同じプロセ
ス、同じマシンの別プロセス、または、全く別のマシン
のいずれに配置されてもよい。ここでの議論のために、
クライアント20は、分散オブジェクトにおけるオペレー
ションを呼び出す任意のコードとし、分散オブジェク
ト、またはプロセスの形式をとってもとらなくともよ
い。分散オブジェクトは、様々な表現をもつ。例えば、
分散オブジェクトは、アプリケーション開発者により供
給されたC++オブジェクトでもよい。また、分散オブジ
ェクトの実装は、視覚的アプリケーションビルダ15で開
発されてもよい。この視覚的アプリケーションビルダ
は、開発者が視覚的に既存のオブジェクトをカタログか
ら選択することを可能にし、さらに、あるオブジェクト
の実装を新たにつくるために、オブジェクトにより供給
さえるサービスを他のオブジェクトによるサービスにグ
ラフィカルに接続することも可能にする。
には、図1に示されるようなオブジェクト要求ブローカ
(Object Request Broker:ORB)11 を持っている。ORB1
1 は、クライアントがサーバを呼出し、サーバがクライ
アントに応答するために必要な配置、発送メカニズム、
設備をすべて備えている。これらは、後で、図7を使っ
て説明される。クライアントとサーバは、同じプロセ
ス、同じマシンの別プロセス、または、全く別のマシン
のいずれに配置されてもよい。ここでの議論のために、
クライアント20は、分散オブジェクトにおけるオペレー
ションを呼び出す任意のコードとし、分散オブジェク
ト、またはプロセスの形式をとってもとらなくともよ
い。分散オブジェクトは、様々な表現をもつ。例えば、
分散オブジェクトは、アプリケーション開発者により供
給されたC++オブジェクトでもよい。また、分散オブジ
ェクトの実装は、視覚的アプリケーションビルダ15で開
発されてもよい。この視覚的アプリケーションビルダ
は、開発者が視覚的に既存のオブジェクトをカタログか
ら選択することを可能にし、さらに、あるオブジェクト
の実装を新たにつくるために、オブジェクトにより供給
さえるサービスを他のオブジェクトによるサービスにグ
ラフィカルに接続することも可能にする。
【0016】オブジェクト開発ファシリティ16は、分散
オブジェクトを生成し。分散オブジェクトコードを包
む、またはカプセル化するために用いられる。オブジェ
クト開発ファシリティ16は、開発者オブジェクトをORB
オブジェクトインプリメンテーション14に変換するため
に使われる。ここでの例では、ORBオブジェクトインプ
リメンテーション14が、ダイアグラムの位置で示されて
いるサーバとして提供される。開発者は、ORBオブジェ
クトのためにインタフェースを定義するインタフェース
定義言語を使い、オブジェクトの挙動を実装する開発者
オブジェクト実装を提供する。そして、ORBオブジェク
トインプリメンテーション14を生成するために、オブジ
ェクト開発ファシリティ16を利用する。実行時には、こ
のOBRオブジェクト(サーバオブジェクト)のインスタ
ンスが生成され、ORBオブジェクトインプリメンテーシ
ョン14を利用する。オブジェクト開発ファシリティは、
クライアントの役目をするオブジェクトを生成するため
にも使われることは重要である。
オブジェクトを生成し。分散オブジェクトコードを包
む、またはカプセル化するために用いられる。オブジェ
クト開発ファシリティ16は、開発者オブジェクトをORB
オブジェクトインプリメンテーション14に変換するため
に使われる。ここでの例では、ORBオブジェクトインプ
リメンテーション14が、ダイアグラムの位置で示されて
いるサーバとして提供される。開発者は、ORBオブジェ
クトのためにインタフェースを定義するインタフェース
定義言語を使い、オブジェクトの挙動を実装する開発者
オブジェクト実装を提供する。そして、ORBオブジェク
トインプリメンテーション14を生成するために、オブジ
ェクト開発ファシリティ16を利用する。実行時には、こ
のOBRオブジェクト(サーバオブジェクト)のインスタ
ンスが生成され、ORBオブジェクトインプリメンテーシ
ョン14を利用する。オブジェクト開発ファシリティは、
クライアントの役目をするオブジェクトを生成するため
にも使われることは重要である。
【0017】クライアント20は、スタブ(stub)21、サ
ブコントラクト(subcontract)層36、フィルタ40、そ
して、トランスポート層38によりサーバと通信する。ス
タブ21 は、サロゲート(surrogate)22, メソッド表
(メソッド・テーブル、methodtable)24、そしてスタブ
関数25を含む。クライアント20は、サーバオブジェクト
として現れるサロゲート22と最初に通信する。また、ク
ライアント20は、サロゲート22、メソッド表24、スタブ
関数(stub function)25の代わりに、動的起動インタ
フェース(dynamic invocation interface:DII)26を
通して、サーバオブジェクトと通信する。動的起動イン
タフェース26は、クライアントが、動的要求を構成する
ことを可能にする。上層を利用するサーバをクライアン
トが呼び出すことによる生成は、図7に示される。
ブコントラクト(subcontract)層36、フィルタ40、そ
して、トランスポート層38によりサーバと通信する。ス
タブ21 は、サロゲート(surrogate)22, メソッド表
(メソッド・テーブル、methodtable)24、そしてスタブ
関数25を含む。クライアント20は、サーバオブジェクト
として現れるサロゲート22と最初に通信する。また、ク
ライアント20は、サロゲート22、メソッド表24、スタブ
関数(stub function)25の代わりに、動的起動インタ
フェース(dynamic invocation interface:DII)26を
通して、サーバオブジェクトと通信する。動的起動イン
タフェース26は、クライアントが、動的要求を構成する
ことを可能にする。上層を利用するサーバをクライアン
トが呼び出すことによる生成は、図7に示される。
【0018】サブコントラクト層36は、特定のサブコン
トラクトによりネーミングられた様々なサービスを実現
するためにサブコントラクトを利用するために、オブジ
ェクトにより要求される機能を提供する。サブコントラ
クトは、個々のオブジェクトにより利用される分散オブ
ジェクトシステムにより提供されるサービスの質を決め
る。例えば、サブコントラクトは、特定のオブジェクト
により使われるセキュリティの特徴を決定する。ある特
定のサブコントラクトは、実行時に、サーバオブジェク
トに動的に関連付けられる。フィルタ40は、もし使用さ
れるなら、圧縮、暗号化、トレース、デバッグなどのオ
ブジェクトから、あるいは、オブジェクトへの通信に適
用できる様々なタスクを行う。トランスポート層38は、
マーシャル(marshal)、アンマーシャル(unmarshal)
を行う。また、クライアントと同じプロセスを共有しな
いサーバントへ、あるいは、サーバントから、情報を物
理的に送る。
トラクトによりネーミングられた様々なサービスを実現
するためにサブコントラクトを利用するために、オブジ
ェクトにより要求される機能を提供する。サブコントラ
クトは、個々のオブジェクトにより利用される分散オブ
ジェクトシステムにより提供されるサービスの質を決め
る。例えば、サブコントラクトは、特定のオブジェクト
により使われるセキュリティの特徴を決定する。ある特
定のサブコントラクトは、実行時に、サーバオブジェク
トに動的に関連付けられる。フィルタ40は、もし使用さ
れるなら、圧縮、暗号化、トレース、デバッグなどのオ
ブジェクトから、あるいは、オブジェクトへの通信に適
用できる様々なタスクを行う。トランスポート層38は、
マーシャル(marshal)、アンマーシャル(unmarshal)
を行う。また、クライアントと同じプロセスを共有しな
いサーバントへ、あるいは、サーバントから、情報を物
理的に送る。
【0019】標準インプリメンテーション・スイート
(implementation suite)28は、オブジェクトキー管理
と同じ方法で、ORBオブジェクト・インプリメンテーシ
ョン14と相互作用のあるサブコントラクトの集合を表現
する。また、サブコントラクトは、複数のインプリメン
テーション組にも属する。さらに、インプリメンテーシ
ョン組は、異なったサブコントラクトを利用する。静的
スケルトン32か、動的スケルトン30のいずれかの形態を
とるスケルトンは、要求を、サーバオブジェクト78(図
7に詳細な説明がある)が必要とする形式に変換する。
よって、スケルトン(skeleton)30と32は、適切なサー
バオブジェクト78を呼び出す。静的スケルトン32は、イ
ンタフェースに特化されたオブジェクトインプリメンテ
ーション14の呼び出しに使われる。一方、動的スケルト
ン30は、インタフェースに特化されたオブジェクトが利
用不可能な場合に使われる。ORBインタフェース34は、O
RBに直接的に到達し、オブジェクトのインタフェースや
アダプタに依存しないインタフェースである。ORBデー
モン46は、クライアントに呼ばれたときにオブジェクト
サーバがアクティブであることを責任をもって確認す
る。
(implementation suite)28は、オブジェクトキー管理
と同じ方法で、ORBオブジェクト・インプリメンテーシ
ョン14と相互作用のあるサブコントラクトの集合を表現
する。また、サブコントラクトは、複数のインプリメン
テーション組にも属する。さらに、インプリメンテーシ
ョン組は、異なったサブコントラクトを利用する。静的
スケルトン32か、動的スケルトン30のいずれかの形態を
とるスケルトンは、要求を、サーバオブジェクト78(図
7に詳細な説明がある)が必要とする形式に変換する。
よって、スケルトン(skeleton)30と32は、適切なサー
バオブジェクト78を呼び出す。静的スケルトン32は、イ
ンタフェースに特化されたオブジェクトインプリメンテ
ーション14の呼び出しに使われる。一方、動的スケルト
ン30は、インタフェースに特化されたオブジェクトが利
用不可能な場合に使われる。ORBインタフェース34は、O
RBに直接的に到達し、オブジェクトのインタフェースや
アダプタに依存しないインタフェースである。ORBデー
モン46は、クライアントに呼ばれたときにオブジェクト
サーバがアクティブであることを責任をもって確認す
る。
【0020】安全プロトコル42は、インターネットORB
間プロトコルを確実にし、安全な方法でトランスポート
層38を通して情報の伝達を補助する安全相互操作プロト
コルである。このことは、完全保護、信頼性を意味す
る。インターネットORB間プロトコルは、典型的には、
異なったマシン上のプロセス間の通信である。しかし、
時には、インターネットORB間プロトコルは、同じマシ
ン上のプロセス間通信でもある。セキュリティサーバ54
は、異なった計算機上のプロセス間でなされるサービス
を確実にするセキュリティ管理サーバである。
間プロトコルを確実にし、安全な方法でトランスポート
層38を通して情報の伝達を補助する安全相互操作プロト
コルである。このことは、完全保護、信頼性を意味す
る。インターネットORB間プロトコルは、典型的には、
異なったマシン上のプロセス間の通信である。しかし、
時には、インターネットORB間プロトコルは、同じマシ
ン上のプロセス間通信でもある。セキュリティサーバ54
は、異なった計算機上のプロセス間でなされるサービス
を確実にするセキュリティ管理サーバである。
【0021】タイプコード/Any モジュール44は、"タ
イプコード"と"Any"オブジェクトを実装する。タイプコ
ードは、インタフェース定義言語(IDL)のデータタイ
プを記述する。これは、クライアントとサーバ間の通信
の型の記述を行う。IDLデータ型の例は、Anyオブジェク
トによるカプセル化である。Anyオブジェクトはカプセ
ル化されたデータのタイプコード、そしてデータの一般
的なコード化を参照する。
イプコード"と"Any"オブジェクトを実装する。タイプコ
ードは、インタフェース定義言語(IDL)のデータタイ
プを記述する。これは、クライアントとサーバ間の通信
の型の記述を行う。IDLデータ型の例は、Anyオブジェク
トによるカプセル化である。Anyオブジェクトはカプセ
ル化されたデータのタイプコード、そしてデータの一般
的なコード化を参照する。
【0022】インプリメンテーション・レポジトリ(re
pository)50は、オブジェクトサーバに関連した情報を
格納するために使われる。特に、サーバプロセスを開始
するために必要な情報を格納する。例えば、インプリメ
ンテーションレポジトリ50は、サーバプログラムのロー
ケーションや、そのプログラムの引数、そして、プログ
ラムに渡される環境変数などを格納する。
pository)50は、オブジェクトサーバに関連した情報を
格納するために使われる。特に、サーバプロセスを開始
するために必要な情報を格納する。例えば、インプリメ
ンテーションレポジトリ50は、サーバプログラムのロー
ケーションや、そのプログラムの引数、そして、プログ
ラムに渡される環境変数などを格納する。
【0023】単純パーシスタンス(simple persistenc
e)56は、インタフェース定義言語(IDL)により定義さ
れた型を利用する。そして、IDLコンパイラを通して、I
DL型を付加的コードの一部と走らせることにより得られ
る出力を使って、IDLで定義された型がディスクに読み
書きできるようにする。ネーミングサーバ52は、ORBオ
ブジェクトに名前をつけるために使われる。クライアン
トは、ネーミングサーバ52を使って、名前により、欲し
いオブジェクトを見つける。ネーミングサーバ52はオブ
ジェクト参照を返し、それは、オブジェクトに要求を送
るために使われる。インターフェースレポジトリ48(IF
R)は、分散オブジェクトシステム内の全てのオブジェ
クトの全てのインターフェースを管理している。
e)56は、インタフェース定義言語(IDL)により定義さ
れた型を利用する。そして、IDLコンパイラを通して、I
DL型を付加的コードの一部と走らせることにより得られ
る出力を使って、IDLで定義された型がディスクに読み
書きできるようにする。ネーミングサーバ52は、ORBオ
ブジェクトに名前をつけるために使われる。クライアン
トは、ネーミングサーバ52を使って、名前により、欲し
いオブジェクトを見つける。ネーミングサーバ52はオブ
ジェクト参照を返し、それは、オブジェクトに要求を送
るために使われる。インターフェースレポジトリ48(IF
R)は、分散オブジェクトシステム内の全てのオブジェ
クトの全てのインターフェースを管理している。
【0024】メソッド表「m−表」ディスパッチを使っ
ているクライアントによる要求は、図7にあるように、
アーキテクチャの様々な層を通って、サーバントに渡さ
れる。その要求は、クライアントにより初期化され、適
切な形式をとる。要求の形式は、クライアントを作るの
に使われたプログラミング言語の性質に大きく依存して
いる。例えば、もし30クライアントがC++で書かれてい
るとすると、その要求は、C++のメソッド呼出62の形式
をとっている。この呼出は、代理の(surrogate)形式
をとるオブジェクト参照のためである。その代理は、オ
ブジェクトのインタフェースに従うメソッドを持ってい
る。
ているクライアントによる要求は、図7にあるように、
アーキテクチャの様々な層を通って、サーバントに渡さ
れる。その要求は、クライアントにより初期化され、適
切な形式をとる。要求の形式は、クライアントを作るの
に使われたプログラミング言語の性質に大きく依存して
いる。例えば、もし30クライアントがC++で書かれてい
るとすると、その要求は、C++のメソッド呼出62の形式
をとっている。この呼出は、代理の(surrogate)形式
をとるオブジェクト参照のためである。その代理は、オ
ブジェクトのインタフェースに従うメソッドを持ってい
る。
【0025】当業者が認識しているように、分散オブジ
ェクトシステム内の異なったロケーションで使われるオ
ブジェクト参照は、見かけ上は大きく変化する。これま
での記述では、クライアント側のオブジェクト参照は、
(ファットポインタ(fat pointer))2つのポインタ
である。ファットポインタは、2つのポインタをもって
いる。最初のポインタは、参照されるオブジェクトに関
連したクライアント表現”client rep”を指す。そし
て、2つめのポインタは、参照されたオブジェクトに関
連したメソッド表のディスパッチ24を指す。クライアン
ト表現は、CORBAで定義される仮の(pseude)オブジェ
クト参照オペレーションと同様に、起動をサポートする
メソッドをもつオブジェクトである。これらのオペレー
ションは、「デュプリケイト(duplicate)」メソッ
ド、「解放(release)」メソッド、「ナロー(narro
w)」メソッド、「ハッシュ(hash)」メソッド、そし
て、「is equivalent」メソッドをもつ。
ェクトシステム内の異なったロケーションで使われるオ
ブジェクト参照は、見かけ上は大きく変化する。これま
での記述では、クライアント側のオブジェクト参照は、
(ファットポインタ(fat pointer))2つのポインタ
である。ファットポインタは、2つのポインタをもって
いる。最初のポインタは、参照されるオブジェクトに関
連したクライアント表現”client rep”を指す。そし
て、2つめのポインタは、参照されたオブジェクトに関
連したメソッド表のディスパッチ24を指す。クライアン
ト表現は、CORBAで定義される仮の(pseude)オブジェ
クト参照オペレーションと同様に、起動をサポートする
メソッドをもつオブジェクトである。これらのオペレー
ションは、「デュプリケイト(duplicate)」メソッ
ド、「解放(release)」メソッド、「ナロー(narro
w)」メソッド、「ハッシュ(hash)」メソッド、そし
て、「is equivalent」メソッドをもつ。
【0026】クライアントが、呼出を初期化した後は、
その呼出は、メソッド表ディスパッチメカニズム24を使
って、処理される。このメソッド表ディスパッチメカニ
ズムは、起動されるメソッドと関連した、スタブ関数25
を指すポインタのリストを含む。スタブ関数25は、クラ
イアントプロセスのネイティブ言語における手続き呼出
や関数を受け取る。そして、最終的に対応するサーバン
トオブジェクトを呼び出すために、サブコントラクト層
36からネイティブ呼び出しを使う。ネイティブ言語は、
C++のような適切な言語である。
その呼出は、メソッド表ディスパッチメカニズム24を使
って、処理される。このメソッド表ディスパッチメカニ
ズムは、起動されるメソッドと関連した、スタブ関数25
を指すポインタのリストを含む。スタブ関数25は、クラ
イアントプロセスのネイティブ言語における手続き呼出
や関数を受け取る。そして、最終的に対応するサーバン
トオブジェクトを呼び出すために、サブコントラクト層
36からネイティブ呼び出しを使う。ネイティブ言語は、
C++のような適切な言語である。
【0027】メソッド表ディスパッチ24は、メソッド呼
び出しを処理するために、スタブ関数25から適切な一つ
を決定し、メソッド呼び出しと適切なスタブ関数をペア
にする。メソッド呼び出しをするクライアントがサーバ
ントオブジェクトと同じプロセスにあるとき、ローカル
スタブ関数が呼び出される。ローカルスタブ関数は、直
接サーバントオブジェクト78にメソッド呼び出しを送
る。一方、もしサーバントオブジェクトが別のプロセス
にあるとき(例えば、リモートプロセス)、リモートス
タブ関数が呼び出される。そのリモートスタブ関数は、
クライアント表現を起動し、そのクライアント表現が、
サーバントオブジェクト78に起動を配送する。
び出しを処理するために、スタブ関数25から適切な一つ
を決定し、メソッド呼び出しと適切なスタブ関数をペア
にする。メソッド呼び出しをするクライアントがサーバ
ントオブジェクトと同じプロセスにあるとき、ローカル
スタブ関数が呼び出される。ローカルスタブ関数は、直
接サーバントオブジェクト78にメソッド呼び出しを送
る。一方、もしサーバントオブジェクトが別のプロセス
にあるとき(例えば、リモートプロセス)、リモートス
タブ関数が呼び出される。そのリモートスタブ関数は、
クライアント表現を起動し、そのクライアント表現が、
サーバントオブジェクト78に起動を配送する。
【0028】サブコントラクト層36で実装されているサ
ブコントラクトは、分散オブジェクトシステムにおいて
は重要である、オブジェクト起動と引数パッシングの基
本的メカニズムを制御する論理モジュールである。サブ
コントラクト層36で実装されるサブコントラクトは、オ
ブジェクトにより利用されるサービスの質を決定する。
サブコントラクトは、典型的にはオブジェクト参照にお
いて実装されるサブコントラクトアイデンディファイア
により、唯一に同定される。サービスの質とは、サービ
スの属性の集合である。選択できるサービス属性は、サ
ーバー活性化、セキュリティ、トランザクション、フィ
ルタ、クリーンシャットダウンなどである。確かな質の
サービスが利用できるように、サブコントラクトが設定
される。事前に決定されるサービスの質により、個々の
サービス属性の処理に関連するオーバヘッドが軽減され
る。現実的には、様々なサービス属性により共通に使わ
れるものだけが、サブコントラクトによりサポートされ
る。しかし、サブコントラクトは、既与の分散オブジェ
クトシステムに特化した要求を満たすように設計され
る。
ブコントラクトは、分散オブジェクトシステムにおいて
は重要である、オブジェクト起動と引数パッシングの基
本的メカニズムを制御する論理モジュールである。サブ
コントラクト層36で実装されるサブコントラクトは、オ
ブジェクトにより利用されるサービスの質を決定する。
サブコントラクトは、典型的にはオブジェクト参照にお
いて実装されるサブコントラクトアイデンディファイア
により、唯一に同定される。サービスの質とは、サービ
スの属性の集合である。選択できるサービス属性は、サ
ーバー活性化、セキュリティ、トランザクション、フィ
ルタ、クリーンシャットダウンなどである。確かな質の
サービスが利用できるように、サブコントラクトが設定
される。事前に決定されるサービスの質により、個々の
サービス属性の処理に関連するオーバヘッドが軽減され
る。現実的には、様々なサービス属性により共通に使わ
れるものだけが、サブコントラクトによりサポートされ
る。しかし、サブコントラクトは、既与の分散オブジェ
クトシステムに特化した要求を満たすように設計され
る。
【0029】サブコントラクト層36における適切なサブ
コントラクトの同定は、そのサブコントラクトにユニー
クである望ましい関数の同定と考えられる。例えば、マ
ーシャル関数やアンマーシャル関数は、それぞれのサブ
コントラクトに定義される。サブコントラクトマーシャ
ル関数は、他のアドレス空間やドメインに送信されるよ
うに、オブジェクト参照を整理するために、スタブによ
り利用される。オブジェクト参照は、典型的には、トラ
ンスポート層38のトランスポートメカニズムにより処理
される。
コントラクトの同定は、そのサブコントラクトにユニー
クである望ましい関数の同定と考えられる。例えば、マ
ーシャル関数やアンマーシャル関数は、それぞれのサブ
コントラクトに定義される。サブコントラクトマーシャ
ル関数は、他のアドレス空間やドメインに送信されるよ
うに、オブジェクト参照を整理するために、スタブによ
り利用される。オブジェクト参照は、典型的には、トラ
ンスポート層38のトランスポートメカニズムにより処理
される。
【0030】トランスポート層38のT1やT2のようなトラ
ンスポート機構は、サーバントオブジェクトから、また
は、それへの情報の物理的トランスポートに使われる。
オブジェクト参照や要求などの情報は、既与のドメイン
にとって適切なプロトコルに変換される。例えば、その
プロトコルは、Ethernetプロトコルや、一般のORB間プ
ロトコルである。まれに、サーバで実装されるインスト
ラクションを送信するために電子メイルを必要とする。
情報が整理された後、トランスポート機構は、分散オブ
ジェクトシステムのクライアント側で使われるハードウ
エア70のすべての部分であるOS、デバイスドライバ、ネ
ットワークなどの様々な組合せをとおして情報を伝達す
る。
ンスポート機構は、サーバントオブジェクトから、また
は、それへの情報の物理的トランスポートに使われる。
オブジェクト参照や要求などの情報は、既与のドメイン
にとって適切なプロトコルに変換される。例えば、その
プロトコルは、Ethernetプロトコルや、一般のORB間プ
ロトコルである。まれに、サーバで実装されるインスト
ラクションを送信するために電子メイルを必要とする。
情報が整理された後、トランスポート機構は、分散オブ
ジェクトシステムのクライアント側で使われるハードウ
エア70のすべての部分であるOS、デバイスドライバ、ネ
ットワークなどの様々な組合せをとおして情報を伝達す
る。
【0031】あるトランスポート機構が既与のドメイン
に対し適切なプロトコルに情報を変換することを要求す
る一方で、そのような要求をしないトランスポート機構
もある。情報の発送元以外のドメインのプロトコルへの
情報変換の必要のないトランスポート機構は、"ドア"と
呼ばれる。ドアは、同じホスト上の異なる2つのプロセ
ス間のゲートウエイである。ドアを使うと、トランスポ
ート層38における標準的な実装に情報を変換する必要が
なくなる。情報は同じホストに残っており、ドメインの
変換の必要がないため、別のマシンで使われるプロトコ
ルへ情報をエンコードする必要がないのである。よっ
て、情報は、単純に平坦にされるか、別のマシンにより
使われるためにエンコードされることのないストリーム
へと整理される。そして、ホスト上の2つのプロセス間
で伝達される。
に対し適切なプロトコルに情報を変換することを要求す
る一方で、そのような要求をしないトランスポート機構
もある。情報の発送元以外のドメインのプロトコルへの
情報変換の必要のないトランスポート機構は、"ドア"と
呼ばれる。ドアは、同じホスト上の異なる2つのプロセ
ス間のゲートウエイである。ドアを使うと、トランスポ
ート層38における標準的な実装に情報を変換する必要が
なくなる。情報は同じホストに残っており、ドメインの
変換の必要がないため、別のマシンで使われるプロトコ
ルへ情報をエンコードする必要がないのである。よっ
て、情報は、単純に平坦にされるか、別のマシンにより
使われるためにエンコードされることのないストリーム
へと整理される。そして、ホスト上の2つのプロセス間
で伝達される。
【0032】一度、情報が、クライアント側のハードウ
エア70を通して伝達されると、その情報は、分散オブジ
ェクトシステムのサーバ側のハードウエア70へと伝達さ
れる。また、いったん情報がハードウエア70を通るルー
トをとると、トランスポート層38の一部である終点にお
いて情報を受け取るために、T1やT2のようなトランスポ
ート機構を、分散オブジェクトシステムのサーバ側が起
動する。終点が、トランスポート層38により生成されて
いない場合、トランスポート層38は、終点に必要な機能
をサブコントラクト層36に生成してもらうことにより、
提供する。例えば、終点は、一般にサブコントラクト層
36で作られるが、一方終点の集団(ネットワークやTCP/
IPの終点)は、トランスポート層38で生成される。終点
が、サブコントラクト層36かトランスポート層38のいず
れで作られようが、終点はトランスポート層38に置かれ
る。終点は、別のドメインからの情報を受け取るポート
である。トランスポート層38で終点が別のドメインから
の情報受け取った後は、その終点は、その情報をトラン
スポート層38からサブコントラクト層36に発送する。次
に、サブコントラクト層36は、それをスケルトンかサー
バントに発送する。
エア70を通して伝達されると、その情報は、分散オブジ
ェクトシステムのサーバ側のハードウエア70へと伝達さ
れる。また、いったん情報がハードウエア70を通るルー
トをとると、トランスポート層38の一部である終点にお
いて情報を受け取るために、T1やT2のようなトランスポ
ート機構を、分散オブジェクトシステムのサーバ側が起
動する。終点が、トランスポート層38により生成されて
いない場合、トランスポート層38は、終点に必要な機能
をサブコントラクト層36に生成してもらうことにより、
提供する。例えば、終点は、一般にサブコントラクト層
36で作られるが、一方終点の集団(ネットワークやTCP/
IPの終点)は、トランスポート層38で生成される。終点
が、サブコントラクト層36かトランスポート層38のいず
れで作られようが、終点はトランスポート層38に置かれ
る。終点は、別のドメインからの情報を受け取るポート
である。トランスポート層38で終点が別のドメインから
の情報受け取った後は、その終点は、その情報をトラン
スポート層38からサブコントラクト層36に発送する。次
に、サブコントラクト層36は、それをスケルトンかサー
バントに発送する。
【0033】サブコントラクト層36は、受け取った情報
のいくつかを先導しない機能を提供する。つまり、サブ
コントラクト層36は、要求のうちのいくつかを先導しな
い。その要求は、自分をサーバントオブジェクト78によ
り要求される実装に特化した形式に変換するところであ
るスケルトン31に発送される。スケルトン31は、前述の
ように、静的スケルトン32か、動的スケルトン30のいず
れかである。
のいくつかを先導しない機能を提供する。つまり、サブ
コントラクト層36は、要求のうちのいくつかを先導しな
い。その要求は、自分をサーバントオブジェクト78によ
り要求される実装に特化した形式に変換するところであ
るスケルトン31に発送される。スケルトン31は、前述の
ように、静的スケルトン32か、動的スケルトン30のいず
れかである。
【0034】前述のように、一般にリモート要求は、ク
ライアント側とサーバ側を通る。メソッド呼び出し62が
受け取られる。そして、メソッド表ディスパッチ層24
が、トランスポート層38で、要求を整理し、別のドメイ
ンへの発送を準備するトランスポート機構を選択する前
に、適切なサブコントラクトを同定する。ハードウエア
70と通して、整理された要求が、トランスポート層38の
一部である終点で受理されるサーバ側に発送される。適
切な終点が、ワイヤーを越えて送られてきた情報を受け
取る。そして、情報は、トランスポート層38からサブコ
ントラクト層36へ送られる。そこでは、受け取った情報
を少なくとも部分的にアンマーシャルにする機能が提供
される。次に、サブコントラクト層は、その要求をスケ
ルトン31におくる。そこでは、要求が、サーバントオブ
ジェクト78により要求される特殊な形式に変換される。
このパスは、矢印77で示され、リモートとローカルのい
ずれの要求も扱える。
ライアント側とサーバ側を通る。メソッド呼び出し62が
受け取られる。そして、メソッド表ディスパッチ層24
が、トランスポート層38で、要求を整理し、別のドメイ
ンへの発送を準備するトランスポート機構を選択する前
に、適切なサブコントラクトを同定する。ハードウエア
70と通して、整理された要求が、トランスポート層38の
一部である終点で受理されるサーバ側に発送される。適
切な終点が、ワイヤーを越えて送られてきた情報を受け
取る。そして、情報は、トランスポート層38からサブコ
ントラクト層36へ送られる。そこでは、受け取った情報
を少なくとも部分的にアンマーシャルにする機能が提供
される。次に、サブコントラクト層は、その要求をスケ
ルトン31におくる。そこでは、要求が、サーバントオブ
ジェクト78により要求される特殊な形式に変換される。
このパスは、矢印77で示され、リモートとローカルのい
ずれの要求も扱える。
【0035】しかし、クライアントとサーバはローカル
なプロセスである。つまり、いずれも、同じプロセスに
あり、矢印77で示されるパスは、不必要に複雑である。
もしクライアントとサーバが同じプロセスにあることが
既知ならば、起動パスかサービスの要求が通るパスを短
縮することができる。もしローカルプロセスが、オブジ
ェクト参照が生成されたときに同定されるなら、短縮さ
れたパス(矢印75と76)を使って、同じホストにあるク
ライアントからサーバへの要求を送れる。矢印76のパス
がよく使われ、それは適切なサブコントラクトを同定す
るために、サブコントラクト層36を利用する。しかし、
適切なサブコントラクトが明示的に同定される必要がな
いときは、矢印75のパスが使われる。
なプロセスである。つまり、いずれも、同じプロセスに
あり、矢印77で示されるパスは、不必要に複雑である。
もしクライアントとサーバが同じプロセスにあることが
既知ならば、起動パスかサービスの要求が通るパスを短
縮することができる。もしローカルプロセスが、オブジ
ェクト参照が生成されたときに同定されるなら、短縮さ
れたパス(矢印75と76)を使って、同じホストにあるク
ライアントからサーバへの要求を送れる。矢印76のパス
がよく使われ、それは適切なサブコントラクトを同定す
るために、サブコントラクト層36を利用する。しかし、
適切なサブコントラクトが明示的に同定される必要がな
いときは、矢印75のパスが使われる。
【0036】図8は、オブジェクト参照の具体例を記述
するために使える。この技術に慣れるにしたがって、オ
ブジェクト参照は、それが与えられた時間の間は成り立
っているプロセスのロケーションに依存して、様々な形
式をとる。しかし、低レベルのオーバヘッドを伴う実装
を利用する典型的なオブジェクト参照は、図8で説明さ
れる。そこに表される実装では、オブジェクト参照150
が、ホスト・アイデンティファイア152、ポート・デジ
グネーション154、オブジェクト・キー156 を含んでい
る。オブジェクトキー156は、サブコントラクト・アイ
デンティファイア158、実装アイデンティファイア162、
そして、ユーザ・キー164をもつ。ホスト・アイデンテ
ィファイア152は、ネットワーク内の特定の計算機を指
示し、ポートデジグネーション154は、通信に使われる
ために選択された計算機のポートを同定する。オブジェ
クトキー156は、ホストマシンで望ましいサーバントオ
ブジェクトを配置するために使われる情報のさらなる同
定を行う。
するために使える。この技術に慣れるにしたがって、オ
ブジェクト参照は、それが与えられた時間の間は成り立
っているプロセスのロケーションに依存して、様々な形
式をとる。しかし、低レベルのオーバヘッドを伴う実装
を利用する典型的なオブジェクト参照は、図8で説明さ
れる。そこに表される実装では、オブジェクト参照150
が、ホスト・アイデンティファイア152、ポート・デジ
グネーション154、オブジェクト・キー156 を含んでい
る。オブジェクトキー156は、サブコントラクト・アイ
デンティファイア158、実装アイデンティファイア162、
そして、ユーザ・キー164をもつ。ホスト・アイデンテ
ィファイア152は、ネットワーク内の特定の計算機を指
示し、ポートデジグネーション154は、通信に使われる
ために選択された計算機のポートを同定する。オブジェ
クトキー156は、ホストマシンで望ましいサーバントオ
ブジェクトを配置するために使われる情報のさらなる同
定を行う。
【0037】サーバ・アイデンティファイア160は、サ
ーバントオブジェクトが属する特定のプロセスかプログ
ラムに名前をつける。一方、ユーザ・キーは、サーバア
イデンティファイア160によりネーミングられたプロセ
ス内に、サーバントを配置するために使われる、ユニー
クな数字や文字列である。サブコントラクト・アイデン
ティファイア158は、特定のサブコントラクトのプロト
コルとサーバントと関連したサービスを扱うのに使われ
る。実装アイデンティファイア162はサーバントオブジ
ェクトと一緒に使われるインタフェースの実装に名前を
つける。
ーバントオブジェクトが属する特定のプロセスかプログ
ラムに名前をつける。一方、ユーザ・キーは、サーバア
イデンティファイア160によりネーミングられたプロセ
ス内に、サーバントを配置するために使われる、ユニー
クな数字や文字列である。サブコントラクト・アイデン
ティファイア158は、特定のサブコントラクトのプロト
コルとサーバントと関連したサービスを扱うのに使われ
る。実装アイデンティファイア162はサーバントオブジ
ェクトと一緒に使われるインタフェースの実装に名前を
つける。
【0038】JAVAベースのアプリケーションの見つけ方
とダウンロード 本発明の実施例では、要求しているクライアントが、特
定のアプレットを走らせるために分散オブジェクトシス
テムで必要となるクラスを獲得するメカニズムが提供さ
れる。ある実施例では、このメカニズムが、オブジェク
ト要求ブローカ(ORB)を用いて、必要なクラスファイ
ルへのアクセスを可能にする一つ以上のクラスサーバと
通信を行う。よって、分散オブジェクトシステムのORB
は、ロケーションに独立した方法で、必要なクラスファ
イルを探すために利用される。ORBを使うことの一つの
利点は、これらのクラスファイルと関連したクラスサー
バが分散オブジェクトシステムのどこに置かれていよう
と、クライアントはそれらを発見できることである。ま
た、このメカニズムにより、クライアントは、クラスフ
ァイルを探すために分散オブジェクトシステムにアクセ
スするポイントを単一にできる。そして、これらのクラ
スファイルが異なった場所にあっても、要求しているク
ライアントへの発送という方法により、引き出される。
クライアントは、ロードすべき基本クラスを知っている
が、その基本クラスが必要とする別のクラスを見つける
ために必要である背景知識を持たない。また、クライア
ントからの要求は、一つの分散オブジェクトシステムの
ORBから、別のシステムのORBへ送られる。
とダウンロード 本発明の実施例では、要求しているクライアントが、特
定のアプレットを走らせるために分散オブジェクトシス
テムで必要となるクラスを獲得するメカニズムが提供さ
れる。ある実施例では、このメカニズムが、オブジェク
ト要求ブローカ(ORB)を用いて、必要なクラスファイ
ルへのアクセスを可能にする一つ以上のクラスサーバと
通信を行う。よって、分散オブジェクトシステムのORB
は、ロケーションに独立した方法で、必要なクラスファ
イルを探すために利用される。ORBを使うことの一つの
利点は、これらのクラスファイルと関連したクラスサー
バが分散オブジェクトシステムのどこに置かれていよう
と、クライアントはそれらを発見できることである。ま
た、このメカニズムにより、クライアントは、クラスフ
ァイルを探すために分散オブジェクトシステムにアクセ
スするポイントを単一にできる。そして、これらのクラ
スファイルが異なった場所にあっても、要求しているク
ライアントへの発送という方法により、引き出される。
クライアントは、ロードすべき基本クラスを知っている
が、その基本クラスが必要とする別のクラスを見つける
ために必要である背景知識を持たない。また、クライア
ントからの要求は、一つの分散オブジェクトシステムの
ORBから、別のシステムのORBへ送られる。
【0039】本発明により、様々な種類のクライアント
が実行コードを見つけて、ダウンロードすることによる
恩恵をうける。例えば、一つの特定のクライアントは、
ORBと通信可能で、JAVAクラスをダウンロードできるJAV
Aソフトウエアを走らせるクライアントである。また、
広くみると、本発明の実施例は、任意のアプレットコー
ドをロード可能である。アプレット実行コードは、クラ
イアントによりダウンロードでき、実行できる任意の実
行コードである。ここでは、"アプレット"とは、実行コ
ードの本体を意味し、実行環境とともに使われるときに
機能を実現するために、有効なコードである。アプレッ
トは、多くの種類の実行コードの型でもある。例えば、
アプレットは、JAVA言語インタプリタを使って実行され
るJAVAクラスのように、リモートインタプリタにより実
行されるクラスを表現したバイトコードの集合である。
これらのバイトコードは、実行前にコンパイルされる
か、インタプリタとコンパイラ組合せで処理される。JA
VAインタプリタは、Webブラウザ内に存在する。そし
て、特に、アプレット実行コードは、JAVAクラスの実装
を表現するコードを参照する。さらに、アプレットは、
Webページでインタラクティブで実行可能なコンテント
を供給するためのHTMLドキュメントのような他のアプリ
ケーションにおいて実施される小さなJAVAプログラムを
意味する。JAVAクラスは、データと、データを操作する
メソッドの集合として定義される。また、データとメソ
ッドは、オブジェクトの状態や挙動を記述する。
が実行コードを見つけて、ダウンロードすることによる
恩恵をうける。例えば、一つの特定のクライアントは、
ORBと通信可能で、JAVAクラスをダウンロードできるJAV
Aソフトウエアを走らせるクライアントである。また、
広くみると、本発明の実施例は、任意のアプレットコー
ドをロード可能である。アプレット実行コードは、クラ
イアントによりダウンロードでき、実行できる任意の実
行コードである。ここでは、"アプレット"とは、実行コ
ードの本体を意味し、実行環境とともに使われるときに
機能を実現するために、有効なコードである。アプレッ
トは、多くの種類の実行コードの型でもある。例えば、
アプレットは、JAVA言語インタプリタを使って実行され
るJAVAクラスのように、リモートインタプリタにより実
行されるクラスを表現したバイトコードの集合である。
これらのバイトコードは、実行前にコンパイルされる
か、インタプリタとコンパイラ組合せで処理される。JA
VAインタプリタは、Webブラウザ内に存在する。そし
て、特に、アプレット実行コードは、JAVAクラスの実装
を表現するコードを参照する。さらに、アプレットは、
Webページでインタラクティブで実行可能なコンテント
を供給するためのHTMLドキュメントのような他のアプリ
ケーションにおいて実施される小さなJAVAプログラムを
意味する。JAVAクラスは、データと、データを操作する
メソッドの集合として定義される。また、データとメソ
ッドは、オブジェクトの状態や挙動を記述する。
【0040】本発明は、多くの異なる状況におおいて、
有用であり利点をもつ。例えば、JAVAクライアントのプ
レゼンテーションを、オブジェクトに質問する場合に、
本発明の実施例は有用である。ある特定のオブジェクト
のプレゼンテーションは、大きいウインドウ内の小さい
ウインドウにおける実行プログラムを走らせるために使
われる。オブジェクトは、クライアントに自身のプレゼ
ンテーションを与える能力がある。その能力は、オブジ
ェクトのフロントエンドやインタフェースの実装であ
る。この例では、オブジェクトのプレゼンテーション
は、ロケーション独立なオブジェクトとして表現される
アプレットである。よって、本発明の実施例として、JA
VAクライアントは、それがどこにあろうとも、ロケーシ
ョン独立なオブジェクトを見つけるために、ORBを使う
ことができる。一旦見つかると、アプレットは、本発明
の実施例を使って、クライアントにダウンロードされ、
クライアントにおいて実行される。本発明は、以下の図
が示しているような、様々な状況に適用できる。図2と
図3は、分散オブジェクトシステム内での使用のための
本発明の実施例を示す。図4 と図5は、本発明が、そ
の実施例に従っていかに実行されるかのフローチャート
である。
有用であり利点をもつ。例えば、JAVAクライアントのプ
レゼンテーションを、オブジェクトに質問する場合に、
本発明の実施例は有用である。ある特定のオブジェクト
のプレゼンテーションは、大きいウインドウ内の小さい
ウインドウにおける実行プログラムを走らせるために使
われる。オブジェクトは、クライアントに自身のプレゼ
ンテーションを与える能力がある。その能力は、オブジ
ェクトのフロントエンドやインタフェースの実装であ
る。この例では、オブジェクトのプレゼンテーション
は、ロケーション独立なオブジェクトとして表現される
アプレットである。よって、本発明の実施例として、JA
VAクライアントは、それがどこにあろうとも、ロケーシ
ョン独立なオブジェクトを見つけるために、ORBを使う
ことができる。一旦見つかると、アプレットは、本発明
の実施例を使って、クライアントにダウンロードされ、
クライアントにおいて実行される。本発明は、以下の図
が示しているような、様々な状況に適用できる。図2と
図3は、分散オブジェクトシステム内での使用のための
本発明の実施例を示す。図4 と図5は、本発明が、そ
の実施例に従っていかに実行されるかのフローチャート
である。
【0041】図2は、本発明の実施例において、どのよ
うにJAVAクライアント202が、分散オブジェクトシステ
ム200上でJAVAクラスファイル209と211を得るために、
通信メカニズム206を使って通信をするかを図的に説明
している。JAVAクライアント202は、JAVAインタプリタ
をもっているWebブラウザか、アプレットをダウンロー
ドしようとしているJAVAを実行可能なクライアントであ
る。JAVAクライアントが、クラスファイルを見つけてダ
ウンロードすることを可能にしている通信メカニズム
は、様々な方法で実装されている。例えば、この通信メ
カニズムは、分散オブジェクトシステムのオブジェクト
要求ブローカとして実装される。特に、このオブジェク
ト要求ブローカ、または、ORBは、図1、図7、図8の
記述のように実装される。クラスサーバAとBは、分散オ
ブジェクトシステム内のオブジェクトであり、IDLによ
り実装される。言い換えると、クラスサーバは、IDLで
定義されていて、その定義による様々なオペレーション
や属性をもつ。例えば、クラスサーバAは、関連ファイ
ル集合209をもち、クラスサーバBは、関連ファイル集合
211をもつ。よって、JAVAクラスは、分散オブジェクト
システム内のどのマシンにあってもよい。また、後述す
るように関連クラスサーバにより、JAVAクライアントが
アクセス可能である。
うにJAVAクライアント202が、分散オブジェクトシステ
ム200上でJAVAクラスファイル209と211を得るために、
通信メカニズム206を使って通信をするかを図的に説明
している。JAVAクライアント202は、JAVAインタプリタ
をもっているWebブラウザか、アプレットをダウンロー
ドしようとしているJAVAを実行可能なクライアントであ
る。JAVAクライアントが、クラスファイルを見つけてダ
ウンロードすることを可能にしている通信メカニズム
は、様々な方法で実装されている。例えば、この通信メ
カニズムは、分散オブジェクトシステムのオブジェクト
要求ブローカとして実装される。特に、このオブジェク
ト要求ブローカ、または、ORBは、図1、図7、図8の
記述のように実装される。クラスサーバAとBは、分散オ
ブジェクトシステム内のオブジェクトであり、IDLによ
り実装される。言い換えると、クラスサーバは、IDLで
定義されていて、その定義による様々なオペレーション
や属性をもつ。例えば、クラスサーバAは、関連ファイ
ル集合209をもち、クラスサーバBは、関連ファイル集合
211をもつ。よって、JAVAクラスは、分散オブジェクト
システム内のどのマシンにあってもよい。また、後述す
るように関連クラスサーバにより、JAVAクライアントが
アクセス可能である。
【0042】また、ネーミングサーバ(名付けサーバ)
208が、分散オブジェクトシステム200に含まれている。
ネーミングサーバ208は、オブジェクト名を使って、ク
ライアントが、特定のオブジェクトのロケーションを、
ネーミングサーバを参照することにより決定するできる
ようにする。このように、オブジェクトは名前により他
のオブジェクトを参照してもよい。ネーミングサービス
は、様々な方法で実装される。例えば、OMG CORBA 基準
のもとで定義された分散オブジェクトシステムのオブジ
ェクトサービス層の一つのモジュールでもよい。
208が、分散オブジェクトシステム200に含まれている。
ネーミングサーバ208は、オブジェクト名を使って、ク
ライアントが、特定のオブジェクトのロケーションを、
ネーミングサーバを参照することにより決定するできる
ようにする。このように、オブジェクトは名前により他
のオブジェクトを参照してもよい。ネーミングサービス
は、様々な方法で実装される。例えば、OMG CORBA 基準
のもとで定義された分散オブジェクトシステムのオブジ
ェクトサービス層の一つのモジュールでもよい。
【0043】ある実施例では、JAVAクライアントがある
アプレットためにクラスを獲得するために使われるプロ
セスが、丸で囲った数字の参照により起動する。矢印
(1)は、どのようにJAVAクライアント202が、ネーミング
サーバ208とORB 206を使って、クライアントがロードし
たいクラス名にアクセスする特定のクラスサーバAを決
定するかを示している。このクラス名が、クラスサーバ
Aに関連したファイル集合209に含まれていないなら、矢
印(2)は、クラスサーバAが、どのようにファイル集合20
9からそのクラス名を含んだファイルを取り出すかを示
している。しかし、もしこのクラス名が、ファイル集合
209にない場合は、矢印(3)は、いかにクラスサーバAが
ネーミングサーバを使って、欲しいクラス名をアクセス
するクラスサーバBを決定するかを図的に示している。
矢印(4)は、クラスサーバBが、関連ファイル集合211を
アクセスして、クラス名に対応する実行プログラムコー
ドを引き出す様子を表している。矢印(5)は、JAVAクラ
イアントが要求していたクラス名に対応するクラスコー
ドが、最終的にORB206を通って、JAVAクライアント202
に返される様子を示している。矢印(1)、(3)および(5)
で示される通信は、マシンに独立であることが重要であ
る。つまり、ネーミングサーバが新しいロケーションや
名前を表示するように更新されている間は、特定のクラ
ス名に関連したコードは、新しいマシンに移動してもよ
いし、新しい名前を付けてもよい。このようにして、本
発明の実施例は、要求しているクライアントへの透明性
を保ちつつ、アプレットに関連したクラスが分散オブジ
ェクトシステムのどこに位置していてもよいような環境
を提供できる。
アプレットためにクラスを獲得するために使われるプロ
セスが、丸で囲った数字の参照により起動する。矢印
(1)は、どのようにJAVAクライアント202が、ネーミング
サーバ208とORB 206を使って、クライアントがロードし
たいクラス名にアクセスする特定のクラスサーバAを決
定するかを示している。このクラス名が、クラスサーバ
Aに関連したファイル集合209に含まれていないなら、矢
印(2)は、クラスサーバAが、どのようにファイル集合20
9からそのクラス名を含んだファイルを取り出すかを示
している。しかし、もしこのクラス名が、ファイル集合
209にない場合は、矢印(3)は、いかにクラスサーバAが
ネーミングサーバを使って、欲しいクラス名をアクセス
するクラスサーバBを決定するかを図的に示している。
矢印(4)は、クラスサーバBが、関連ファイル集合211を
アクセスして、クラス名に対応する実行プログラムコー
ドを引き出す様子を表している。矢印(5)は、JAVAクラ
イアントが要求していたクラス名に対応するクラスコー
ドが、最終的にORB206を通って、JAVAクライアント202
に返される様子を示している。矢印(1)、(3)および(5)
で示される通信は、マシンに独立であることが重要であ
る。つまり、ネーミングサーバが新しいロケーションや
名前を表示するように更新されている間は、特定のクラ
ス名に関連したコードは、新しいマシンに移動してもよ
いし、新しい名前を付けてもよい。このようにして、本
発明の実施例は、要求しているクライアントへの透明性
を保ちつつ、アプレットに関連したクラスが分散オブジ
ェクトシステムのどこに位置していてもよいような環境
を提供できる。
【0044】図3は、JAVAクライアント202と、それがO
RBと通信し、JAVAクラスをダウンロードすることを可能
にする実装の詳細である。JAVAクライアント202は、JAV
Aインタプリタ、または、JAVA実行可能なクライアント
を使えるWebブラウザである。JAVAインタプリタだけを
もつJAVAクライアント202は、ORB206を通して分散オブ
ジェクトシステムと通信することはできない。よって、
ORBバインディングメカニズム302が、その通信を可能に
するために使われる。ある実施例では、ORBバインディ
ングメカニズム302は、JAVAクライアントが、ローカル
ファイルやURLを通すというような従来的な方法で獲得
するJAVAクラスの集合である。ORBバインディングメカ
ニズム302は、JAVAインタプリタにロードされたモジュ
ールであり、そのインタプリタは、JAVAクライアントが
IDLと通信すること、さらに分散オブジェクト呼び出し
をすることを可能にする。ある意味で、ORBバインディ
ングメカニズム302は、JAVAインタプリタとIDL間のコネ
クタである。JAVAクライアントは、これらのクラスをロ
ードして、機能を拡張することにより、自身をORBまで
引き上げる。ORBバインディングは、様々な方法で実装
される。例えば、ORBバインディング302は、ソフトウエ
アモジュールであってもよい。
RBと通信し、JAVAクラスをダウンロードすることを可能
にする実装の詳細である。JAVAクライアント202は、JAV
Aインタプリタ、または、JAVA実行可能なクライアント
を使えるWebブラウザである。JAVAインタプリタだけを
もつJAVAクライアント202は、ORB206を通して分散オブ
ジェクトシステムと通信することはできない。よって、
ORBバインディングメカニズム302が、その通信を可能に
するために使われる。ある実施例では、ORBバインディ
ングメカニズム302は、JAVAクライアントが、ローカル
ファイルやURLを通すというような従来的な方法で獲得
するJAVAクラスの集合である。ORBバインディングメカ
ニズム302は、JAVAインタプリタにロードされたモジュ
ールであり、そのインタプリタは、JAVAクライアントが
IDLと通信すること、さらに分散オブジェクト呼び出し
をすることを可能にする。ある意味で、ORBバインディ
ングメカニズム302は、JAVAインタプリタとIDL間のコネ
クタである。JAVAクライアントは、これらのクラスをロ
ードして、機能を拡張することにより、自身をORBまで
引き上げる。ORBバインディングは、様々な方法で実装
される。例えば、ORBバインディング302は、ソフトウエ
アモジュールであってもよい。
【0045】一度、JAVAクライアント202がORB206と通
信できる能力をもつと、次には分散オブジェクトシステ
ムから利用可能なクラスをロードし、解決する能力が必
要になる。ネットワーククラスローダ304は、JAVAクラ
イアントが実行時に新しいクラスをロードし、定義でき
るようにするメカニズムである。それは、また、クラス
を解決可能にする機能も持っている。もしダウンロード
されたクラスが、JAVAクライアント内で現在知られてい
ないか、定義されていない他のクラスを利用する場合、
それらの他のクラスは見つけられて、ロード(あるい
は、解決)されなければならない。ネットワーククラス
ローダ304は、これらの必要なクラスを獲得するために
呼び出される。ネットワーククラスローダは、特定のJA
VAコードのクライアント要求に対応したJAVAクライアン
トからの要求を発送する。ネットワーククラスローダ
は、計算機ネットワークで利用可能であり、JAVAクライ
アントがクラスを獲得するような従来的方法で、JAVAク
ライアントによりロードされ、獲得される。例えば、ロ
ーカルファイルシステムや既知のURLへの呼び出しが、
ネットワーククラスローダ304をロードする。ネットワ
ーククラスローダ304は、矢印306で示されるように、JA
VAクライアント202にロードされる。一旦、ORBバインデ
ィング302とネットワーククラスローダ304’がJAVAクラ
イアント202に提示されると、JAVAクライアントは、分
散オブジェクトシステム内で必要なJAVAクラスを獲得す
る準備が完了する。
信できる能力をもつと、次には分散オブジェクトシステ
ムから利用可能なクラスをロードし、解決する能力が必
要になる。ネットワーククラスローダ304は、JAVAクラ
イアントが実行時に新しいクラスをロードし、定義でき
るようにするメカニズムである。それは、また、クラス
を解決可能にする機能も持っている。もしダウンロード
されたクラスが、JAVAクライアント内で現在知られてい
ないか、定義されていない他のクラスを利用する場合、
それらの他のクラスは見つけられて、ロード(あるい
は、解決)されなければならない。ネットワーククラス
ローダ304は、これらの必要なクラスを獲得するために
呼び出される。ネットワーククラスローダは、特定のJA
VAコードのクライアント要求に対応したJAVAクライアン
トからの要求を発送する。ネットワーククラスローダ
は、計算機ネットワークで利用可能であり、JAVAクライ
アントがクラスを獲得するような従来的方法で、JAVAク
ライアントによりロードされ、獲得される。例えば、ロ
ーカルファイルシステムや既知のURLへの呼び出しが、
ネットワーククラスローダ304をロードする。ネットワ
ーククラスローダ304は、矢印306で示されるように、JA
VAクライアント202にロードされる。一旦、ORBバインデ
ィング302とネットワーククラスローダ304’がJAVAクラ
イアント202に提示されると、JAVAクライアントは、分
散オブジェクトシステム内で必要なJAVAクラスを獲得す
る準備が完了する。
【0046】図4は、あるクライアントが必要とするJA
VAクラスを獲得するためのフローチャートである。例え
ば、あるクライアントアプリケーションの場合、分散オ
ブジェクトは、JAVAインタプリタで実行する必要がある
クラスの名前を生成する。図4にある手続きが、そのク
ラスとそれが使う他のクラスをロードするために、分散
オブジェクトシステムをつかう。クライアントアプリケ
ーションにロードすることが望ましい様々なクラスが存
在する。それらのクラスは、特殊なクライアントアプリ
ケーションに依存する。例えば、グラフィカルユーザイ
ンタフェースの一部を実装するクラス(パネルクラスと
呼ばれる)は、本発明の実施例の使用により獲得するの
に適している。パネルクラスは、特にグラフィカルユー
ザインタフェースが、操作に使われる分散オブジェクト
の性質に基づいて変化する場合に適している。
VAクラスを獲得するためのフローチャートである。例え
ば、あるクライアントアプリケーションの場合、分散オ
ブジェクトは、JAVAインタプリタで実行する必要がある
クラスの名前を生成する。図4にある手続きが、そのク
ラスとそれが使う他のクラスをロードするために、分散
オブジェクトシステムをつかう。クライアントアプリケ
ーションにロードすることが望ましい様々なクラスが存
在する。それらのクラスは、特殊なクライアントアプリ
ケーションに依存する。例えば、グラフィカルユーザイ
ンタフェースの一部を実装するクラス(パネルクラスと
呼ばれる)は、本発明の実施例の使用により獲得するの
に適している。パネルクラスは、特にグラフィカルユー
ザインタフェースが、操作に使われる分散オブジェクト
の性質に基づいて変化する場合に適している。
【0047】このようなクラス獲得手続きが開始された
とき、ORBバインディングとネットワーククラスローダ
は、図3にあるように、既にJAVAクライアントにロード
されている。最初のステップ402で、ロードしたいクラ
ス名が受け取られる。次に、分散オブジェクトシステム
のどこかにあって、要求されているクラス名にアクセス
できるクラスサーバオブジェクトが決定されなければな
らない。よって、ステップ403で、ネットワーククラス
ローダ(network class loader:NCL)は、適切なクラ
スサーバをネーミングサーバにたずねる。このステップ
は、図2の矢印(1)で示される。ステップ404で、もし要
求されているクラス名に対応するクラスサーバが見つか
らない場合は、エラーがステップ405で返され、手続き
が終了する。しかし、もしクラスサーバが見つかると、
ステップ406で、ORBがその見つかったクラスサーバとの
接続を確立する。
とき、ORBバインディングとネットワーククラスローダ
は、図3にあるように、既にJAVAクライアントにロード
されている。最初のステップ402で、ロードしたいクラ
ス名が受け取られる。次に、分散オブジェクトシステム
のどこかにあって、要求されているクラス名にアクセス
できるクラスサーバオブジェクトが決定されなければな
らない。よって、ステップ403で、ネットワーククラス
ローダ(network class loader:NCL)は、適切なクラ
スサーバをネーミングサーバにたずねる。このステップ
は、図2の矢印(1)で示される。ステップ404で、もし要
求されているクラス名に対応するクラスサーバが見つか
らない場合は、エラーがステップ405で返され、手続き
が終了する。しかし、もしクラスサーバが見つかると、
ステップ406で、ORBがその見つかったクラスサーバとの
接続を確立する。
【0048】クラスサーバが見つかると、NCLは、ステ
ップ408で、要求されたクラス名に対応したクラスサー
バへ、クラス実行コードを要求する。その特定のクラス
のための実行コードは、様々な方法で表現される。例え
ば、実行コードは、ファイルに保存されているバイト行
列の形式かもしれない。ステップ408で、クラスサーバ
は、ローカルにか、あるいは、他のクラスサーバのファ
イルを要求することにより、必要なクラスファイルを得
る。このプロセスは、図5とともに後述する。
ップ408で、要求されたクラス名に対応したクラスサー
バへ、クラス実行コードを要求する。その特定のクラス
のための実行コードは、様々な方法で表現される。例え
ば、実行コードは、ファイルに保存されているバイト行
列の形式かもしれない。ステップ408で、クラスサーバ
は、ローカルにか、あるいは、他のクラスサーバのファ
イルを要求することにより、必要なクラスファイルを得
る。このプロセスは、図5とともに後述する。
【0049】クラス名のための実行コードが受け取られ
ると、ステップ410で、JAVAクライアント内のネットワ
ーククラスローダへ送られる。次に、ステップ412にお
いて、NCLがその実行コードをJAVAインタプリタに送
る。この時点で、最近ロードされたクラスが他のクラス
を使うかも知れないため、JAVAインタプリタは、全ての
未定義のクラス参照を解決しなければならない。例え
ば、もし取り出された実行コードが、他のクラスが使用
され、それらのクラスが現在JAVAインタプリタにおいて
定義されていないことを示していると、それらの未定義
クラス名の実行コードは、分散オブジェクトシステムの
どこかのクラスサーバから引き出されなければならな
い。ステップ416は、JAVAインタプリタ内に、未解決の
クラスが残っているかどうかをチェックする。残ってな
ければ、もともとのクラスが要求した実行コードはすべ
て存在する。そして、ステップ420で、もともとのクラ
スが、要求したクライアントへと返される。
ると、ステップ410で、JAVAクライアント内のネットワ
ーククラスローダへ送られる。次に、ステップ412にお
いて、NCLがその実行コードをJAVAインタプリタに送
る。この時点で、最近ロードされたクラスが他のクラス
を使うかも知れないため、JAVAインタプリタは、全ての
未定義のクラス参照を解決しなければならない。例え
ば、もし取り出された実行コードが、他のクラスが使用
され、それらのクラスが現在JAVAインタプリタにおいて
定義されていないことを示していると、それらの未定義
クラス名の実行コードは、分散オブジェクトシステムの
どこかのクラスサーバから引き出されなければならな
い。ステップ416は、JAVAインタプリタ内に、未解決の
クラスが残っているかどうかをチェックする。残ってな
ければ、もともとのクラスが要求した実行コードはすべ
て存在する。そして、ステップ420で、もともとのクラ
スが、要求したクライアントへと返される。
【0050】しかし、一つ以上の未解決のクラスがある
と、ステップ418で、JAVAインタプリタは、最初の未解
決クラスの実行コードを、NCLにたずねる。ステップ418
から手続きは、ステップ408に戻り、そこでNCLはクラス
サーバに適切なクラス実行コードを要求する。このよう
にして、図4のステップ408から418にかけての部分が、
全ての実行コードが全ての未解決のクラスのために引き
出されるまで、繰り返される。よって、元のクラス名の
参照によって、クライアントアプリケーションは、分散
オブジェクトネットワークにわたって、その元のクラス
に必要なすべてのクラスをロードし解決できる。
と、ステップ418で、JAVAインタプリタは、最初の未解
決クラスの実行コードを、NCLにたずねる。ステップ418
から手続きは、ステップ408に戻り、そこでNCLはクラス
サーバに適切なクラス実行コードを要求する。このよう
にして、図4のステップ408から418にかけての部分が、
全ての実行コードが全ての未解決のクラスのために引き
出されるまで、繰り返される。よって、元のクラス名の
参照によって、クライアントアプリケーションは、分散
オブジェクトネットワークにわたって、その元のクラス
に必要なすべてのクラスをロードし解決できる。
【0051】図5は、ある実施例に基づいた図4のステ
ップ408の詳細な説明である。クラスサーバは、自分の
関連ファイル集合内にある特定のクラスを見つけること
ができないかも知れないので、分散オブジェクトシステ
ムの他の部分を探す必要がある。このようにして、本発
明の実施例は、分散オブジェクトシステムのどこかにあ
るJAVAクラスを見つけて、クライアントに送ることが可
能である。この実施例では、元のクラスサーバは、必要
なクラスにローカルアクセスすることはなく、他のクラ
スサーバを探すことができる。
ップ408の詳細な説明である。クラスサーバは、自分の
関連ファイル集合内にある特定のクラスを見つけること
ができないかも知れないので、分散オブジェクトシステ
ムの他の部分を探す必要がある。このようにして、本発
明の実施例は、分散オブジェクトシステムのどこかにあ
るJAVAクラスを見つけて、クライアントに送ることが可
能である。この実施例では、元のクラスサーバは、必要
なクラスにローカルアクセスすることはなく、他のクラ
スサーバを探すことができる。
【0052】最初に、ステップ502でクラスサーバは、
要求されているクラスがそのクラスサーバのファイル集
合にあるか否かを決定する。もしそのクラスと対応する
実行コードがそのサーバのファイル集合に見つかれば、
ステップ504で、そのファイルが読み込まれて、適切な
実行コードがJAVAクライアント内のNCLに返送される。
しかし、もしそのクラスがサーバのファイル集合内にな
いときは、そのクラスサーバは、他のところを探さなけ
ればならない。ステップ506において、この最初のクラ
スサーバは、要求されたクラス名に対応するクラスサー
バを見つけるために、ネーミングサーバに問い合わせ
る。換言すると、最初のクラスサーバは、要求されてい
るクラス名をもつファイルを含む関連ファイル集合をも
った他のクラスサーバを探しているのである。ステップ
508で、そのようなクラスサーバが見つかったか否か
が、チェックされる。見つかっていないと、ステップ51
0は、適切なエラーメッセージを返し、手続きは終了す
る。しかし、見つかると、ステップ512で、クラス名に
対応した実行コードが、その見つかったクラスサーバか
ら要求される。
要求されているクラスがそのクラスサーバのファイル集
合にあるか否かを決定する。もしそのクラスと対応する
実行コードがそのサーバのファイル集合に見つかれば、
ステップ504で、そのファイルが読み込まれて、適切な
実行コードがJAVAクライアント内のNCLに返送される。
しかし、もしそのクラスがサーバのファイル集合内にな
いときは、そのクラスサーバは、他のところを探さなけ
ればならない。ステップ506において、この最初のクラ
スサーバは、要求されたクラス名に対応するクラスサー
バを見つけるために、ネーミングサーバに問い合わせ
る。換言すると、最初のクラスサーバは、要求されてい
るクラス名をもつファイルを含む関連ファイル集合をも
った他のクラスサーバを探しているのである。ステップ
508で、そのようなクラスサーバが見つかったか否か
が、チェックされる。見つかっていないと、ステップ51
0は、適切なエラーメッセージを返し、手続きは終了す
る。しかし、見つかると、ステップ512で、クラス名に
対応した実行コードが、その見つかったクラスサーバか
ら要求される。
【0053】ステップ512は、再帰的であることが重要
である。見つかったクラスサーバから実行コードが要求
されるとき、そのクラスサーバは、そのクラスをアクセ
スできないので、適切なクラスサーバを見つけるために
ネーミングサービスを呼び出す必要がある。この状況
は、あるクラスがあるクラスサーバから別のものに移っ
たときに起こる。一度、実行コードが見つかり、ファイ
ルから読み込まれると、ステップ514で、結果のバイト
コードがJAVAクライアント内のNCLに返送される。この
ステップの後、手続きは終了する。
である。見つかったクラスサーバから実行コードが要求
されるとき、そのクラスサーバは、そのクラスをアクセ
スできないので、適切なクラスサーバを見つけるために
ネーミングサービスを呼び出す必要がある。この状況
は、あるクラスがあるクラスサーバから別のものに移っ
たときに起こる。一度、実行コードが見つかり、ファイ
ルから読み込まれると、ステップ514で、結果のバイト
コードがJAVAクライアント内のNCLに返送される。この
ステップの後、手続きは終了する。
【0054】以上に説明した本発明は、計算機システム
に蓄えられているデータを起動する様々なプロセスステ
ップを稼働する。これらのステップは、物理量の物理的
操作を必要とする。通常この物理量は、保存、変換、統
合、比較等の操作が可能な電気的あるいは磁気的な信号
である。共通の利用と言う意味で、これらの信号をビッ
ト、値、エレメント、変数、文字、データ構造などで参
照するのが便利である。しかし、これらのすべては、適
切な物理量に関連しており、それらの物理量に単に便利
なレベルを適用しているにすぎない。
に蓄えられているデータを起動する様々なプロセスステ
ップを稼働する。これらのステップは、物理量の物理的
操作を必要とする。通常この物理量は、保存、変換、統
合、比較等の操作が可能な電気的あるいは磁気的な信号
である。共通の利用と言う意味で、これらの信号をビッ
ト、値、エレメント、変数、文字、データ構造などで参
照するのが便利である。しかし、これらのすべては、適
切な物理量に関連しており、それらの物理量に単に便利
なレベルを適用しているにすぎない。
【0055】さらに、行われる操作は、同定(identifyi
ng)、実行(run)、比較(comparing)などの用語で表
現される。ここで記述されているどの操作においても、
操作とはマシン操作である。本発明の操作を実行するた
めに役に立つマシンは、汎用デジタル計算機とその他の
類似したデバイスを含んでいる。すべての場合で、計算
機を操作するときの操作方法と計算自身の方法は別物で
ある。本発明は、望ましい物理的信号を生成するため
に、電気的あるいはその他の物理的信号を処理する際
の、計算機の操作方法に関係している。
ng)、実行(run)、比較(comparing)などの用語で表
現される。ここで記述されているどの操作においても、
操作とはマシン操作である。本発明の操作を実行するた
めに役に立つマシンは、汎用デジタル計算機とその他の
類似したデバイスを含んでいる。すべての場合で、計算
機を操作するときの操作方法と計算自身の方法は別物で
ある。本発明は、望ましい物理的信号を生成するため
に、電気的あるいはその他の物理的信号を処理する際
の、計算機の操作方法に関係している。
【0056】また、本発明は、これらの操作を実行する
機構にも関連している。この機構は、要求された目的の
ために特化されて構成されてもよいし、計算機に保存さ
れたプログラムにより選択的に実行される汎用計算機で
もよい。ここでのプロセスは、本質的に、いかなる特定
の計算機や機構にも関連しない。特に、様々な汎用マシ
ンが、ここでの考えに従って書かれたプログラムにより
利用されるだろう。また、より特化した機構を構成する
にも便利である。様々なマシンに要求される構造は、こ
れまでの記述からわかるだろう。
機構にも関連している。この機構は、要求された目的の
ために特化されて構成されてもよいし、計算機に保存さ
れたプログラムにより選択的に実行される汎用計算機で
もよい。ここでのプロセスは、本質的に、いかなる特定
の計算機や機構にも関連しない。特に、様々な汎用マシ
ンが、ここでの考えに従って書かれたプログラムにより
利用されるだろう。また、より特化した機構を構成する
にも便利である。様々なマシンに要求される構造は、こ
れまでの記述からわかるだろう。
【0057】加えて、本発明は、様々な計算操作を実行
するためのプログラム命令を含む、計算機が可読である
メディアに関連している。メディアとプログラム命令
は、本発明の目的のために特に設計され、構成されても
よいし、ソフトウエアの技術者によく知られたものでも
よい。計算機可読なメディアの例としては、ハードディ
スク、フロッピーディスク、磁気テープのような磁気メ
ディア、CD−ROMのような光学メディア、フロプテ
ィカルディスクのような磁気光学メディア、さらに、RO
MやRAMのようなプログラム命令に特化したハードウエア
装置などがある。プログラム命令の例としては、コンパ
イラにより生成される機械語と、インタプリタにより実
行される高レベルなコードを含んだファイルの両方があ
る。
するためのプログラム命令を含む、計算機が可読である
メディアに関連している。メディアとプログラム命令
は、本発明の目的のために特に設計され、構成されても
よいし、ソフトウエアの技術者によく知られたものでも
よい。計算機可読なメディアの例としては、ハードディ
スク、フロッピーディスク、磁気テープのような磁気メ
ディア、CD−ROMのような光学メディア、フロプテ
ィカルディスクのような磁気光学メディア、さらに、RO
MやRAMのようなプログラム命令に特化したハードウエア
装置などがある。プログラム命令の例としては、コンパ
イラにより生成される機械語と、インタプリタにより実
行される高レベルなコードを含んだファイルの両方があ
る。
【0058】図6は、本発明に適した典型的な計算機シ
ステムである。計算機システム100は、主記憶装置106
(典型的には、RAM)と主記憶装置104(典型的には、RO
M)を含む記憶装置に繋がっている任意個のプロセッサ
(CPU)102をもつ。技術的には良く知られているよう
に、主記憶装置104は、データと命令をCPUの方への一方
向だけに送り、主記憶106は、両方向に送る。これらの
主記憶装置は、双方とも前述の計算機可読なメディアで
ある。大容量記憶装置108も、CPU102と双方向で繋がれ
ており、付加的な記憶容量を供給して、前述の計算機可
読なメディアのいずれをも含む。大容量記憶装置108
は、プログラム、データなどを保存するために使われ
る。通常は、主記憶よりも遅いハードディスクなどの、
2次記憶メディアである。大容量記憶装置108上のデー
タは、主記憶106の一部の仮想記憶として、標準的な方
法で統合される。
ステムである。計算機システム100は、主記憶装置106
(典型的には、RAM)と主記憶装置104(典型的には、RO
M)を含む記憶装置に繋がっている任意個のプロセッサ
(CPU)102をもつ。技術的には良く知られているよう
に、主記憶装置104は、データと命令をCPUの方への一方
向だけに送り、主記憶106は、両方向に送る。これらの
主記憶装置は、双方とも前述の計算機可読なメディアで
ある。大容量記憶装置108も、CPU102と双方向で繋がれ
ており、付加的な記憶容量を供給して、前述の計算機可
読なメディアのいずれをも含む。大容量記憶装置108
は、プログラム、データなどを保存するために使われ
る。通常は、主記憶よりも遅いハードディスクなどの、
2次記憶メディアである。大容量記憶装置108上のデー
タは、主記憶106の一部の仮想記憶として、標準的な方
法で統合される。
【0059】また、CPU102は、インタフェース110と結
合している。インタフェース110は、ビデオモニタ、ト
ラックボール、マウス、キーボード、マイク、感触ディ
スプレイ、カードリーダ、テープリーダ、タブレット、
音声認識装置などの装置のような入出力装置である。最
後に、CPU102は、オプションとして、計算機や、112に
あるようなネットワーク接続による遠隔通信ネットワー
クにも繋がる。そのようなネットワーク接続により、CP
Uはネットワークから情報を受け取ったり、または、前
述のステップを実行することによりネットワークに情報
を出力する。これらの装置は、計算機ハードウエアやソ
フトウエア技術において、馴染みのあるものである。
合している。インタフェース110は、ビデオモニタ、ト
ラックボール、マウス、キーボード、マイク、感触ディ
スプレイ、カードリーダ、テープリーダ、タブレット、
音声認識装置などの装置のような入出力装置である。最
後に、CPU102は、オプションとして、計算機や、112に
あるようなネットワーク接続による遠隔通信ネットワー
クにも繋がる。そのようなネットワーク接続により、CP
Uはネットワークから情報を受け取ったり、または、前
述のステップを実行することによりネットワークに情報
を出力する。これらの装置は、計算機ハードウエアやソ
フトウエア技術において、馴染みのあるものである。
【0060】明確な理解のために発明を詳しく説明して
きたが、特許請求の範囲の範囲内で付加的な変更と修正
があることは明らかである。例えば、クライアントとサ
ーバ間の通信メカニズムは、任意の適切なオブジェクト
要求ブローカでよい。また、ネーミングサーバは、分散
オブジェクトシステムでクラス名のロケーションを同定
できる任意のモジュールである。そして、ネーミングサ
ービスは、オブジェクト要求ブローカの一部か、別のモ
ジュールでもよい。加えて、クラスは計算機のファイル
に保存されているものとして説明してきたが、クラス
は、計算機システムの任意の計算機可読メディア上にあ
ればよい。そして、本発明は、クラスの単位に因われず
に、実行コードの任意の部分をロードできる。前述の例
は、JAVAプログラミング環境のためのプログラムの一つ
として、アプレット実行コードを説明してきたが、技術
的には、アプレット実行という言葉を、クライアントに
対する透明性のある方法でダウンロードされ、実行され
る任意の情報に当てはめてよい。また、ORBバインディ
ングとネットワーククラスローダは、別の2つのモジュ
ールとして説明したが、JAVAクライアントがORBと通信
し、JAVAクラスをダウンロードできるような機能をもつ
ひとつのモジュールでもよい。よって、記述してきた実
施例は、説明のためのものであり、それらに制限されな
いと考えていただきたい。そして、本発明は、ここで記
述された詳細に限定されるものではない。
きたが、特許請求の範囲の範囲内で付加的な変更と修正
があることは明らかである。例えば、クライアントとサ
ーバ間の通信メカニズムは、任意の適切なオブジェクト
要求ブローカでよい。また、ネーミングサーバは、分散
オブジェクトシステムでクラス名のロケーションを同定
できる任意のモジュールである。そして、ネーミングサ
ービスは、オブジェクト要求ブローカの一部か、別のモ
ジュールでもよい。加えて、クラスは計算機のファイル
に保存されているものとして説明してきたが、クラス
は、計算機システムの任意の計算機可読メディア上にあ
ればよい。そして、本発明は、クラスの単位に因われず
に、実行コードの任意の部分をロードできる。前述の例
は、JAVAプログラミング環境のためのプログラムの一つ
として、アプレット実行コードを説明してきたが、技術
的には、アプレット実行という言葉を、クライアントに
対する透明性のある方法でダウンロードされ、実行され
る任意の情報に当てはめてよい。また、ORBバインディ
ングとネットワーククラスローダは、別の2つのモジュ
ールとして説明したが、JAVAクライアントがORBと通信
し、JAVAクラスをダウンロードできるような機能をもつ
ひとつのモジュールでもよい。よって、記述してきた実
施例は、説明のためのものであり、それらに制限されな
いと考えていただきたい。そして、本発明は、ここで記
述された詳細に限定されるものではない。
【図1】図1は、オブジェクト要求ブローカ(ORB)、
オブジェクト開発ファシリティ、クライアント、サーバ
を備えた、本発明の内容を具体化させたシステム構成図
である。
オブジェクト開発ファシリティ、クライアント、サーバ
を備えた、本発明の内容を具体化させたシステム構成図
である。
【図2】図2は、本発明における様々なクラスサーバか
らJavaクラスファイルをダウンロードするために、オブ
ジェクト要求ブローカを使うJavaクライアントを示す関
係図である。
らJavaクラスファイルをダウンロードするために、オブ
ジェクト要求ブローカを使うJavaクライアントを示す関
係図である。
【図3】図3は、Javaクラスファイルをダウンロードす
るために使われるモジュールを含む 図 2 のJavaクライ
アントの詳細図である。
るために使われるモジュールを含む 図 2 のJavaクライ
アントの詳細図である。
【図4】図4は、本発明の分散オブジェクトシステム
で、Javaクラスを獲得するためのフローチャートであ
る。
で、Javaクラスを獲得するためのフローチャートであ
る。
【図5】図5は、図 4 の要求コードを詳細に示すフロ
ーチャートである。
ーチャートである。
【図6】図6は、本発明を実装するのに適した計算機シ
ステムの典型例の構成図である。
ステムの典型例の構成図である。
【図7】図7は、 図1の分散オブジェクトシステムに
おいて、クライアントがサーバオブジェクトに要求を出
す流れ図である。
おいて、クライアントがサーバオブジェクトに要求を出
す流れ図である。
【図8】図8は、図1と図7の分散オブジェクトシステ
ムにおける使用に適したオブジェクト参照図である。
ムにおける使用に適したオブジェクト参照図である。
10…分散オブジェクトシステム、14…ORBオブジ
ェクト・インプリメンテーション、16…オブジェクト
開発ファシリティ、20…クライアント、22…サロゲ
ート 24…メソッド表(メソッド・テーブル)、25…スタ
ブ関数、26…動的起動インタフェイス、28…標準イ
ンプリメンテーション・スイート 30…動的スケルトン、32…静的スケルトン、34…
ORBインタフェイス、36…サブコントラクト、38
…トランスポート層、42…安全プロトコル、44…タ
イプコード/ANY、46…ORBデーモン、48…イ
ンタフェース・レポジトリ、50…インプリメンテーシ
ョン・レポジトリ、52…ネーミング・サービス、54
…セキュリティ・サーバ、56…単純パージステンス
ェクト・インプリメンテーション、16…オブジェクト
開発ファシリティ、20…クライアント、22…サロゲ
ート 24…メソッド表(メソッド・テーブル)、25…スタ
ブ関数、26…動的起動インタフェイス、28…標準イ
ンプリメンテーション・スイート 30…動的スケルトン、32…静的スケルトン、34…
ORBインタフェイス、36…サブコントラクト、38
…トランスポート層、42…安全プロトコル、44…タ
イプコード/ANY、46…ORBデーモン、48…イ
ンタフェース・レポジトリ、50…インプリメンテーシ
ョン・レポジトリ、52…ネーミング・サービス、54
…セキュリティ・サーバ、56…単純パージステンス
Claims (18)
- 【請求項1】 クライアントと、アプレット・サーバ
(applet server)と、前記クライアントと前記アプレ
ット・サーバ間の通信を可能にするように設置されてい
るオブジェクト要求ブローカとを有する分散オブジェク
ト計算システムにおける前記分散オブジェクト計算シス
テム内のアプレット実行コードの獲得方法であって、 前記アプレット実行コードを獲得するための第1のアプ
レット・サーバを決定するために、クライアントによっ
て前記オブジェクト要求ブローカに問い合わせるステッ
プと、 前記オブジェクト要求ブローカを使って、決定された前
記第1のアプレットサーバへ前記アプレット実行コード
を要求するステップと、 前記第1のアプレット・サーバへ前記アプレット実行コ
ードの少なくとも一部を引き出す(retrieve)ステップ
と、 前記オブジェクト要求ブローカを使って、前記第1のア
プレット・サーバによって受け取られた前記アプレット
実行コードの一部をクライアントに返送するステップ
と、を備える方法。 - 【請求項2】 ORBバインディング(binding)・ソ
フトウエアを前記クライアントにロードし、前記クライ
アントが前記アプレット実行コードのための要求を前記
オブジェクト要求ブローカに回す(pass)できるように
するステップと、 ネットワーク・クラス・ローダ・ソフトウエアを前記ク
ライアントにロードし、前記第1のアプレット・サーバ
から前記クライアントへ返された前記アプレット実行コ
ードの部分(portion)を前記クライアントが解決(res
olve)できるようにするステップと、を更に備え、 前記クライアントはアプレット・ソフトウエアを取り込
む、請求項1に記載の方法。 - 【請求項3】 前記オブジェクト要求ブローカに問い合
わせる方法は、前記分散オブジェクト計算システムのネ
ーミング・サービスへ問い合わせるステップを有する請
求項1または請求項2のいずれかに記載の方法。 - 【請求項4】 前記アプレット実行コードの前記部分を
引き出すステップは、 前記第1のアプレット・サーバの関連ファイル・集合
(set)内に、前記アプレット実行コードの前記部分が
あるかどうかを決定するステップと、 前記第1のアップレット・サーバのファイル集合内に前
記アップレット実行コード前記一部があると決定される
とき、第1のファイルを読み込み、前記アプレット実行
コードの前記部分を引き出すステップと、 前記第1のアップレット・サーバのファイル集合内に前
記アップレット実行コードの前記部分がないと決定され
るとき、前記第1のアップレット・サーバを用いて前記
ネーミング・サービスに問い合わせ、前記アプレット実
行コードの前記一部と関連づけられる第2のアップレッ
ト・サーバを前記分散オブジェクト計算システム内に決
定するステップと、を含む請求項3に記載の方法。 - 【請求項5】 前記アプレット実行コードの前記部分の
返送するステップは、前記アプレット実行コードの前記
部分を前記第1のアプレット・サーバへ返送する前記第
2のアプレット・サーバによって実行される、請求項4
に記載の方法。 - 【請求項6】 前記アプレット実行コードの前記部分の
返送するステップは、直接に前記クライアントへ前記ア
プレット実行コードの前記部分を返送する前記第2のア
プレット・サーバによって実行される、請求項4に記載
の方法。 - 【請求項7】 前記アプレット実行コードは、JAVA
クラスに対応する、請求項1から請求項6のいずれかに
記載の方法。 - 【請求項8】 前記アプレット・サーバによって前記ク
ライアントへ返送される前記アプレット実行コードの前
記部分が、前記アップレット実行コードへの未解決の参
照を含んでいるか否かを決定するステップと、 前記アプレット実行コードの前記部分が未解決の参照を
含むとき、前記オブジェクト要求ブローカを通じて、前
記第1のアプレット・サーバに前記未解決の参照に対応
する追加のアプレット実行コードを要求するステップ
と、を備える請求項1から請求項7のいずれかに記載の
方法。 - 【請求項9】 クライアントと、アプレット・サーバ
と、前記クライアンと前記アプレット・サーバの通信を
可能にするように配置されるオブジェクト要求ブローカ
とを有する分散オブジェクト計算システムにおいて、前
記分散オブジェクト計算システム内にアプレット実行コ
ードを獲得する計算機に実装された(computer-impleme
nted)方法であって、 クライアントが、前記アプレット実行コードを得るため
の第1のアプレット・サーバを決定するために、クライ
アントによる前記分散オブジェクト計算システムのネー
ミングサービスへの問い合わせステップと、 前記決定された第1のアプレット・サーバから、前記オ
ブジェクト要求ブローカを用いて前記アプレット実行コ
ードに部分を要求するステップと、 前記第1のアプレットサーバを用いて前記アプレット実
行コードの少なくとも前記部分を引き出すステップと、 前記第1のアップレット・サーバによって引き出された
前記アプレット実行コードを前記オブジェクト要求ブロ
ーカを用いて前記クライアントに返送するステップと、
を備える方法。 - 【請求項10】 前記アプレット実行コードを引き出す
ステップは、 前記第1のアプレットサーバに関連づけられたファイル
集合内に前記アプレット実行コードの前記部分があるか
どうかを決定するステップと、 前記第1のアップレットサーバのファイル集合内に前記
アプレット実行コードの前記部分があるとき、第1のフ
ァイルを読み込み、前記アプレット実行コードの前記部
分を引き出すステップと、 前記第1のアップレットサーバのファイル集合内に前記
アプレット実行コードの前記部分がないとき、前記ネー
ミングサービスに問い合わせ、前記アプレット実行コー
ドと関連づけられると共に、前記分散オブジェクト計算
システム内ある第2のアプレットサーバを決定するステ
ップと、を備える請求項9に記載の方法。 - 【請求項11】 前記アプレット実行コードを返送する
ステップは、前記アプレット実行コードの前記部分を前
記第1のアプレットサーバへ返送する前記第2のアプレ
ットサーバによって実行される、請求項10に記載の方
法。 - 【請求項12】 前記アプレット実行コードの前記部分
を返送するステップは、前記アプレット実行コードの前
記部分を直接にクライアントへ返送する前記第2のアプ
レットサーバによって実現される、請求項10に記載の
方法。 - 【請求項13】 前記アプレット実行コードはJAVA
クラスに対応する、請求項9から請求項12のいずれか
に記載の方法。 - 【請求項14】 クライアントと、アプレットサーバ
と、前記クライアントと前記アプレットサーバの通信を
可能にするために配置されるオブジェクト要求ブローカ
とを有する前記分散オブジェクト計算システムにおい
て、前記アプレット実行コードを前記分散オブジェクト
計算システム内に獲得する計算機に実装されたであっ
て、 前記アプレット実行コードを得るための前記第1のアプ
レットサーバを決定するために、クライアントによって
上述の分散オブジェクト計算システムのネーミングサー
ビスへ問い合わせるステップと、 前記決定された第1のアプレットサーバから、前記オブ
ジェクト要求ブローカを用いて、前記アプレット実行コ
ードの前記部分を要求するステップと、 前記第1のアプレットサーバから、前記アプレット実行
コードの少なくとも前記部分を引き出すステップと、 前記オブジェクト要求ブローカを用いて、前記第1のア
プレットサーバによって引き出された前記アプレット実
行コードの前記部分をクライアントに返送するステップ
と、 前記アプレットサーバによって前記クライアントに返送
された前記アプレット実行コードの前記部分が、前記ア
ップレット実行コードへの未解決の参照を含んでいない
かを決定するステップと、 前記アプレット実行コードの前記部分が未解決の参照を
含んでいるときは、上述のオブジェクト要求ブローカを
通して、前記第1のアプレットサーバから、前記未解決
の参照に対応した追加のアプレット実行コードを要求す
るステップと、を備える方法。 - 【請求項15】 クライアントとアプレットサーバとを
有する分散オブジェクト計算システムにおけるアプレッ
ト実行コードの獲得に使用する計算機装置(apparatu
s)であって、 処理ユニット(processing unit)と、 前記処理ユニットに結合された入出力デバイス(devic
e)と、 前記処理ユニットと通信する記憶デバイス(device)
と、 前記クライアントと前記アプレットサーバと間の通信を
可能にするために配置されると共に、前記アプレット実
行コードを受け取り可能なクライアントからのアプレッ
ト実行コードのための要求を受け取るために配置される
オブジェクト要求ブローカと、 前記クライアントからの前記要求に応じて前記アプレッ
ト実行コードを引き出し、且つ前記アプレット実行コー
ドを前記クライアントに返送するために配置されている
第1のアプレットサーバと、を備える計算機装置。 - 【請求項16】 前記オブジェクト要求ブローカは、前
記アプレット実行コードと関連づけられた前記第1のア
プレットサーバを同定するために前記クライアントから
の要求を受け取るように配置されるネーミングサービス
と関連づけられる、請求項15に記載の計算機装置。 - 【請求項17】 前記第1のアプレットサーバは、前記
アプレット実行コードを引き出すために、前記第2のア
プレットサーバをの決定を上述のネーミングサーバに問
い合わせる、請求項16に記載の計算機装置。 - 【請求項18】 前記中央処理ユニットと通信する大容
量記憶ユニットを備え、前記大容量記憶ユニットは前記
アプレット実行コードを含むファイルを含み、前記第1
のアプレットサーバが前記ファイルから前記アップレッ
ト実行コードを引き出せるように配置される、請求項1
5から請求項17のいずれかに記載の計算機装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/675,733 US6260078B1 (en) | 1996-07-03 | 1996-07-03 | Using a distributed object system to find and download java-based applications |
US08/675733 | 1996-07-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1091446A true JPH1091446A (ja) | 1998-04-10 |
Family
ID=24711744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9177284A Pending JPH1091446A (ja) | 1996-07-03 | 1997-07-02 | Javaベースアプリケーションの発見とダウンロードのための分散オブジェクトシステムの利用 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6260078B1 (ja) |
EP (1) | EP0817031A3 (ja) |
JP (1) | JPH1091446A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020006336A (ko) * | 2000-07-12 | 2002-01-19 | 서동현 | 자바 애플릿 자동 설치 및 실행 방법 |
KR20020022044A (ko) * | 1998-06-26 | 2002-03-23 | 썬 마이크로시스템즈, 인코포레이티드 | 한 바이트 코드와 연속화 된 객체들 흐름을 적시에공급하는 방법과 장치 |
JP2002521745A (ja) * | 1998-07-22 | 2002-07-16 | アプストリーム インコーポレーテッド | モジュールのストリーミング |
KR100397589B1 (ko) * | 1999-04-27 | 2003-09-13 | 인터내셔널 비지네스 머신즈 코포레이션 | Java 환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법 |
KR100441115B1 (ko) * | 2001-06-27 | 2004-07-19 | 주식회사 인터와이즈 | 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법 |
JP2005208691A (ja) * | 2004-01-19 | 2005-08-04 | Networks Plus Inc | ウェブページまたはデジタル映像ページ上での情報収集とコミュニケーションを可能にするための画像データを活用した方法、画像データプログラム製品、情報処理装置およびシステム |
US7120863B1 (en) | 1999-11-15 | 2006-10-10 | International Business Machines Corporation | Method, system, and program for interfacing with elements in a document |
US7272827B2 (en) | 2002-04-03 | 2007-09-18 | International Business Machines Corporation | Statically detecting externally referenced interfaces of a program |
US9880776B1 (en) | 2013-02-22 | 2018-01-30 | Veritas Technologies Llc | Content-driven data protection method for multiple storage devices |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473099B1 (en) * | 1996-06-03 | 2002-10-29 | Webtv Networks, Inc. | Automatically upgrading software over a satellite link |
US6957260B1 (en) | 1996-06-03 | 2005-10-18 | Microsoft Corporation | Method of improving access to services provided by a plurality of remote service providers |
US6263360B1 (en) | 1998-06-01 | 2001-07-17 | Sri International | System uses filter tree and feed handler for updating objects in a client from a server object list |
EP0964562A1 (en) | 1998-06-10 | 1999-12-15 | Sun Microsystems, Inc. | Telephony control mechanism |
US7143421B2 (en) * | 1998-09-09 | 2006-11-28 | Microsoft Corporation | Highly componentized system architecture with a demand-loading namespace and programming model |
US8434099B2 (en) | 1998-09-09 | 2013-04-30 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
US6385661B1 (en) * | 1998-10-19 | 2002-05-07 | Recursion Software, Inc. | System and method for dynamic generation of remote proxies |
CA2255035C (en) * | 1998-11-30 | 2002-01-29 | Victor Shih-Chuan Chan | Archiving tool |
US6327702B1 (en) * | 1998-12-30 | 2001-12-04 | Microsoft Corporation | Generating a compiled language program for an interpretive runtime environment |
KR20000057127A (ko) * | 1999-02-03 | 2000-09-15 | 송동호 | 소프트웨어 임대 시스템을 위한 분산컴퓨팅 환경에서의프로그램 수행시스템 및 그 방법 |
GB2346990B (en) * | 1999-02-20 | 2003-07-09 | Ibm | Client/server transaction data processing system with automatic distributed coordinator set up into a linear chain for use of linear commit optimization |
US6594690B2 (en) * | 1999-02-24 | 2003-07-15 | Hewlett-Packard Development Company, L.P. | Network peripheral device driver installer |
US6735771B1 (en) * | 1999-03-12 | 2004-05-11 | Perot Systems Corporation | System and method for delivering web services using common object request broker architecture |
GB2349548A (en) * | 1999-04-27 | 2000-11-01 | Roke Manor Research | Downloading software to mobile telecommunication users |
US6650620B1 (en) * | 1999-05-04 | 2003-11-18 | Tut Systems, Inc. | Resource constrained routing in active networks |
US6807549B2 (en) | 1999-06-03 | 2004-10-19 | B.I.S. Advanced Software Systems Ltd. | General purpose interpreter and database for accessing enterprise servers over an internet protocol network |
US6412010B1 (en) * | 1999-06-18 | 2002-06-25 | Hewlett-Packard Company | Apparatus and method for implementing a network protocol that supports the transmission of a variable number of application-usable object over a network as a single network transmittable container object and the re-creation of those application-usable object therefrom |
DE60039554D1 (de) * | 1999-06-25 | 2008-09-04 | Canon Res Ct France S A | Verteilte Verwaltung von Datenobjekten in einem Kommunikations-Netzwerk |
DE19929049A1 (de) * | 1999-06-25 | 2000-12-28 | Ibm | Vorrichtung und Verfahren zum benutzerdefinierten Laden und Ausführen von Anwendungen mittels eines Tokens |
US6718364B2 (en) * | 1999-08-10 | 2004-04-06 | Sun Microsystems, Inc. | Method and apparatus for expedited file downloads in an applet environment |
WO2001013224A2 (de) * | 1999-08-18 | 2001-02-22 | Siemens Aktiengesellschaft | Agentensystem, computernetzwerk und verfahren zum laden eines agentensystems von einem host-computer auf einen client-computer eines computernetzwerkes |
US6611864B2 (en) * | 1999-09-10 | 2003-08-26 | Intel Corporation | Extensible policy-based network management architecture |
US6496833B1 (en) * | 1999-11-01 | 2002-12-17 | Sun Microsystems, Inc. | System and method for generating code for query object interfacing |
US6678743B1 (en) | 1999-11-30 | 2004-01-13 | Recursion Software, Inc. | Method for moving objects in a distributed computing environment |
US6622175B1 (en) * | 1999-11-30 | 2003-09-16 | Recursion Software, Inc. | System and method for communications in a distributed processing environment |
US6947965B2 (en) | 1999-11-30 | 2005-09-20 | Recursion Software, Inc. | System and method for communications in a distributed computing environment |
US6711619B1 (en) * | 1999-12-15 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | Method, system, and apparatus for distributing and using computer-based applications over a network |
KR20010057769A (ko) * | 1999-12-23 | 2001-07-05 | 오길록 | 웹 환경에서 자바 서블릿을 이용한 동질 자바 응용서버들의 부하 분산방법 |
US6629163B1 (en) | 1999-12-29 | 2003-09-30 | Implicit Networks, Inc. | Method and system for demultiplexing a first sequence of packet components to identify specific components wherein subsequent components are processed without re-identifying components |
US7171390B1 (en) | 1999-12-31 | 2007-01-30 | Soft-On-Net, Inc. | System and method for executing a rental software program in distributed computing environment |
US6553405B1 (en) * | 2000-02-25 | 2003-04-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Self-configurable distributed system |
US6744450B1 (en) * | 2000-05-05 | 2004-06-01 | Microsoft Corporation | System and method of providing multiple installation actions |
US6922685B2 (en) * | 2000-05-22 | 2005-07-26 | Mci, Inc. | Method and system for managing partitioned data resources |
US7401131B2 (en) * | 2000-05-22 | 2008-07-15 | Verizon Business Global Llc | Method and system for implementing improved containers in a global ecosystem of interrelated services |
US6745250B1 (en) * | 2000-06-28 | 2004-06-01 | International Business Machines Corporation | Finding named EJB homes via life cycle support |
US8312429B2 (en) * | 2000-11-10 | 2012-11-13 | Oracle International Corporation | Cell based data processing |
EP1227666A1 (en) * | 2001-01-18 | 2002-07-31 | Sony Service Centre (Europe) N.V. | Method and device for downloading application data |
GB2372119A (en) * | 2001-02-13 | 2002-08-14 | Lux Inflecta Ehf | Distributed computing system |
US7536697B2 (en) * | 2001-06-19 | 2009-05-19 | Accenture Global Services Gmbh | Integrating enterprise support systems |
US20030063122A1 (en) * | 2001-07-27 | 2003-04-03 | Cichowlas Bruce William | Method, system, and computer program product for developing and using stateful web applications |
US7240102B1 (en) * | 2001-08-03 | 2007-07-03 | Mcafee, Inc. | System and method for providing web browser-based secure remote network appliance configuration in a distributed computing environment |
US20030093496A1 (en) * | 2001-10-22 | 2003-05-15 | O'connor James M. | Resource service and method for location-independent resource delivery |
US20030177484A1 (en) * | 2002-03-15 | 2003-09-18 | Bosschaert Allaert J. D. | Firewall class loader |
US20030192038A1 (en) * | 2002-04-09 | 2003-10-09 | Thomas Hagmann | Linking data objects to a project development system |
GB0222420D0 (en) * | 2002-09-27 | 2002-11-06 | Ibm | Optimized corba software method invocation |
US7318229B1 (en) * | 2003-07-29 | 2008-01-08 | Sun Microsystems, Inc. | Method, system, and program for dispatching a method call |
ATE437542T1 (de) | 2004-09-07 | 2009-08-15 | Research In Motion Ltd | Vorrichtung, system und verfahren zum testen eines geräts mit eingeschränkten ressourcen |
US20060206458A1 (en) * | 2005-03-09 | 2006-09-14 | Paul Tyma | Serving program elements through a unified interface |
JP4881023B2 (ja) * | 2006-02-01 | 2012-02-22 | キヤノン株式会社 | 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム |
US8250178B2 (en) * | 2006-09-15 | 2012-08-21 | Emc Corporation | Protecting client-side code |
US20080072069A1 (en) * | 2006-09-15 | 2008-03-20 | Emc Corporation | Protecting client-side code |
US8291480B2 (en) * | 2007-01-07 | 2012-10-16 | Apple Inc. | Trusting an unverified code image in a computing device |
US8239688B2 (en) | 2007-01-07 | 2012-08-07 | Apple Inc. | Securely recovering a computing device |
US8254568B2 (en) | 2007-01-07 | 2012-08-28 | Apple Inc. | Secure booting a computing device |
US8620724B2 (en) | 2010-04-20 | 2013-12-31 | Accenture Global Services Limited | Integration framework for enterprise content management systems |
US10296299B2 (en) * | 2012-12-20 | 2019-05-21 | Vmware, Inc. | Server-side weaving of application-oriented-programming advice into computer code that preempts client-side load-time weaving |
US11050820B2 (en) * | 2013-04-29 | 2021-06-29 | Sap Se | Cloud sharing system |
KR102412892B1 (ko) | 2013-05-02 | 2022-06-24 | 에씰로 앙터나시오날 | 헤드 장착형 광학 시스템을 제공하기 위한 방법 |
EP3391327A1 (en) * | 2015-12-17 | 2018-10-24 | Essilor International | Distributed optical job and manufacturing computation systems and methods |
US11354165B1 (en) * | 2017-07-13 | 2022-06-07 | Workday, Inc. | Automated cluster execution support for diverse code sources |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649204A (en) * | 1991-08-22 | 1997-07-15 | Rec Software, Inc. | Method and apparatus for consolidating software module linkage information used for starting a multi-module program |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
US5724556A (en) * | 1995-04-14 | 1998-03-03 | Oracle Corporation | Method and apparatus for defining and configuring modules of data objects and programs in a distributed computer system |
US6009464A (en) * | 1995-09-20 | 1999-12-28 | Sun Microsystems, Inc. | Method and apparatus for enabling application programs to communicate with network clients and servers |
US5737607A (en) * | 1995-09-28 | 1998-04-07 | Sun Microsystems, Inc. | Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats |
US5872973A (en) * | 1995-10-26 | 1999-02-16 | Viewsoft, Inc. | Method for managing dynamic relations between objects in dynamic object-oriented languages |
-
1996
- 1996-07-03 US US08/675,733 patent/US6260078B1/en not_active Expired - Lifetime
-
1997
- 1997-06-12 EP EP97304091A patent/EP0817031A3/en not_active Withdrawn
- 1997-07-02 JP JP9177284A patent/JPH1091446A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020022044A (ko) * | 1998-06-26 | 2002-03-23 | 썬 마이크로시스템즈, 인코포레이티드 | 한 바이트 코드와 연속화 된 객체들 흐름을 적시에공급하는 방법과 장치 |
KR100438143B1 (ko) * | 1998-06-26 | 2004-07-01 | 썬 마이크로시스템즈, 인코포레이티드 | 한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치 |
JP2002521745A (ja) * | 1998-07-22 | 2002-07-16 | アプストリーム インコーポレーテッド | モジュールのストリーミング |
KR100397589B1 (ko) * | 1999-04-27 | 2003-09-13 | 인터내셔널 비지네스 머신즈 코포레이션 | Java 환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법 |
US7120863B1 (en) | 1999-11-15 | 2006-10-10 | International Business Machines Corporation | Method, system, and program for interfacing with elements in a document |
KR20020006336A (ko) * | 2000-07-12 | 2002-01-19 | 서동현 | 자바 애플릿 자동 설치 및 실행 방법 |
KR100441115B1 (ko) * | 2001-06-27 | 2004-07-19 | 주식회사 인터와이즈 | 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법 |
US7272827B2 (en) | 2002-04-03 | 2007-09-18 | International Business Machines Corporation | Statically detecting externally referenced interfaces of a program |
JP2005208691A (ja) * | 2004-01-19 | 2005-08-04 | Networks Plus Inc | ウェブページまたはデジタル映像ページ上での情報収集とコミュニケーションを可能にするための画像データを活用した方法、画像データプログラム製品、情報処理装置およびシステム |
US9880776B1 (en) | 2013-02-22 | 2018-01-30 | Veritas Technologies Llc | Content-driven data protection method for multiple storage devices |
Also Published As
Publication number | Publication date |
---|---|
EP0817031A3 (en) | 2004-06-16 |
US6260078B1 (en) | 2001-07-10 |
EP0817031A2 (en) | 1998-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6260078B1 (en) | Using a distributed object system to find and download java-based applications | |
US6009464A (en) | Method and apparatus for enabling application programs to communicate with network clients and servers | |
US7278132B2 (en) | Mechanism for automatic synchronization of scripting variables | |
US6253228B1 (en) | Method and apparatus for updating and synchronizing information between a client and a server | |
US6363433B1 (en) | Method and mechanism for client-side handling of extensions originally written for servers | |
US7269792B2 (en) | System and method for generating high-function browser widgets with full addressability | |
US7631300B2 (en) | Providing instrumentation data to an instrumentation data source from within a managed code | |
US6101510A (en) | Web browser control for incorporating web browser functionality into application programs | |
US5881230A (en) | Method and system for remote automation of object oriented applications | |
US6792426B2 (en) | Generic servlet for browsing EJB entity beans | |
US6772408B1 (en) | Event model using fixed-format text strings to express event actions | |
US7478408B2 (en) | System and method for accessing objects in a platform dependent environment from a platform independent environment | |
US7203769B2 (en) | Bootstrapping technique for distributed object client systems | |
US7490332B2 (en) | System and method for accessing ActiveX objects in a platform dependent environment from objects in a platform independent environment | |
US20020078000A1 (en) | Method and apparatus for locating inter-enterprise resources using text-based strings | |
EP1174793A2 (en) | System and method providing multi-tier applications architecture | |
EP1126681A2 (en) | A network portal system and methods | |
JPH1091447A (ja) | 分散オブジェクトシステムにおいて分散オブジェクトの再利用を促進するカタログ装置 | |
US6026405A (en) | Method of locating and downloading files on a network | |
US6233622B1 (en) | Adapter and handler framework for web server extensions | |
JPH10269072A (ja) | アプリケーション開発方法 | |
US20040230665A1 (en) | Mapping uniform resource locators to object classes and methods | |
Liang et al. | CORBAConnect-Manipulate CORBA Objects via JavaScript |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040625 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070515 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071030 |