JP2000047875A - クラスロ―ダ - Google Patents

クラスロ―ダ

Info

Publication number
JP2000047875A
JP2000047875A JP11174676A JP17467699A JP2000047875A JP 2000047875 A JP2000047875 A JP 2000047875A JP 11174676 A JP11174676 A JP 11174676A JP 17467699 A JP17467699 A JP 17467699A JP 2000047875 A JP2000047875 A JP 2000047875A
Authority
JP
Japan
Prior art keywords
cassette
class
classes
loader
program
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
Application number
JP11174676A
Other languages
English (en)
Inventor
Daniel J Guinan
ジェイ. グイナン ダニエル
Loren L Hart
エル. ハート ローレン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000047875A publication Critical patent/JP2000047875A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

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

Abstract

(57)【要約】 【課題】 ネーム空間境界を越えてクラスに自動的アク
セスするクラスローダが提供される。 【解決手段】 ネーム空間境界を越えてクラスに自動的
アクセスする、そのアクセスは、アクセスされるクラス
を「公的」にする必要なく、行われる。クラスの第1の
集合を含む第1のカセットは、第2のカセットに従属す
る。第1のカセットからのクラスは第1のクラスローダ
によってロードされ、第2のカセットからのクラスは第
2のクラスローダによってロードされる。第1のカセッ
トからロードされていないクラスに対して第1の照会が
なされた場合、照会されたクラスは第2の、従属するカ
セット内において検索される。照会されたクラスが発見
された場合、第2のクラスローダによってロードされ
る。照会されたクラスが第2のカセット内に発見し得な
い場合にのみ、第1のカセット内で検索される。しか
し、照会されたクラスが、第2のカセット内で「私的」
として保護されている場合、第1のカセットにとっては
アクセス可能ではない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムの分野に関する。より具体的には、プログラムコー
ドの相互依存的集合間におけるプログラムオブジェクト
の共有のためのシステムおよび方法が提供される。
【0002】
【従来の技術】クラスローダは、プログラムのクラスお
よびインターフェースを規定するプログラムファイルを
ロードするために、JavaTMプログラミング言語にお
いて用いられる。Java Virtual Mach
ine(JVM)は、典型的には、Javaプログラム
を実行するために特定のハードウェアプラットフォーム
上で動作する「仮想」コンピュータとして実行され(す
なわち、ソフトウェア内で実行される)、1つ以上のク
ラスローダを含み得る。例えば、1つのJavaプログ
ラムは、異なる場所からクラスファイルをロードするた
めに、異なるクラスローダを呼び出す(例えば、多数の
ウェブサイト/ページにアクセスするウェブブラウザ、
ローカルハードディスクから実行されるアプリケーショ
ンプログラム)。
【0003】各クラスローダは、それがロードしたクラ
スを含む、関連するネーム空間を有する。クラスローダ
が特定のクラスをネーム空間にロードした後に、そのク
ラスが別のクラスを照会する場合、JVMは、その照会
しているクラスをロードした同一のクラスローダからそ
の照会されているクラスを要求する。ネーム空間内のク
ラスは独自の名称を有する必要があるが、別々のネーム
空間において機能する異なるクラスローダが、同一名称
のクラスをロードし得る。
【0004】典型的には、1つのクラスローダによって
ロードされたクラスは、異なるクラスローダによってロ
ードされたクラスにアクセスし得ない(すなわち、クラ
スは、容易に、ネーム空間境界を越えて参照し得な
い)。この防衛機能は、1つのクラスローダによってロ
ードされた有害なコードが、別のクラスローダによって
用いられるクラスに干渉することを防ぐ。一般的に、ク
ラスローダを呼び出したアプリケーションプログラムの
みが、この防衛機能を無効にし得る。この防衛機能が、
クラスを「公的」に構築することで、プログラムのソー
スコードによって無効にされた場合、例えば、クラスは
広くアクセス可能となり、おそらく、開発者が意図した
ものを越えて広くなる。
【0005】Java言語の実行の1つにおいて、クラ
スローダの2つのレベルが提供される。システムクラス
ローダは、ハードウェアプラトフォームに対するJVM
の実行の1部として提供される。システムクラスローダ
はJava API(Application Pro
grammer’s Interface)に含まれる
全クラスに対してアクセスを有する。この実行におい
て、アプリケーションプログラムが最初に特定のクラス
を照会する(例えば、アクセスを試みる)場合、システ
ムクラスローダは、その特定のクラスを、信頼性のある
クラスのライブラリからロードしようと試みる。それが
失敗した場合、補助的なクラスローダがそのクラスをロ
ードする(例えば、それを、ネットワーク場所からダウ
ンロードすることにより)。その後、ロードされたクラ
ス(例えば、クラスの方法)が第2のクラスを照会する
場合、JVMは補助的なクラスローダに、第2のクラス
をロードするように要求を出す。なぜなら、それが第1
のクラスをロードしたからである。補助的なクラスロー
ダは、最初に、要求をシステムクラスローダに受け渡
す。システムクラスローダが第2のクラスをロードし得
ない場合にのみ、補助的なクラスローダがその要求を満
たすように求められる。
【0006】上述の実行において、システムクラスロー
ダにアクセス可能なクラスは、異質なプログラムコード
からの安全を確保され、したがって、改悪から保護され
る。このスキームは、クラスへのアクセスに対するいく
らかの制御を可能にする(例えば、補助的なクラスロー
ダにとって利用可能なクラスは、それがシステムクラス
ローダによって提供されるクラスと同一の名称を有する
場合には、ロードされ得ない)。特に、それは、補助的
なクラスローダによってロードされたクラスが、システ
ムクラスローダによってロードされたクラスとして偽る
ことを防ぐ。
【0007】しかし、この実行は、特定の、可能な利点
を提供するには至らない。特に、この実行は、1つのク
ラスローダ(例えば、システムクラスローダまたは補助
的なクラスローダの第1の例)が、別のクラスローダ
(例えば、補助的なクラスローダの第2の例)のクラス
に容易にアクセスすることを防ぎ、それは、関連するネ
ーム空間におけるクラスまたコードの間で関係がある場
合でさえもそうである。例えば、2つの異なるクラスロ
ーダによってロードされたクラスが若干の相互依存性ま
たは協調性を有する場合、クラスローダのネーム空間の
1つにおけるクラスは、アプリケーションプログラムの
側での特定の動き無しに、他のネーム空間内のクラスに
アクセスし得ない。
【0008】
【発明が解決しようとする課題】1つのクラスローダ
が、選択されたクラスが私的として維持されることを可
能にする間、他のクラスローダによってロードされたク
ラスファイルに境界なくアクセスすることを可能にし、
且つ、ネーム空間境界を越えてのアクセスから保護され
るクラスローダアーキテクチャが提供される。
【0009】
【課題を解決するための手段】本発明によるネーム空間
境界を越えてカセット内のクラスにアクセスする方法
は、第1のカセットの、第1のクラスローダおよび第1
のネーム空間への関連付けと、該第1のカセットに従属
する第2のカセットの、第2のクラスローダおよび第2
のネーム空間への関連付けと、該第2のカセットに従属
する全カセットを含む従属グラフの構築と、特定のクラ
スに対する、該第2のカセットからの第1の照会に応答
して、該照会されたクラスの、該第1のカセットからの
ロードの試行と、該照会されたクラスが該第1のカセッ
トからロードされない場合、該照会されたクラスの、該
第2のカセットからのロードの試行とを含み、それによ
り上記目的が達成される。
【0010】ネーム空間境界を越えてカセット内のクラ
スにアクセスする方法は、前記第1のカセットが第3の
カセットに従属し、更に、前記照会されたクラスの、前
記第1のカセットからのロードを試行する前に、、該第
3のカセットからの該照会されたクラスへのロードの試
行を含んでもよい。
【0011】ネーム空間境界を越えてカセット内のクラ
スにアクセスする方法は、保管ファイルの開放と、前記
第2のカセットの、該保管ファイルからの取出とを更に
含んでもよい。
【0012】ネーム空間境界を越えてカセット内のクラ
スにアクセスする方法は、保管ファイルの開放が、ネッ
トワークを越えての該保管ファイルの受取を含んでもよ
い。
【0013】ネーム空間境界を越えてカセット内のクラ
スにアクセスする方法は、前記第2のカセットに関連す
る目録の受取を更に含んでもよい。
【0014】ネーム空間境界を越えてカセット内のクラ
スにアクセスする方法は、前記目録において識別された
場所からの、前記第1のカセットの取出を更に含んでも
よい。
【0015】本発明による異なるクラスローダに関連す
る、クラスの多数の集合を含むプログラムを執行するコ
ンピュータシステムは、プログラムを執行するためのプ
ロセッサと、クラスの第1の集合からクラスをロードす
るための、第1のクラスローダと、クラスの該第1の集
合に従属する、クラスの第2の集合からクラスをロード
するための、第2のクラスローダと、前記第2のカセッ
トの前記従属を記憶するための、従属メモリとを含み、
クラスの該第2の集合内のクラスによって照会されたク
ラスが、クラスの該第2の集合において検索される前
に、クラスの該第1の集合において検索され、それによ
り上記目的が達成される。
【0016】異なるクラスローダに関連する、クラスの
多数の集合を含むプログラムを執行するコンピュータシ
ステムは、クラスの前記第2の集合の前記従属を識別す
るための目録を更に含んでもよい。
【0017】本発明による算出デバイスを動作させる方
法は、クラスの第1の組の作成と、クラスの第2の組の
作成と、クラスの該第2の組の、クラスの該第1の組へ
の従属関係の確立と、該従属関係の記憶と、クラスの該
第1の組の、第1のクラスローダへの関連付けと、クラ
スの該第2の組の、第2のクラスローダへの関連付け
と、特定のクラスに対する、クラスの該第2の組におけ
るクラスからの第1の照会の受取と、該従属関係に従っ
て、該特定のクラスの、クラスの該第1の組からのロー
ドの試行と、該特定のクラスが、クラスの該第1の組か
らロードされない場合、該特定のクラスの、クラスの該
第2の組からのロードの試行とを含み、それにより上記
目的が達成される。
【0018】本発明によるプログラムオブジェクトにア
クセスする方法を、コンピュータによって執行された場
合に、コンピュータに実行させる命令を記憶する、コン
ピュータ読み取り可能記憶媒体は、該方法が、第1のカ
セットの、第1のクラスローダおよび第1のネーム空間
への関連付けと、該第1のカセットに従属する第2のカ
セットの、第2のクラスローダおよび第2のネーム空間
への関連付けと、該第2のカセットに従属する全カセッ
トを含む従属グラフの構築と、特定のクラスに対する、
該第2のカセットからの第1の照会に応答して、該従属
グラフにおける最も遠隔のカセットの位置づけと、該照
会されたクラスの、該遠隔カセットからのロードの試行
と、該照会されたクラスの、該第2のカセットに従属す
るカセットのうち次に遠隔のカセットからのロードの試
行とを含み、それにより上記目的が達成される。
【0019】本発明による装置を執行させるプログラム
は、クラスの第1の組からクラスをロードするための、
第1のローダ手段と、クラスの第2の組からクラスをロ
ードするための、第2のローダ手段と、クラスの該第2
の組からクラスの該第1の組への従属を識別するため
の、目録手段と、クラスの該第2の組からの該従属を記
憶する、メモリ手段とを含み、該第1のローダ手段が、
クラスの該第2の組からの特定のクラスへの照会に応答
して、クラスの該第1の組から該特定のクラスのロード
を試行し、それにより上記目的が達成される。
【0020】本発明によるプログラム命令の集合間にお
けるアクセスを可能にするデータ構造を含む、コンピュ
ータ読み取り可能記憶媒体は、該データ構造が、目録、
およびプログラム命令の第1の集合を含む保管ファイル
を含み、該目録が、プログラムクラスの該第1の組の、
プログラムクラスの第2の組への従属を識別し、それに
より上記目的が達成される。
【0021】プログラム命令の集合間におけるアクセス
を可能にするデータ構造を含む、コンピュータ読み取り
可能記憶媒体は、前記目録がテキストファイルを含んで
もよい。
【0022】
【発明の実施の形態】以下の説明は、当業者による発明
の実施および使用を可能にするために提示され、且つ特
定の応用および必要条件の観点から提示される。開示さ
れる実施態様に対する様々な改変が当業者には容易に明
らかとなり、本明細書中に規定される概括的な原理は、
本発明の精神および範囲から逸脱することなく、他の実
施態様および応用に適用され得る。したがって、本発明
は、示される実施態様に限定されるものではなく、むし
ろ、本明細書中に開示される原理および特徴と一貫する
最も広い範囲に合致する。
【0023】発明の1つの実施態様においては、クラス
ローダは、アプリケーションプログラムのソースコード
を改変することなく、ネーム空間境界を越えてプログラ
ムコードをアクセスし得る、Javaプログラミング言
語などのプログラミング言語に対して提供される。例え
ば、クラスローダは、Java Virtual Ma
chine (JVM)またはそのサブクラスが提供さ
れるシステムクラスローダであり得る。または、クラス
ローダは、抽象ClassLoaderクラスのある例
であり得る。
【0024】「カセット」と称される、プログラムコー
ドの第1の集合(例えば、クラスファイル)は第1のク
ラスローダに関連付けられ、第2のカセットは第2のク
ラスローダに関連付けられる。2つのカセットの間に従
属関係が確立され、それは、第2のカセットは第1のカ
セットの内容(例えば、クラス)に対するアクセスが許
可されているといった関係である。すなわち、第2のカ
セットは第1のカセットに従属している。
【0025】従属リスト(例えば、リスト、テーブル、
またはグラフの形をとる)は、被従属カセットに対する
従属の完全な程度を明らかにするように構築される。リ
ストは、被従属カセットに従属する全カセットを含み、
それらのカセットに従属する全カセットなども含む。例
示的には、従属リストまたはグラフは、カセットがプロ
グラムの開発環境または実行時環境においてインストー
ルされるに伴い、構築される。プログラムの全要素(例
えば、カセットまたはJARファイル)が組み立てられ
るまで、一時的なデータ記憶装置に記憶される。一旦、
プログラムの実行が開始されると、従属関係グラフは、
容易なアクセスのため、メモリ内に配置される。従属関
係グラフで識別される様々なカセットは、「統合ネーム
空間」を共有すると考えられ得る。統合ネーム空間で
は、クラスおよび/またはパッケージが共有される。
【0026】第2のカセットからロードされたクラスが
新たなクラスの例示を要求する場合、従属リストが探索
され、最も遠隔の従属カセット(すなわち、本実施例で
は、第1のカセット)を発見する。その従属カセットの
クラスローダは、照会されたクラスを従属カセットから
ロードするよう試みる。しかし、要求されたオブジェク
トがその従属カセットに含まれない場合、第2のクラス
ローダが、第2のカセット内にそのクラスを発見するよ
う試みる。
【0027】本発明の、ここで説明される実施態様で
は、従属は、各カセットがサインされる際に確立され
る。カセットは、その正当性を確実にするために、暗号
キーによってデジタル的にサインされる。サインされた
カセットからクラスにアクセスするクラスローダは、標
準的な方法でデジタルサインが真正のものであることを
確証することによって、カセットを正当化し得る。一旦
カセットがサインされると、そのカセットも、またその
従属カセットも変更され得ず、したがって、その内容に
対する安全性が増強される。例示的に、カセットは多数
のクラスまたはクラスファイルによって形成される。カ
セットが組み立てられ、且つ、別のカセットに従属する
と見なされる場合、カセットに付随する目録に、その旨
の注釈が記載される。
【0028】カセット(例えば、カセット内のクラス)
が別のクラスに第1の照会をする場合、JVMは、最初
に、そのクラスが既にロードされているかどうかを決定
する。既にロードされている場合、クラスは通常通りに
アクセスされる。しかし、JVMがそのクラスについて
全く照会先を有さない場合、JVMは、そのクラスをロ
ードするように照会した上記カセットのクラスローダに
指示を出す。しかし、そのカセットを検索する前に、任
意の従属カセットがクラスを含むかどうかを決定するた
めに、従属関係グラフが検討される。したがって、従属
カセットに関連するクラスローダは、最も遠隔地からカ
セットの検索を開始する。
【0029】照会されたクラスが被従属カセット内に発
見される場合、そのクラスは、それが発見されたカセッ
トに関連するクラスローダによってロードされる。最後
に、且つ、照会されたクラスが従属カセット内で発見さ
れ得ない場合にのみ、被従属カセットが検索される。照
会されたクラスが従属カセット内で発見され、しかし、
「私的」として保護されている場合、標準的なJava
のクラス保安手段が適用され、被従属カセットはクラス
にアクセスし得ない。したがって、クラスはロードされ
ない。発明の別の実施態様では、「パッケージ」保護を
備えるクラスもまた、自らのカセット外ではアクセス不
可能である。発明の更に別の実施態様では、「保護され
た」保護を備えるクラスは、カセットおよびネーム空間
境界を越えてアクセス可能である。
【0030】発明の本実施態様において、上述の従属関
係は個別のカセットに関連付けられるか、または個別の
カセットと共に記憶される。しかし、別の実施態様で
は、カセットの相互従属性はJAR(Java ARc
hive)ファイルに関連して表される。この別の実施
態様では、カセットはJARファイルを介して移送さ
れ、各JARファイルは1つのカセットのみを含み得
る。したがって、カセットの相互従属性は、本発明につ
いては、JARファイルの相互従属性として表され得
る。
【0031】JARファイルは、Javaアプリケーシ
ョンまたはアプレット(例えば、小規模のJavaアプ
リケーション)、あるいはJavaアプリケーションの
構成要素を移送するために例示的に用いられる。例え
ば、Javaアプレットまたアプリケーションを要求さ
れたクラスファイル、画像ファイル、音声ファイルなど
とJARファイル内に組み合わせることにより、アプレ
ットは、インターネットなどの公共のネットワークにわ
たって移送され得る。これは、ウェブブラウザがウェブ
サーバからアプレットをダウンロードする必要がある場
合に有益であり、それは、例えば、全アプレットが1つ
のHTTP(Hyper Text Transpor
t Protocol)処理においてダウンロードされ
得るためである。JARファイルもまた、その名称が示
唆するように、アーカイブの目的に用いられ得る。
【0032】図1は、発明の実施態様が用いられるプロ
グラム開発環境などの、例示的なプログラム環境を示
す。図1のプログラム環境は、例示的に、一般的な目的
のコンピュータまたは手で持つコンピュータなどの特別
な目的のコンピュータに属する。そのようなデバイス
(例えば、プロセッサ、メモリ、およびデータ記憶装
置)の詳細は周知であるので、明瞭さのために省略され
る。
【0033】示される環境は、JARファイル100、
102、104を含む。JARファイル100、10
2、104は、それぞれ、カセット106、108、1
10を含む。ここで説明される実施態様において、カセ
ットは、共通の機能を有するクラスの集合である。各カ
セットは、1つ以上のサービス(例えば、印刷サービ
ス、クレジットカードプロトコル、税サービス)をアプ
リケーションプログラムおよび/または他のカセットに
提供する。したがって、Javaアプリケーションは一
般的に他のプログラムコードから独立しているが、カセ
ット(1つのアプリケーション内のカセットであって
も)はコード(クラスなどの)を共有し、且つ必要なサ
ービスおよび機能を提供するために別のカセットにしば
しば依存する、という点で、カセットは典型的な完全な
Javaアプリケーションとは異なる。しかし、カセッ
トは、完全なアプリケーションを含み得る。
【0034】示される実施態様において、カセット10
6はJavaパッケージ106a、106bを含み、カ
セット108はJavaパッケージ108a、108b
を含む。Javaパッケージは、カセットまたはJav
aアプリケーション内で用いられる、関連するクラスの
集合である。
【0035】JARファイル100、102、104
は、また、目録120、122、124を含む。JAR
ファイルの目録は、JARファイル内に含まれるカセッ
トおよび任意の他のファイル、またはオブジェクトを識
別し、且つ、含まれるカセットによって維持される任意
の従属関係を識別する。例えば、目録120は、カセッ
ト106がカセット108および110に従属すること
を開示する。加えて、カセット108はカセット112
(図1には示されない)に従属するが、カセット110
は従属関係を有さない。したがって、示される実施態様
では、カセット106の完全な使用は、カセット108
および110がプログラム環境内に利用可能であること
を必要とする。
【0036】目録は、テキストファイルとして例示的に
構築される。発明の本実施態様において、各目録は、目
録を備えた、JARファイル内に記憶されるカセットか
らの従属関係を識別するために、「従属」部分、または
ヘッダを含む。この部分において、またはこのヘッダに
追随して、そのカセットに直接従属するカセットそれぞ
れのファイル名(例えば、パスを含む)が示される。ま
たは、ファイル名の代わりに、従属カセットは、その従
属カセットによって実行されるインターフェースによっ
て識別される。更に、従属カセットが被従属カセットと
共に局在的に記憶されていない場合、本実施態様では、
目録にはUniform Resource Loca
tor(URL)が含まれ、それにより、従属カセット
が獲得され得る場所を識別する。
【0037】したがって、図1は例示的なプログラム環
境を示し(例えば、プログラムの実行時、または開発環
境)、様々なJARファイルの内容物はJavaアプレ
ットまたはアプリケーション内で用いられる。発明の実
施態様によると、カセット106内のクラスは、カセッ
ト108、110、および112に含まれるオブジェク
トおよびクラスにアクセスし得る(カセット112は、
カセット108との従属関係によりアクセスし得る)。
被従属カセットへのアクセスは、その環境における各従
属カセットが、別々のネーム空間において動作する異な
るクラスローダによってロードされていても、許可され
る。しかし、例示的には、従属カセット内のクラス(例
えば、パッケージ108a内のクラス)は、標準的なJ
avaクラス構成にしたがってそのクラスに「私的」と
して保護を与えることにより、カセット106内のクラ
スによるアクセスから保護され得る。
【0038】ここで図2を参照して、例示的な従属関係
グラフが示される。本実施態様に関しては、従属関係グ
ラフは、プログラム環境内において機械読み取り可能フ
ォーマットに記憶される。クラスローダ206、20
8、210、212、および214は、それぞれ、カセ
ット106、108、110、112、および114を
ロードするために示される。各クラスローダは、例示的
に、同一のクラスローダクラスの例(例えば、抽象クラ
スローダクラスまたはシステムクラスローダのサブクラ
ス)であるが、各クラスローダは、クラスを別々のネー
ム空間にロードする。図2において、ネーム空間206
a、208a、210a、212a、および214aは
対応するクラスローダに関連する。
【0039】発明の本実施態様では、カセット106内
のクラスまたはオブジェクトが最初に別のクラスまたは
オブジェクトを照会する場合、それは、そのクラスまた
はオブジェクトをカセット106、108、110、ま
たは112のうちの任意のカセットからアクセスし得
る。つまり、カセット間で従属関係を確立することで、
1つのカセットから執行されているプログラムコード
は、プログラムのソースコードからの明確な許可なし
に、境界を越えてネーム空間に到達し得る。しかし、カ
セット114内のクラスにアクセスする目的にはネーム
空間214aは自動的に進入され得ず、それは、カセッ
ト106の従属関係がカセット114までは網羅してい
ないためである。
【0040】カセットの従属関係の内でクラスを検索す
るために、目録120から従属グラフあるいは従属リス
ト(例えば、図2に示されるように)が構築される。カ
セット106から執行されているプログラムコードがク
ラスを照会する場合、照会されたクラスは、特定の順序
によって検索される。ここで示される実施態様では、照
会されたクラスは、最初に、JVMによって維持される
システムキャッシュ内において検索される。キャッシュ
内に発見されない場合は、クラスが前にロードされてい
ないということであり、したがって、ロードされる前
に、まず発見される必要がある。最初に、デフォルトJ
avaクラス(すなわち、JavaAPIによって提供
されるクラス)で検索される。デフォルトクラス内に発
見されない場合、被従属カセットの従属関係グラフを進
行する反復手順にしたがって、プログラムカセット内ま
たはパッケージ内で検索される。
【0041】図3は、照会しているカセットに関連する
従属関係グラフ内のカセットから、照会されているクラ
スを発見およびロードするための反復手段を示す。段階
300は開始段階である。段階302において、照会し
ているカセットのクラスローダが呼び出され、照会され
ているクラスをロードするよう要求される。段階304
では、照会しているカセットは、そのカセットが従属し
ているカセットがある場合、それを識別する(例えば、
その従属関係グラフを参照して)。示される手順の反復
的性質により、且つ、カセットは1つ以上の他のカセッ
トに従属し得ることにより、クラスローダは、また、照
会されているクラスについて、すでに任意の従属カセッ
トが検索されたかどうかを決定する。後述のように、カ
セットは手順の後半において検索される。
【0042】段階306において、検索されていない従
属カセットのクラスローダが呼び出され、照会されるク
ラスをロードするよう要求される(すなわち、手順は、
従属関係グラフ内のレベルを1つ下降する)。更なる従
属関係を有さない従属カセットに到達するまで、段階3
04および306が繰り返される。
【0043】次いで、段階308において、従属カセッ
トのクラスローダは、照会されているクラスをそのカセ
ット内からロードすることを試みる。例えば、クラスが
カセット内で発見される場合、且つ、「私的」として保
護されていない場合、そのクラスは段階310において
ロードされ、その後、手順は段階316で終了する。
【0044】照会されているクラスが段階308におい
てロードされ得なかった場合、手順は、段階312にお
いて、その手順が、直前に、照会しているカセットから
クラスをロードしようと試みたかどうかを決定する。こ
こで示される実施態様では、照会しているカセットは最
後に検索されるので、そのカセットの検索は検索プロセ
スの最後を示し、照会しているカセットが検索された後
に、段階316で手順は終了する。
【0045】照会しているカセットがまだ検索されてい
ない場合、手順は段階314において、直前に検索され
たカセットが従属するカセットのクラスローダを呼び出
す(すなわち、手順は従属関係グラフにおけるレベルを
1つ上昇する)。手順は、次いで、照会されているクラ
スが発見されロードされるか、照会しているカセットが
検索されるまで、必要に応じて、段階304、306、
308、312、および314を繰り返す。
【0046】当業者は、示される手順の反復的性質の必
要性を認識するであろう。示される手順は、カセット
が、その従属関係を逆の順序で検索されることを可能に
し、且つ、また、1つのカセットが多数の直接従属関係
を有することを可能にする(例えば、図2において、カ
セット106はカセット108および110に直接従属
する)。
【0047】したがって、図2に示される従属関係グラ
フによると、カセット106に関連するクラスローダ
は、カセット106が他の任意のカセットに従属してい
るかどうかを決定する。従属している場合、従属カセッ
トのクラスローダは、被従属カセットのクラスローダが
被従属カセット内を探索する前にクラスを発見し、ロー
ドするよう試みるために呼び出される。したがって、手
順は、従属関係を有さない従属カセット(例えば、カセ
ット112)に遭遇するまで、従属関係グラフを下方に
追随する。一旦クラスローダ212が、カセット112
は従属カセットを有さないと決定すると、照会されてい
るクラスをカセット112からロードすることを試み
る。ロードが成功した場合、クラスはクラスローダ21
2によってロードされ、プログラムは継続する。
【0048】しかし、照会されているクラスがカセット
112において発見されない場合、検索プロセスは、従
属グラフを上昇して進行し、照会されているクラスを各
連続するカセットからロードしようと試みることによ
り、継続する。キャッシュ内にクラスが発見されない場
合にのみ、デフォルトクラスまたはカセット112、1
10、および108の任意のカセットにおいて、カセッ
ト106が検索される。
【0049】示される実施態様において、クラス用Ja
va保安機構が依然有効である。例えば、カセット10
8のパッケージ108aにおけるクラスが「私的」とし
て保護され得(Javaクラス構成シンタックスにした
がって)、その場合、カセット106におけるクラスは
上記クラスにアクセスし得ない。私的保護の意味すると
ころは、クラスが、カセット106、108との間の従
属関係にかかわらず、パッケージ108a内の他のクラ
スによってのみアクセス可能であるということである。
加えて、カセット114はカセット106の従属関係の
連鎖内には存在しないので、カセット106内のクラス
が初めてクラスを照会する場合、カセット114のクラ
スは自動的に検索されないことになる。
【0050】発明の、ここに説明される実施態様の適用
の結果、「パッケージイクリプシング(eclipsi
ng)」の危険性は低減されるか、除去される。パッケ
ージイクリプシングは、2つのクラスローダのネーム空
間が統合されるか、そうでなければ、1つのクラスロー
ダが、他のクラスローダのネーム空間への束縛されない
アクセスを許可されるといった危険な状態である。その
ような状態にある場合、同一名称を有する2つのパッケ
ージ、および前に別々のネーム空間に存在していた2つ
のパッケージは、互いに対して、論理的に近接し得る。
結果として、これらのパッケージのうちの一方における
クラスは、他方のパッケージのネーム空間におけるクラ
スにとってアクセス可能になる。特に、同一名称のパッ
ケージのうちの一方における、「私的」とする保護を割
り当てられていたクラス(且つ、したがって、そのパッ
ケージ内のクラスにとってのみアクセス可能であったク
ラス)は、ここで、他方のパッケージにおけるクラスに
とってもアクセス可能となり、したがって、潜在的に、
深刻な弱さを生じる。
【0051】しかし、示される実施態様では、各クラス
ローダはそのカセット内におけるパッケージをトラック
する。例示的には、各クラスローダはそのカセット内の
全パッケージについてのリストまたはテーブルを記憶す
る。1つのカセットが別のカセットとの従属関係を維持
する場合(したがって、互いのネーム空間を「統合」す
る場合)、且つ他のカセットが、第1のカセット内のパ
ッケージと同一の名称を備えるパッケージを含む場合、
第1のカセットに関連するクラスローダは、自らのカセ
ット内のパッケージのみにアクセスすることにより、パ
ッケージイクリプシングを防ぐ。第1のカセットに関連
するクラスローダは、第2のカセットの、同一名称のパ
ッケージへはアクセスしない。
【0052】発明の実施態様についての上記説明は、例
示および説明のみの目的に提示されてきた。それらは、
本発明を網羅し、発明を、開示された形態に限定するこ
とを意図するものではない。多くの改変および変更が、
当業者には明らかになるであろう。したがって、上記開
示は発明を限定するものではなく、発明の範囲は添付の
請求の範囲によって規定される。
【0053】
【発明の効果】上述したように、本発明によるとネーム
空間境界を越えてクラスに自動的アクセスするクラスロ
ーダが提供される。本発明によると、1つのクラスロー
ダが、選択されたクラスが私的として維持されることを
可能にする間、他のクラスローダによってロードされた
クラスファイルに境界なくアクセスすることを可能に
し、且つ、ネーム空間境界を越えてのアクセスから保護
されるクラスローダアーキテクチャが提供される。
【図面の簡単な説明】
【図1】本発明の実施態様による、例示的なプログラム
環境のブロック図である。
【図2】本発明の実施態様による、図1のプログラム環
境における被従属カセットと多数の従属カセットとの間
の関係を表すブロック図である。
【図3】照会しているカセットに関連する従属関係グラ
フ内のカセットから、照会されているクラスを発見およ
びロードするための反復手段を示すフローチャートであ
る。
【符号の説明】
100、102、104 JARファイル 106、108、110、112 カセット 106a、106b、108a、108b Javaパ
ッケージ 120、122、124 目録 206、208、210、212、214 クラスロー
ダ 206a、208a、210a、212a、214a
ネーム空間
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ダニエル ジェイ. グイナン アメリカ合衆国 カリフォルニア 94403, サン マテオ, ナンバー110, デ アンザ ブールバード 1700 (72)発明者 ローレン エル. ハート アメリカ合衆国 カリフォルニア 95136, サン ホセ, インディゴ ドライブ 4254

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 ネーム空間境界を越えてカセット内のク
    ラスにアクセスする方法であって、 第1のカセットの、第1のクラスローダおよび第1のネ
    ーム空間への関連付けと、 該第1のカセットに従属する第2のカセットの、第2の
    クラスローダおよび第2のネーム空間への関連付けと、 該第2のカセットに従属する全カセットを含む従属グラ
    フの構築と、 特定のクラスに対する、該第2のカセットからの第1の
    照会に応答して、該照会されたクラスの、該第1のカセ
    ットからのロードの試行と、 該照会されたクラスが該第1のカセットからロードされ
    ない場合、該照会されたクラスの、該第2のカセットか
    らのロードの試行と、 を含む、方法。
  2. 【請求項2】 前記第1のカセットが第3のカセットに
    従属し、更に、前記照会されたクラスの、前記第1のカ
    セットからのロードを試行する前に、、該第3のカセッ
    トからの該照会されたクラスへのロードの試行を含む、
    請求項1に記載の方法。
  3. 【請求項3】 保管ファイルの開放と、 前記第2のカセットの、該保管ファイルからの取出と、 を更に含む、請求項1に記載の方法。
  4. 【請求項4】 保管ファイルの開放が、ネットワークを
    越えての該保管ファイルの受取を含む、請求項3に記載
    の方法。
  5. 【請求項5】 前記第2のカセットに関連する目録の受
    取を更に含む、請求項3に記載の方法。
  6. 【請求項6】 前記目録において識別された場所から
    の、前記第1のカセットの取出を更に含む、請求項5に
    記載の方法。
  7. 【請求項7】 異なるクラスローダに関連する、クラス
    の多数の集合を含むプログラムを執行するコンピュータ
    システムであって、 プログラムを執行するためのプロセッサと、 クラスの第1の集合からクラスをロードするための、第
    1のクラスローダと、 クラスの該第1の集合に従属する、クラスの第2の集合
    からクラスをロードするための、第2のクラスローダ
    と、 前記第2のカセットの前記従属を記憶するための、従属
    メモリと、を含み、 クラスの該第2の集合内のクラスによって照会されたク
    ラスが、クラスの該第2の集合において検索される前
    に、クラスの該第1の集合において検索される、 コンピュータシステム。
  8. 【請求項8】 クラスの前記第2の集合の前記従属を識
    別するための目録を更に含む、請求項7に記載のコンピ
    ュータシステム。
  9. 【請求項9】 算出デバイスを動作させる方法であっ
    て、 クラスの第1の組の作成と、 クラスの第2の組の作成と、 クラスの該第2の組の、クラスの該第1の組への従属関
    係の確立と、 該従属関係の記憶と、 クラスの該第1の組の、第1のクラスローダへの関連付
    けと、 クラスの該第2の組の、第2のクラスローダへの関連付
    けと、 特定のクラスに対する、クラスの該第2の組におけるク
    ラスからの第1の照会の受取と、 該従属関係に従って、該特定のクラスの、クラスの該第
    1の組からのロードの試行と、 該特定のクラスが、クラスの該第1の組からロードされ
    ない場合、該特定のクラスの、クラスの該第2の組から
    のロードの試行と、 を含む、方法。
  10. 【請求項10】 プログラムオブジェクトにアクセスす
    る方法を、コンピュータによって執行された場合に、コ
    ンピュータに実行させる命令を記憶する、コンピュータ
    読み取り可能記憶媒体であって、該方法が、 第1のカセットの、第1のクラスローダおよび第1のネ
    ーム空間への関連付けと、 該第1のカセットに従属する第2のカセットの、第2の
    クラスローダおよび第2のネーム空間への関連付けと、 該第2のカセットに従属する全カセットを含む従属グラ
    フの構築と、 特定のクラスに対する、該第2のカセットからの第1の
    照会に応答して、該従属グラフにおける最も遠隔のカセ
    ットの位置づけと、 該照会されたクラスの、該遠隔カセットからのロードの
    試行と、 該照会されたクラスの、該第2のカセットに従属するカ
    セットのうち次に遠隔のカセットからのロードの試行
    と、 を含む、コンピュータ読み取り可能記憶媒体。
  11. 【請求項11】 装置を執行させるプログラムであっ
    て、 クラスの第1の組からクラスをロードするための、第1
    のローダ手段と、 クラスの第2の組からクラスをロードするための、第2
    のローダ手段と、 クラスの該第2の組からクラスの該第1の組への従属を
    識別するための、目録手段と、 クラスの該第2の組からの該従属を記憶する、メモリ手
    段と、を含み、 該第1のローダ手段が、クラスの該第2の組からの特定
    のクラスへの照会に応答して、クラスの該第1の組から
    該特定のクラスのロードを試行する、 プログラム。
  12. 【請求項12】 プログラム命令の集合間におけるアク
    セスを可能にするデータ構造を含む、コンピュータ読み
    取り可能記憶媒体であって、該データ構造が、 目録、およびプログラム命令の第1の集合を含む保管フ
    ァイルを含み、該目録が、プログラムクラスの該第1の
    組の、プログラムクラスの第2の組への従属を識別す
    る、 コンピュータ読み取り可能記憶媒体。
  13. 【請求項13】 前記目録がテキストファイルを含む、
    請求項12に記載の、コンピュータ読み取り可能記憶媒
    体。
