Java类加载器
Java 類別載入器（英語：Java Classloader）是 Java 執行時環境（Java Runtime Environment）的一個部件，負責動態載入 Java 類別到 Java 虛擬機器的記憶體空間中。類別通常是按需載入，即第一次使用該類別時才載入。由於有了類別載入器，Java 執行時系統不需要知道檔案與檔案系統。對學習類別載入器而言，掌握 Java 的委派概念是很重要的。 
每個 Java 類別必須由某個類別載入器裝入到記憶體。Java 程式可以通過類別載入器來利用外部庫（即由其他作者編寫的軟體庫）。
JVM 中有 3 個預設的類別載入器：
引導（Bootstrap）類別載入器。由原生代碼（如 C 語言）編寫，不繼承自 java.lang.ClassLoader。負責載入核心 Java 庫，儲存在 <JAVA_HOME>/jre/lib 目錄中。
擴充（Extensions）類別載入器。用來在 <JAVA_HOME>/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 實現。每個類別裝載器通過組合的方式包含一個父裝載器（parent class loader）。
JDK 1.2 之後引入「雙親委派」方式來實現類別載入器的層次呼叫，以儘可能保證 JDK 的系統 API 不會被使用者定義的類別載入器所破壞，但一些使用場景會打破這個慣例來實現必要的功能。