Основы динамической загрузки классов в Java
Динамическая загрузка классов в Java имеет ряд особенностей:
- отложенная (lazy) загрузка и связывание классов
Загрузка классов производится только при необходимости, что позволяет экономить ресурсы и распределять нагрузку. - проверка корректности загружаемого кода (type safeness)
Все действия, связанные с контролем использования типов, производятся только во время загрузки класса, позволяя избежать дополнительной нагрузки во время выполнения кода. - программируемая загрузка
Пользовательский загрузчик полностью контроллирует процесс получения запрошенного класса—самому ли искать байт-код и создавать класс или делегировать создание другому загрузчику. Дополнительно существует возможность выставлять различные атрибуты безопасности для загружаемых классов, позволяя таким образом работать с кодом из ненадежных источников. - множественные пространства имен
Каждый загрузчик имеет своё пространство имён для создаваемых классов. Соответственно, классы, созданные двумя различными загрузчиками на основе общего байт-кода, в системе будут различаться.

