Java plugin framework choice [закрыто]



мы пытаемся определить, как реализовать простую платформу плагинов для сервиса, который мы реализуем, что позволяет различным типам калькуляторов быть "подключенными".



после прочтения ряда сообщений о Java plugin Framework, кажется, что наиболее распространенными вариантами являются:




OSGI, кажется, больше, чем нам нужно.



"Rolling your own" - это нормально, но было бы неплохо использовать общую библиотеку.



Итак, мы дошли до JPF и JSPF. JPF, похоже, больше не находится в активном развитии.



JSPF кажется очень простым и действительно все, что нам нужно. Однако я мало что слышал об этом. Я видел только один пост на StackOverflow об этом. У кого-нибудь есть опыт работы с JSPF? Или любые другие комментарии на этом выборе дизайна?





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

435   3  

3 ответов:

Если вы планируете иметь только одну (или только несколько) не очень сложные "точки расширения", чем, возможно, хорошо определенный SPI и часть конфигурации может быть достаточно. Нет необходимости использовать плагин рамки.

по части конфигурации я имею в виду какой-то механизм, чтобы найти ваши плагины. Например что-то вроде META-INF/services/ или просто перечислите свои плагины в файле конфигурации.

подробнее (по запросу):

SPI = сервис Интерфейс Провайдера, "эквивалент API на стороне разработчика". Чтобы узнать больше, попробуйте найти разницу между API и SPI. Однако в этом контексте это просто причудливый термин для интерфейса, который будет реализован вашими плагинами (т. е. определяет контракт для ваших плагинов).

хорошая, короткая статья "создание интерфейса поставщика услуг" Итан Николас описывает, как создать свой собственный SPI таким же образом, как это делается в нескольких частях Java Сама платформа.

META-INF/services/ можно рассматривать как более обобщенный подход к созданию Сио. Более подробную информацию можно найти в соответствующем разделе спецификация файла JAR.

(отказ от ответственности: я являюсь автором JSPF, поэтому лучше взять мой комментарий с солью; -)

основная причина, по которой я начал с JSPF, заключалась в том, что у меня была та же проблема, что и у вас сейчас: я искал простое решение, чтобы сделать мой тезис-проект 1) расширяемым и 2) дать ему более или менее четкую структуру кода.

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

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

Я думаю, что вы могли бы дать jspf выстрел и посмотреть, как далеко вы пришли в течение одного или двух часов.

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

Я слышал положительные результаты от ряда людей, которые использовали его для структурирования своих проектов или загрузки плагинов в своих проектах. С другой стороны, я также знаю одного человека в нашем отделе, который снова отказался от него, потому что он не чувствовал, что это хорошо сочетается с его стилем программирования.

Итак, чтобы ответить на ваш вопрос кратко (и, конечно, предвзято), я бы использовал

OSGi для проектов и команд

  • которые большие и имеют много людей, работающих на нем
  • что оправдывает накладные расходы на создание инфраструктуры
  • при необходимости конкретных услуг, предлагаемых

JPF для проектов и команд

  • среднего размера (?, честно говоря, я не уверен в размере проекта / команды, на который они нацелены)
  • что нуждаются в более структурированных средствах для организации своего кода, таких как конфигурации XML, подробное управление жизненным циклом плагинов, расширяемые Плагины ...

JSPF для проектов и команд

  • небольшого размера, после agile парадигма
  • что нужно что-то что работает из коробки, без необходимости конфигурации или установки
  • готовы пожертвовать некоторыми функциями для простота

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

Если вам нужно простое решение, попробовать jin-plugin. Это минималистичный плагин для Java и PHP.

Comments

    Ничего не найдено.