JP11174676A 1998-06-30 1999-06-21 クラスロ―ダ Withdrawn JP2000047875A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10791598A 1998-06-30 1998-06-30
US09/107.915 1998-06-30

Publications (1)

Publication Number Publication Date
JP2000047875A true JP2000047875A (ja) 2000-02-18

Family

ID=22319140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11174676A Withdrawn JP2000047875A (ja) 1998-06-30 1999-06-21 クラスロ―ダ

Country Status (3)

Country Link
EP (1) EP0969361A1 (ja)
JP (1) JP2000047875A (ja)
KR (1) KR20000006402A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1300757A1 (en) * 2001-10-02 2003-04-09 Sun Microsystems, Inc. Shareable installation hierarchies
US6985909B2 (en) 2001-12-28 2006-01-10 Sap Ag Modified class loaders and methods of use
FR2888351A1 (fr) * 2005-07-08 2007-01-12 Gemplus Sa Arborescence de chargeurs de classes mappee sur l'arborescence de repertoires
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
CN104317575B (zh) * 2014-09-30 2018-04-13 珠海格力电器股份有限公司 空调器组件的代码文件的封装方法和装置
US9800585B2 (en) 2015-10-21 2017-10-24 Red Hat, Inc. Restricting access by services deployed on an application server
CN106055356A (zh) * 2016-05-25 2016-10-26 东软集团股份有限公司 控制资源访问的方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5023773A (en) * 1988-02-10 1991-06-11 International Business Machines Corporation Authorization for selective program access to data in multiple address spaces
US5280614A (en) * 1990-08-21 1994-01-18 International Business Machines Corporation Apparatus and method for controlling access to data using domains
US5410698A (en) * 1993-10-12 1995-04-25 Intel Corporation Method and system for dynamic loading of software libraries
US5734904A (en) * 1994-11-14 1998-03-31 Microsoft Corporation Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type
JPH09231156A (ja) * 1996-02-28 1997-09-05 Nec Corp プログラム受信機能付遠隔実行装置
US5721824A (en) * 1996-04-19 1998-02-24 Sun Microsystems, Inc. Multiple-package installation with package dependencies

