Java Classloader
Java Classloader(завантажувач класів) є частиною Java Runtime Environment, що динамічно завантажує Java-класів в Java Virtual Machine. Зазвичай класи завантажуються тільки на вимогу. Завдяки цьому Java не має необхідности мати знання про файли і файлову систему.
У мові Java, бібліотеки, як правило, упаковані у файли Jar. Бібліотеки можуть містити об'єкти різних типів. Найбільш важливим об'єктом являється клас. Java Classloader відповідальний за знаходження бібліотек, прочитання вмісту та завантаження класів що містяться в бібліотеках. Часто завантаження класів здійснюєтья на вимигу.
Процес завантаження класів
Кожен клас Java повинен бути завантажений завантажувачем класів. Коли [[JVM] стартує, три завантажувачі класів використовуються:
Bootstrap завантажувач класів Extensions завантажувач класів System завантажувач класів
Bootstrap завантажувач класів завантажує бібліотеки ядра Java(<JAVA_HOME>/lib директорія). Цей завантажувач класів, є частиною ядра JVM, написаний в придатному для данної оперативної системи коді.
Extensions завантажувач класів завантажує код в директорії <JAVA_HOME>/lib/ext чи в іншій директорії, яка прописана у параметрі java.ext.dirs. Імплементаця в sun.misc.Launcher$ExtClassLoader.
System(системний) завантажувач класів завантажує класи що знаходяться на шлях java.class.path, який мапується CLASSPATH системною змінною. Імплементований класом sun.misc.Launcher$AppClassLoader.