Что такое загрузчики классов в Java? - PullRequest
6 голосов
/ 05 февраля 2011

Когда клиент говорит «В Java не должно быть пользовательских загрузчиков классов», что это означает?Что я не могу сделать?

Ответы [ 4 ]

12 голосов
/ 05 февраля 2011

A загрузчик классов - это объект в Java, отвечающий за поиск двоичных представлений классов Java и загрузку их в JVM.Все JVM начинаются с загрузчика загрузочного класса, отвечающего за загрузку начального класса пользователя, наряду с некоторыми встроенными типами, такими как Class и SecurityManager, но пользователи могут предоставлять свои собственные загрузчики классов для поиска классов из других источников.Например, пользовательский загрузчик классов может генерировать свои собственные классы путем составления своего собственного байт-кода или он может находить классы из сетевого источника.

Чтобы соответствовать тому, что запрашивает ваш клиент, вы не должны определять свой собственный классloader и должен полагаться на загрузчик классов загрузки, чтобы найти все ваши классы.Это почти универсально, что делается в простых программах Java, потому что сценарии использования для пользовательских загрузчиков обычно довольно сложны и нюансированы.Вам не нужно беспокоиться об этом ограничении, если вы специально не хотите изменить способ, которым JVM находит и загружает классы.

1 голос
/ 05 февраля 2011

Пользовательские загрузчики классов обычно используются для динамического генерирования кода или для улучшения существующих классов.

Например, некоторые реализации ORM (JDO) используют это для создания кода, который обрабатывает перевод объектов Java в таблицы базы данных.Другое применение - решения с прозрачной кластеризацией (например, Terracota), в которых объекты улучшаются, так что они автоматически реплицируются в кластере.

Это в основном не позволяет динамически генерировать и внедрять код в существующее приложение.

0 голосов
/ 05 февраля 2011

Пользовательский загрузчик классов позволит вам загружать классы из нетрадиционных источников (из любого места, которое вы можете себе представить, в том числе из ниоткуда, т.е. созданного на лету). Поскольку ваш клиент говорит, что передает это сообщение, классы могут быть загружены только из стандартных источников (например, файловая система, файлы JAR и т. Д.).

0 голосов
/ 05 февраля 2011

Загрузчик классов - это объект, который отвечает за загрузку классов. Всякий раз, когда вы создаете экземпляр класса, используя new, система времени выполнения пытается загрузить класс, используя один или несколько экземпляров абстрактного класса ClassLoader. Вы можете определить пользовательские загрузчики классов для загрузки классов из сети, баз данных, других процессов или любого возможного источника данных.

Итак, если ваш клиент не хочет, чтобы вы использовали пользовательские загрузчики классов, то никогда не пишите класс, расширяющий ClassLoader или какой-либо из его производных. Пожалуйста, смотрите документацию ClassLoader Java API для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...