我查看了 JBoss 的 JSR-299 上下文和依赖注入的焊接参考实现,我想知道其他 CDI 实现之间的比较。具体来说,我了解 Weld、Resin CanDI(由 Caucho 编写)和 Apache OpenWebBeans。
5 回答
主角速览:
- Weld 是RI(只有一个 RI),1.0 版已经发布,它内置在 GlassFish v3 和即将推出的 JBoss AS EE 6 中,但也可以与其他容器一起使用(有一些限制)。
- OpenWebBeans 仍在开发中,1.0.0 版计划于 2010 年 4 月底发布。
- Caucho CanDI 似乎与 Resin 相关(我可能在这里错了,但我在他们的网站上找不到任何明确的相反证据,反正这很糟糕)。
因此,如果我在撰写本文时必须选择一种实现,我会选择 RI(即 Weld),因为它已经准备好并且可以“独立”使用(准备好并不意味着它已被广泛使用)。
如果您正在寻找一些性能比较(您还想比较什么?),我认为您现在找不到这样的基准。
无论如何,如果你想使用 CDI,那就去做吧。
实际上,我已经在一个真正的生产政府项目中使用了 OpenWebBeans,以及一个成熟的 EE6 Web Profile 环境。但我不会告诉你在哪里,所以它不能被斜线;)(顺便说一句,准备好大多数 EE-6 部分,例如 EL-2.2 集成目前需要很多小补丁和调整才能开始运行 -但它看起来真的很有希望!)
事实上,Weld 和 OpenWebBeans 社区经常相互交流,所以每当我们遇到规范中没有明确规定的问题时,我们都会尝试讨论这些问题。而且由于涉及的 Caucho 人 Ferg 和 Reza 都被简单地称为 java 之神,我敢打赌他们的实现也非常好;)
至于 OpenWebBeans:我们目前正在准备一个 Milestone4 版本,该版本应该会在下周发布。openwebbeans-impl aka '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,斯特鲁布
只要涉及到 CDI 规范,我希望 RI 之间不会有任何功能差异。查看这篇文章:了解 Java EE 6 和 CDI
目前他们没有比较。我怀疑它们中的任何一个都已用于生产,它们太新鲜了。
- Weld 应该是参考实现,因为它是在与规范负责人 Gavin King(来自 JBoss)密切合作下开发的
- 就个人而言,我更喜欢 OpenWebBeans,因为它有更简洁的代码,但这在使用它时并不重要。
我会说相反;)但是这两个项目都是出色的工具,并且提供了不同的应用程序服务器。关键是两者都遵循 Java EE 规范,并在编程灵活性和重用方面提供了令人难以置信的强大功能。