Java EE 6 CDI实现的差异

12

我查看了JBoss Weld对JSR-299上下文和依赖注入的参考实现,并想了解其他CDI实现之间的比较。具体来说,我知道有Weld、Resin CanDI(由Caucho提供)和Apache OpenWebBeans。

5个回答

10

主要实现方案的快速概述:

  • Weld是唯一的RI(只有一个RI),版本1.0已发布,它集成在GlassFish v3和即将发布的JBoss AS EE 6中,但也可以与其他容器(具有某些限制)一起使用。
  • OpenWebBeans仍在开发中,计划于2010年4月底发布版本1.0.0。
  • Caucho CanDI似乎与Resin绑定(我可能说错了,但我在他们的网站上没有找到任何明确相反的证据,这很糟糕)。

因此,在撰写本文时,如果我必须选择一种实现方案,我会选择RI(即Weld),因为它已经准备好可以“独立”使用(准备好并不意味着它已经被广泛使用)。

如果你正在寻找性能比较(还想比���什么?),我认为目前你不会找到这样的基准测试。

无论如何,如果你想使用CDI,就去使用吧。


现在 OWB 和 WELD 都有些成熟了,你对它们的看法是什么?我听说 OWB 更快?你认为呢? - Thang Pham
是的,OWB更快。有一些基准测试结果可以证明。此外,它也更具可扩展性。 - Dar Whi

4
实际上,我已经在一个政府项目中使用OpenWebBeans,和完整的EE6 Web Profile环境一起使用。但是我不会告诉你在哪里使用,这样就不会被Slashdot提及 ;) (顺便说一下,要准备好,大部分EE-6的部分,例如EL-2.2集成,目前需要很多小的补丁和调整才能运行 - 但它看起来确实很有前途!)
事实上,Weld和OpenWebBeans社区彼此之间沟通得非常频繁,所以每当我们遇到规范中没有明确说明的东西时,我们都会尝试讨论解决方案。由于涉及到的Caucho公司的Ferg和Reza都是Java大神,我敢打赌他们的实现也非常好 ;)
至于OpenWebBeans:我们目前正在准备发布Milestone4版本,预计下周发布。 openwebbeans-impl或'owb-core'几乎没有任何依赖关系! 所有“较重”的依赖项都由插件处理,如果可用,则会自动从类路径中选择并使用。它们涵盖了与其他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

现在 OWB 和 WELD 都有些成熟了,你对它们的看法是什么?我听说 OWB 更快?你认为呢? - Thang Pham
一个小更新。Apache MyFaces CODI 在此期间已经达到了1.0.0版本。更多信息可以在官方网站上找到:http://myfaces.apache.org/extensions/cdi/index.html - struberg

1

目前它们并没有可比性。我怀疑它们中的任何一个都没有在生产中使用过,它们还太新了。

  • Weld被认为是“参考实现”,因为它与规范负责人Gavin King(来自JBoss)密切合作开发。
  • 就个人而言,我更喜欢OpenWebBeans,因为它的代码更清晰一些,但在使用时这并不重要。

1

就CDI规范而言,我希望RI之间不会有任何功能上的差异。 请查看此文章:了解Java EE 6和CDI


0
我会说相反的观点 ;) 但两个项目都是优秀的工具,并且提供了不同的应用服务器。关键在于它们都遵循Java EE规范,并在编程灵活性和重用方面提供了令人难以置信的强大功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接