類加載器是 Java 語言的一個創新,也是 Java 語言流行的重要原因之一。它使得 Java 類可以被動態加載到 Java 虛擬機中並執行。類加載器從 JDK 1.0 就出現了,最初是爲了滿足 Java Applet 的需要而開發出來的。Java Applet 需要從遠程下載 Java 類文件到瀏覽器中並執行。現在類加載器在 Web 容器和 OSGi 中得到了廣泛的使用。一般來說,Java 應用的開發人員不需要直接同類加載器進行交互。Java 虛擬機默認的行爲就已經足夠滿足大多數情況的需求了。
Java虛擬機中可以安裝多個類加載器,系統默認三個主要類加載器,每個負責加載特定位置的類:BootStrap、ExtClassLoader、AppClassLoader。
BootStrap負責:JRE/lib/rt.jar,ExtClassLoader負責:JRE/lib/ext/*.jar,AppClassLoader負責ClassPath指定的所有jar或者目錄。
類加載器本身也是一個Java類,因爲其他Java類的加載器本身也要被類加載器加載,顯然必須有一個類加載器不是Java類,這正是BootStrap。
Java虛擬機中的所有類加載器採用具有父子關係的樹形結構進行組織,在實例化每個類加載器對象時,需要爲其指定一個父級類加載器對象或者採用系統類加載器爲其父級類加載器。