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.
Зовнішні посилання
- Chuck Mcmanis, "The basics of Java class loaders", 1996
- Brandon E. Taylor, "Java Class Loading: The Basics", 2003
- Jeff Hanson, "Take Control of Class Loading in Java", 2006-06-01
- Andreas Schaefer, "Inside Class Loaders", 2003-11-12
- Sheng Liang and Gilad Bracha, "Dynamic class loading in the Java virtual machine", In Proceedings of the 13th ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'98), ACM SIGPLAN Notices, vol. 33, no. 10, ACM Press, 1998, pp. 36–44
- Dr. Christoph G. Jung, "Classloaders Revisited Hotdeploy", Java Specialist Newsletter, 2001-06-07
- Don Schwarz, "Managing Component Dependencies Using ClassLoaders", 2005-04-13