ClassLoader — это фундаментальный механизм Java, отвечающий за загрузку классов в память во время выполнения программы. Он извлекает файлы классов из разных источников — файловой системы, сетевых ресурсов или JAR-файлов — и загружает их в JVM.
Java использует иерархическую архитектуру ClassLoader'ов с тремя основными типами:
Bootstrap ClassLoader: родительский ClassLoader, который загружает основные классы Java из rt.jar. Он предоставляет базовые классы рантайма: java.lang.Object, java.lang.String и подобные.
Extension ClassLoader: загружает классы из директории jre/lib/ext. Этот ClassLoader работает с опциональными пакетами и расширениями, которые дополняют базовый функционал Java.
Application ClassLoader: загружает пользовательские классы и сторонние библиотеки на основе переменной окружения CLASSPATH. Он находит и загружает любые JAR-файлы или файлы классов, которые ты явно указал в CLASSPATH.
Эти ClassLoader'ы выстроены в иерархию родитель–потомок и работают по модели делегирования:
Такой иерархический подход гарантирует, что базовые классы Java загружаются первыми, предотвращая конфликты и обеспечивая безопасность и стабильность JVM.
Bootstrap ClassLoader загружает классы из директории jre/lib/ext и отвечает за загрузку опциональных расширений Java.
Новый — ещё не проверен сообществом
Вы