|
Javaクラスローダー(英: Java Classloader)とは、Java仮想マシンの一部で、JavaクラスをJava仮想マシンに動的にロードする役割を持つ 。通常、クラスは必要になったとき初めてロードされる。Javaの実行系は、クラスローダーがあるおかげでファイルやファイルシステムについて知る必要がない。クラスローダについて学習する場合には、この委譲が重要な考え方である。 ソフトウェアのライブラリとは、オブジェクトコードと多かれ少なかれ関連しているが、Java 言語ではライブラリはJarファイルに格納され、様々なオブジェクトを格納することができる。クラスはコードに名前をつけた一つの単位であり、クラスローダはライブラリを見つけて内容をロードし、ライブラリに含まれるクラスをロードする責務を持つ。クラスのロードは「必要に応じて」であり、すなわちクラスがプログラムに実際に必要になるまで行われない。指定された名称のクラスは、あるクラスローダーにたった一度だけしかロードされない。 ==クラスロードのプロセス== 各Javaクラスは、クラスローダーによってロードされなければならない〔 〕。さらに、Javaプログラムは外部ライブラリ(つまり、プログラムの作者とは別の誰かが開発し提供するライブラリ)を利用する可能性もあり、また、それ自身が複数のライブラリで構成されている場合もある。 JVMが開始されると、3つのクラスローダーが使用される〔 〕 〔 〕: # ブートストラップクラスローダー # 拡張クラスローダー # システムクラスローダー ブートストラップクラスローダーは、中核のJavaライブラリをロードする。〔''core.jar''、''server.jar''、''rt.jar''などのJarファイルに格納されている〕 ( ディレクトリ)。このクラスローダーはJavaVMの中心部分であり、ネイティブコードで記述されている。拡張クラスローダーは、拡張ディレクトリ( や、java.ext.dirs プロパティで指定された他のディレクトリ)にあるコードをロードする。これは、sun.misc.Launcher$ExtClassLoader クラスで実装されている。システムクラスローダーは、 java.class.path 、すなわちシステムCLASSPATH 変数にあるクラスをロードする。こちらは、sun.misc.Launcher$AppClassLoader クラスで実装されている。抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Javaクラスローダー」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Java Classloader 」があります。 スポンサード リンク
|