Я хотел бы реализовать динамическую функцию плагина в приложении Java. В идеале:Реализация динамических плагинов в Java
- Приложение будет определять интерфейс
Plugin
с помощью метода, такого какgetCapabilities()
. - Плагин будет JAR
pluginX.jar
, содержащий классPluginXImpl
, реализующийPlugin
(и, возможно, некоторые другие). - Пользователь вводит
pluginX.jar
в специальный каталог или задает для него параметр конфигурации. Пользователь не обязательно должен включатьpluginX.jar
в свой путь к классам. - Приложение найдет
PluginXImpl
(возможно, через манифест JAR, возможно, отражением) и добавьте его в реестр. - Клиент может получить экземпляр
PluginXImpl
, например, путем вызова метода, такого какgetPluginWithCapabilities("X")
. Пользователь не обязательно должен знать имя плагина.
У меня есть смысл, я должен быть в состоянии сделать это с помощью peaberry, но я не могу понять смысл документации. Я потратил некоторое время на изучение Guice, поэтому мой предпочтительный ответ не будет «использовать Spring Dynamic Modules».
Может ли кто-нибудь дать мне простое представление о том, как это сделать, используя Guice/peaberry, OSGi или просто Java?
Peaberry и Spring DM оба слоя над OSGi. OSGi, похоже, делает то, что вы хотите (концептуально), но будет делать это «OSGi-way» и не будет отображаться на ваш точный процесс, поэтому предложение для Google для некоторых учебных пособий OSGi. – SteveD
OSGi выглядит примерно в сто раз сложнее, чем peaberry. Любые ссылки на хорошие учебные пособия? –