Also Published As

Publication number Publication date
KR20000006402A (ko) 2000-01-25
EP0969361A1 (en) 2000-01-05

Similar Documents

Publication Publication Date Title
US11681535B2 (en) Linking virtualized application namespaces at runtime
US8510734B2 (en) Streaming optimized virtual application images
US8627269B2 (en) Runtime library including a virtual file system
US6876996B2 (en) Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
US7200862B2 (en) Securing uniform resource identifier namespaces
US8078740B2 (en) Running internet applications with low rights
US7107592B2 (en) Method, system, and program for making objects available for access to a client over a network
JP5027807B2 (ja) 信頼される環境をサポートするコンピュータ可読コンポーネントの自動更新
US8112745B2 (en) Apparatus and method for capabilities verification and restriction of managed applications in an execution environment
US20070094673A1 (en) Configuration of Isolated Extensions and Device Drivers
US20150235047A1 (en) Delayed file virtualization
EP3076292B1 (en) System and method of controlling access of a native image of a machine code to operating system resources
US7647629B2 (en) Hosted code runtime protection
US20090164738A1 (en) Process Based Cache-Write Through For Protected Storage In Embedded Devices
US7076557B1 (en) Applying a permission grant set to a call stack during runtime
US20080271002A1 (en) System and method for providing a filtering classloader in a computer environment
US8732811B2 (en) Systems and methods for implementing security services
JP2000047875A (ja) クラスロ―ダ
US20060253858A1 (en) Software service application and method of servicing a software application
US8924963B2 (en) In-process intermediary to create virtual processes
RU2625052C1 (ru) Способ ограничения доступа образа машинного кода к ресурсам операционной системы
US11720374B1 (en) Dynamically overriding a function based on a capability set
WO2023154092A1 (en) Dynamically overriding a function based on a capability set during load time
Miller et al. Using {Content-Derived} Names for Package Management in Tcl
Lam Thuan Thai

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060522

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20060605