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