Java EE 6 CDI实现之间的差异

时间:2010-02-16 02:58:28

标签: java-ee java-ee-6 resin cdi jboss-weld

我看过JBoss的JSR-299上下文和依赖注入的焊接参考实现,我想知道其他CDI实现如何相互比较。 具体来说,我了解Weld,Resin CanDI(由Caucho)和Apache OpenWebBeans。

5 个答案:

答案 0 :(得分:10)

主角的快速概述:

  • Weld RI(只有一个RI),版本1.0已经用完,它内置于GlassFish v3和即将推出的JBoss AS EE 6中,但也可以与{{3}一起使用(有一些限制)。
  • OpenWebBeans仍在开发中,版本1.0.0 计划于2010年4月底。
  • Caucho CanDI似乎与Resin有关(我可能在这里错了,但我在他们的网站上找不到相反的明确证据,无论如何这都是坏事。)

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

如果你正在寻找一些性能比较(你还想比较什么?),我认为你现在不会找到这样的基准。

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

答案 1 :(得分:4)

实际上,我已经在一个真正的生产政府项目中使用OpenWebBeans,以及完整的EE6 Web Profile环境。但是我不会告诉你哪里,所以它不能被删除;)(顺便说一句,准备大多数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

答案 2 :(得分:1)

目前他们没有比较。我怀疑它们中的任何一种都已用于生产,它们太新鲜了。

  • Weld应该是 参考实现,因为它是与规范领导者Gavin King(来自JBoss)密切合作开发的。
  • 就个人而言,我更喜欢使用OpenWebBeans代码,但是使用它时并不重要。

答案 3 :(得分:1)

只要关注CDI规范,我希望RI之间没有任何功能差异。 查看此文章:Understanding Java EE 6 and CDI

答案 4 :(得分:0)

我会说相反;)但这两个项目都是出色的工具,并提供不同的应用程序服务器。关键是两者都遵循Java EE规范,并在编程灵活性和重用方面提供了令人难以置信的能力。