Различия между реализациями CDI в Java EE 6 - PullRequest
12 голосов
/ 16 февраля 2010

Я посмотрел справочную реализацию JBoss по сварке контекстов и внедрений зависимостей JSR-299 и хотел узнать, как другие реализации CDI сравниваются друг с другом. В частности, я знаю о Weld, Resin CanDI (от Caucho) и Apache OpenWebBeans.

Ответы [ 5 ]

10 голосов
/ 16 февраля 2010

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

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

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

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

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

4 голосов
/ 26 февраля 2010

На самом деле я уже использую OpenWebBeans в действительно продуктивном правительственном проекте вместе с полноценной средой EE6 Web Profile.Но я не скажу вам, где, так что это не может быть косой чертой;) (Кстати, будьте готовы, что большинство компонентов 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) и т. Д.

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

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

LieGrue, strub

1 голос
/ 29 мая 2010

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

1 голос
/ 16 февраля 2010

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

  • Предполагается, что Weld будет эталонной реализацией , потому что он разрабатывается в тесном сотрудничестве сведущий специалист - Гэвин Кинг (из JBoss)
  • лично, мне больше нравится OpenWebBeans из-за немного чище кода, но это не важно при его использовании.
0 голосов
/ 17 февраля 2010

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

...