Java類載入器

Java類載入器(Java Classloader)是Java運行時環境(Java Runtime Environment)的一部分,負責動態載入Java類到Java虛擬機的記憶體空間中。

基本信息

簡介

Java類載入器(英語:Java Classloader)是Java運行時環境(Java Runtime Environment)的一部分,負責動態載入Java類到Java虛擬機的記憶體空間中。類通常是按需載入,即第一次使用該類時才載入。由於有了類載入器,Java運行時系統不需要知道檔案與檔案系統。學習類載入器時,掌握Java的委派概念很重要。

每個Java類必須由某個類載入器裝入到記憶體。Java程式可以利用外部庫(即由其他作者編寫的軟體庫)。

JVM中有3個默認的類載入器:

引導(Bootstrap)類載入器。由原生代碼(如C語言)編寫,不繼承自java.lang.ClassLoader。負責載入核心Java庫,存儲在/jre/lib目錄中。

擴展(Extensions)類載入器。用來在/jre/lib/ext,或java.ext.dirs中指明的目錄中載入 Java的擴展庫。Java 虛擬機的實現會提供一個擴展庫目錄。該類載入器在此目錄裡面查找並載入 Java 類。該類由sun.misc.Launcher$ExtClassLoader實現。

Apps類載入器(也稱系統類載入器)。根據 Java應用程式的類路徑(java.class.path或CLASSPATH環境變數)來載入 Java 類。一般來說,Java 套用的類都是由它來完成載入的。可以通過 ClassLoader.getSystemClassLoader()來獲取它。該類由sun.misc.Launcher$AppClassLoader實現。

1.

引導(Bootstrap)類載入器。由原生代碼(如C語言)編寫,不繼承自java.lang.ClassLoader。負責載入核心Java庫,存儲在/jre/lib目錄中。

2.

擴展(Extensions)類載入器。用來在/jre/lib/ext,或java.ext.dirs中指明的目錄中載入 Java的擴展庫。Java 虛擬機的實現會提供一個擴展庫目錄。該類載入器在此目錄裡面查找並載入 Java 類。該類由sun.misc.Launcher$ExtClassLoader實現。

3.

Apps類載入器(也稱系統類載入器)。根據 Java應用程式的類路徑(java.class.path或CLASSPATH環境變數)來載入 Java 類。一般來說,Java 套用的類都是由它來完成載入的。可以通過 ClassLoader.getSystemClassLoader()來獲取它。該類由sun.misc.Launcher$AppClassLoader實現。

每個類裝載器有一個父裝載器(parent class loader)。

User-defined class loaders

可以通過繼承java.lang.ClassLoader類的方式實現自己的類載入器,以滿足一些特殊的需求而不需要完全了解Java虛擬機的類載入的細節。

可用於:

•運行時裝載或卸載類。這常用於:

•實現腳本語言

•用於bean生成器

•允許用戶定義的擴展性

•允許名字空間之間的通信。這是CORBA/RMI協定的基礎。

•改變Java位元組碼的裝入,例如,可用於Java類位元組碼的加密裝入。)

•修改已裝入的位元組碼weavingof aspects when usingaspect-oriented programming)。

JEE的類裝載

Java EE(JEE)應用程式伺服器典型地用樹狀的一組類裝載器從已部署的WAR或EAR文檔中裝入類。這使得應用程式之間彼此隔離,但共享已部署模組。servlet container一般被實現為多個類裝載器。

Java運行環境

Java運行環境(Java Runtime Environment,簡稱JRE)是一個軟體,由太陽微系統所研發,JRE可以讓計算機系統運行Java應用程式(Java Application)。

JRE的內部有一個Java虛擬機(Java Virtual Machine,JVM)以及一些標準的類別函式館(Class Library)。

相關詞條

相關搜尋

熱門詞條

聯絡我們