Различия между реализациями Java EE 6 CDI

Я посмотрел на Ссылочную Реализацию Сварки JBOS Контекстов JSR-299 и Внедрение зависимости, и я хотел знать, как другие реализации CDI выдерживают сравнение друг с другом. А именно, я знаю о Сварке, Смола CanDI (Caucho), и Apache OpenWebBeans.

12
задан skaffman 19 August 2010 в 08:48
поделиться

5 ответов

Краткий обзор главных героев:

  • Weld - это RI (есть только один RI), версия 1.0 отсутствует, он встроен в GlassFish v3 и готовящийся к выпуску JBoss AS EE 6, но также может использоваться с другими контейнерами (с некоторыми ограничениями).
  • OpenWebBeans все еще находится в разработке, версия 1.0.0 запланирована на конец апреля 2010 года.
  • Caucho CanDI, похоже, привязан к Resin (здесь я могу ошибаться, но не могу найти любое явное доказательство обратного на их веб-сайте, что в любом случае плохо).

Итак, если бы мне пришлось выбрать одну реализацию во время написания этого, я бы выбрал RI (то есть Weld), потому что он готов и может использоваться «автономно» (готовность не означает, что он широко использовался) .

Если вы ищете сравнение производительности (что еще вы хотели бы сравнить?), Я не думаю, что вы сейчас найдете такой тест.

В любом случае, если вы хотите использовать CDI, просто сделайте это.

10
ответ дан 2 December 2019 в 20:17
поделиться

Я бы сказал обратное;) Но оба проекта - отличные инструменты и поставляются с разными серверами приложений. Ключевым моментом является то, что оба они следуют спецификации Java EE и обеспечивают невероятную гибкость программирования и повторное использование.

0
ответ дан 2 December 2019 в 20:17
поделиться

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

  • Weld должен быть эталонной реализацией, потому что он разрабатывается в тесном сотрудничестве с лидером спецификации - Гэвином Кингом (из JBoss)
  • Лично мне OpenWebBeans нравится больше в силу того, что у него немного чище код, но это не важно при его использовании.
1
ответ дан 2 December 2019 в 20:17
поделиться

На самом деле я уже использую OpenWebBeans в действительно продуктивном правительственном проекте, вместе с полноценной средой EE6 Web Profile. Но я не скажу вам где, чтобы это не попало в slashdot ;) (Кстати, будьте готовы к тому, что большинство частей EE-6, например, интеграция EL-2.2, в настоящее время нуждается в большом количестве мелких исправлений и доработок для запуска - но это действительно выглядит многообещающе!)

На самом деле сообщества Weld и OpenWebBeans довольно часто общаются друг с другом, так что всякий раз, когда мы сталкиваемся с чем-то, не четко изложенным в спецификации, мы оба пытаемся это обсудить. А так как участвующие в работе Caucho парни Ферг и Реза - просто боги java, я уверен, что их реализация тоже очень хороша ;)

Что касается OpenWebBeans: в настоящее время мы готовим релиз Milestone4, который должен выйти на следующей неделе. Openwebbeans-impl aka 'owb-core' практически не имеет зависимостей вообще! Все более "тяжелые" зависимости обрабатываются встраиваемыми плагинами, которые автоматически подхватываются из classpath, если они доступны. Они покрывают определенные части спецификации, когда речь идет о взаимодействии с другими частями EE. Например, есть такие плагины, как openwebbeans-jsf, openwebbeans-jms, openwebbeans-resource (работа с ресурсами EE + JPA) и т.д.

Btw: не пропустите замечательный простой способ написания собственных переносимых! CDI расширений.

Чтобы получить первое представление, вы можете посмотреть на Seam3: anonsvn.jboss.org/repos/seam/modules/ и, конечно же Apache MyFaces CODI: github.com/struberg/myfaces-ext-cdi (скоро будет перенесен в SVN Apache MyFaces)

LieGrue, strub

4
ответ дан 2 December 2019 в 20:17
поделиться

Пока спецификация CDI актуальна, я надеюсь, что функциональных различий между RI не будет. Посмотрите эту статью: Понимание Java EE 6 и CDI

1
ответ дан 2 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: