ClassLoader - luk6233/interview GitHub Wiki
- Bootstrap ClassLoader – вершина иерархии ClassLoader’ов. Загружает классы ядра Core Java.
- Extension ClassLoader – загружает библиотеки из lib/ext. Наследуется от Bootstrap.
- System ClassLoader – загружает классы из classpath. Наследуется от Extension.
Class loader’ы спрашивают у родительского loader’а есть ли у него данный класс. И только, если родитель у себя этот класс не обнаружит, class loader пытается загрузить класс самостоятельно. То есть, происходит следующее:
System Class loader пробует загрузить класс, используя Extension Class loader.
Extension Class loader “просит” Bootstrap загрузить класс.
Bootstrap не может загрузить класс, ведь ему видны только Core классы. А искомый класс лежит в библиотеке из lib/ext.
Extension Class loader пытается загрузить класс. Если ему это удается, то он возвращает класс в System Class Loader.
System Class loader не пытается что-либо загружать. Класс уже найден.