Загрузчики классов Java

Загрузчики классов JavaКомпилятор Java преобразует исходные инструкции в понятный для виртуальной машины Java код. Этот код сохраняется в файле класса с расширением .class. В каждом файле класса содержится код определения и реализации для только одного класса или интерфейса.

Далее все эти файлы классов интерпретируются программой, которая умеет преобразовывать набор инструкций виртуальной машины в машинные команды используемого компьютера.

Учтите, что интерпретатор виртуальной машины загружает только те файлы классов, которые необходимы для выполнения программы в данный момент. Читать

Использование загрузчиков классов в качестве прстранств имен Java

Использование загрузчиков классов в качестве прстранств имен JavaКаждый Java-программист знает, что для исключения вероятности возникновения конфликтов между именами применяются имена пакетов. Например, в стандартной библиотеке Java есть два класса с именем Date, но полностью их имена, конечно же, выглядят как java.util.Date и java.sql.Date.

Короткие имена существуют для удобства программиста и требуют включения соответствующих операторов import. В выполняющейся программе же все имена классов обязательно содержат имена своих пакетов.

Как ни странно, но в рамках одной и той же виртуальной машины могут существовать два разных класса, имеющих одинаковое имя класса и пакета. Дело в том, что класс определяется по его полному имени u загрузчику класса. Такая технология для каждой Web-страницы используются отдельные экземпляры загрузчика классов апплетов. Читать

Иерархия загрузчиков классов Java

Иерархия загрузчиков классов JavaЗагрузчики классов связаны отношениями родитель/потомок. У каждого загрузчика классов, за исключением первичного, имеется родительский загрузчик классов. Предполагается, что загрузчик классов дает шанс своему родителю загружать любой нужный класс и загружает его сам только в том случае, если этого не может сделать родитель. Например, если системный загрузчик классов запрашивает загрузку системного класса(например, java.util.arrayList), то прежде он предлагает загрузить его расширенному загрузчику классов.

Расширенный загрузчик классов, в свою очередь, предлагает сделать это первичному загрузчику классов. Наконец, первичный загрузчик классов находит и загружает класс из файла rt.jar при этом все другие загрузчики классов прекращают дальнейший поиск.

Некоторые программы имеют основанную на подключаемых модулях архитектуру, в которой определенные части кода упаковываются в виде дополнительных необязательных модулей. Если подключаемые модули упаковываются в виде файлов JAR, классы этих модулей могут загружаться просто с помощью экземпляра URLClassLoader: Читать