Лучшая технология для добавления поддержки плагинов в приложение J2SE?[закрыто]

StackOverflow https://stackoverflow.com/questions/81495

Вопрос

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

Какая технология лучше всего подходит для выполнения подобных действий в настольном Java-приложении?

Это было полезно?

Решение

После многих попыток найти Java-архитектуры на основе плагинов (это именно то, что вы, кажется, ищете), я, наконец, нашел JSPF чтобы быть лучшим решением для кода Java5.у него нет таких огромных потребностей, как у OSGI-подобных решений, но вместо этого он довольно прост в использовании.

Другие советы

OSGI, безусловно, правильный путь.Но, предполагая, что вам не нужно выгружать плагин для перезагрузки, это может быть использование молотка для раскалывания орехов.

Вы могли бы использовать классы в 'java.util.jar' для сканирования каждого файла JAR в вашей папке плагинов, а затем использовать 'java.net.URLClassLoader' для загрузки правильного файла.

Если вам "просто" нужен подключаемый компонент, достаточно просто создать экземпляр классов на основе метаинформации, напримерпрочитайте через classloaders META-INF / information из различных jar, которые находятся в вашем classpath или в определенном каталоге плагинов.

OSGi, с другой стороны, предоставляет средства для структурирования всего вашего приложения.Если у вас уже есть большое настольное приложение, для которого требуется подключаемая часть, это будет непростой путь обучения.Если вы начнете с того, что будет настольным приложением, OSGi предоставит средства для модульизации всего приложения.Речь идет об "изоляции компонентов" и независимости модулей.

Apache Felix обеспечивает хорошее начало, если вы хотите пойти по пути OSGi.Это может показаться сложным и тяжеловесным, но это только потому, что человек не привык к такому уровню изоляции между модулями.Раньше было так просто просто вызвать любой открытый метод...

Думали ли вы об использовании OSGi в качестве фреймворка плагинов?С OSGi вы можете обновлять / заменять, загружать или выгружать свои модули по требованию.

Один из подходов, который я рассматриваю, заключается в запуске моим приложением легкого контейнера OSGi, который, если я правильно понимаю, сможет обнаружить, какие файлы JAR плагина существуют в указанной папке, что, в свою очередь, позволит мне перечислить их для выбора пользователем.Возможно ли это?

Я также нашел эта статья Ричардом Дэдманом, но он выглядит немного устаревшим (2006?) и не упоминает ни OSGi (по крайней мере, не по имени), ни java.util.jar упаковка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top