Seam现在怎么样?

发布者    |       CDI Seam
2011年9月28日:更新

我们感谢大家在Twitter、IRC和评论部分提出的意见。有一些非常出色的关注点被提出,而且,信不信由你,这些同样的原因正是我们想要做出在这里讨论的变革的核心。我们和社区提出的问题完全一致。

我们想就以下几点向大家保证

  • 我们坚信,人们采用Seam 1和Seam 2的一个重要原因是对如何构建真正的应用有着强烈的关注。我们清楚地意识到Seam 3没有提供这一点,我们想要专注于提供这一点
  • 我们仍然相信可移植性和标准,我们想要把我们在构建可移植标准和应用方面的知识从Seam孤岛中提取出来,并将其应用到整个Java EE生态系统中。我们将继续标准化我们认为必要的API和想法
  • 我们热爱Seam社区以及他们的热情,我们想要将这个社区融入Java EE社区的核心,这是它应该属于的地方
  • 我们将确保使用Seam 3.x构建的应用将继续运行。我们将继续支持任何想要构建CDI扩展的人

然而,我们犯了一个错误。我们告诉了你们我们认为处理这个问题的正确结果。我们没有告诉你们为什么我们想要这样做,以及它是如何支持这些目标的。我们不想现在就带着半成品的立场跳进来,再次犯这样的错误。所以我们请求你们给我们一些信任,相信我们确实把社区的最好利益放在心上,并在这接下来的几天里关注整个情况。


我想花点时间向大家更新一下Seam项目内部正在发生的事情,并澄清一些已经开始流传的谣言,以免它们失控(这些事情究竟是如何开始的呢???)。正如你们中的一些人所知,我们最近在加拿大多伦多举办了一次JBoss面对面会议,除了喝大量的酒、熬夜编码并讨论重要的事情,如政治和有趣的YouTube视频外,我们还就Seam项目的整体方向和重点做出了一些重要决定。

多年来,Seam经历了相当大的发展——如果你要核心团队成员总结一下Seam是什么,那么答案每年都会变化。最初,Seam旨在解决使用JSF和EJB开发应用的一些不足(不幸的是,这种印象一直持续到如今)。它迅速成长为一个强大的DI组件框架,随着时间的推移,越来越多的功能被添加进来。它催生了众多创新和姊妹项目——CDI、Weld和Arquillian等。我也很自豪地说,Seam现在正成功地为许多、许多生产网站和丰富的互联网应用提供动力。

那么,我们现在处于什么阶段呢?2011年下半年,Seam的焦点是什么,它设定了什么目标?好吧,让我们先看看它已经实现的目标。Seam的核心特性——依赖注入、上下文组件模型、事件总线、拦截器等,已被标准化为JSR-299(CDI)。由于这现在是Java EE规范的一部分,并且任何符合Java EE6容器都提供标准支持,我们现在有一个非常棒的基础来构建。然而,这只是基础——作为一个经验丰富的家庭装修者,我知道基础是构建结构最重要的部分,然而,仅有基础并不能给你一个住的地方——你还需要在上面建造一座房子。

这就是Seam发挥作用的地方。它通过提供必要的工具和材料来帮助你,开发者,在基于CDI的基础之上建造一座房子。它是通过集成各种有用的库——对于日常应用开发很重要的库——与CDI组件模型相结合来实现的,这样你就可以写出“一种类型的东西”,借用Gavin多年前提出的一个词。

但Seam 3的目标不是已经实现了吗?

是的,是的,它已经实现了。但最近我们得出结论,Seam项目不应该是目的地,而应该是一次旅程。哦,多么禅意啊……但这意味着什么呢?好吧,让我来解释一下——Seam的目标是支持CDI生态系统,并促进“CDI无处不在”。为什么?因为,如果我们都在基于相同标准化的组件模型上构建我们的工具和库,那么在开发我们的丰富互联网应用时,我们都会更加高效。因此,从这个目标来看,Seam不应该只是收获果实——而应该播种种子。换句话说,我们认为Seam中目前有许多模块,如果它们被放置在一个更“接近家”的地方,会更有意义。

让我们来看一个具体的例子——Seam Persistence模块。此模块提供了一个扩展管理的持久化上下文,这对于需要在POJO bean中注入EntityManager或持久化上下文需要比单个请求更长时间的项目来说非常有用。我们认为这些特性对于日常应用程序开发至关重要。但是,鉴于加强CDI生态系统的目标,这些特性真的属于Seam吗?在JBoss,我们还有一个处理EntityManagers、持久化上下文和其他数据库相关内容的知名项目——也许你甚至听说过它(我可以给你一个提示,它以H开头)。

因此,我们不应该像捕捉宝可梦一样让Seam试图在同一个地方捕获所有的CDI扩展,而是应该努力在整个更广泛的开发者社区中传播它们。为此,我们的重点将有所转移,我们已经制定了一些具体的计划来实现这一目标。以下是我们提出的几个变化:

  • Seam Persistence - 移入Hibernate核心项目,重新命名为Hibernate CDI
  • Seam Validation - 移入Hibernate Validator,使CDI支持成为核心产品的一部分
  • Seam Wicket - 移入Wicket项目本身,这一过程已经开始
  • Seam REST - 移入RESTEasy项目
  • Seam Faces - 移入RichFaces作为一个独立的Faces CDI集成库

作为Seam社区的一员,你们可能担心这些变化可能会使Seam项目或社区本身分裂。我想提前解决这个问题,并说我们的目标正好相反。我们的目标是扩大现有的社区,通过与其他项目更紧密的合作来实现共同的目标。目前的模块负责人将保持不变,但他们将与其他项目负责人一起合作,直接从他们的项目中提供本机CDI支持。这种合作的结果只会带来积极的好处,因为项目对自己的CDI集成承担更多责任,并更紧密地与Seam开发者社区合作,利用我们构建CDI扩展的经验。

Seam在这个新世界中的角色

因此,虽然一些模块可能从Seam毕业,成为更广泛的CDI生态系统的组成部分,但Seam本身仍然有许多独特的功能。这些模块在可预见的未来将保留在Seam项目中,Seam将继续作为创新开发解决方案和想法的孵化器。我们还有很多工作要做,有很多想法可以为我们用户提供新的增值功能。

那么,Seam还会发布新版本吗?

我们计划我们的下一个捆绑版本(3.1)将成为我们的最后一个版本。注意我说的是捆绑——这个版本基本上是一个包含所有模块最新版本的压缩文件。随着我们新的关注点,捆绑版本已经没有太多意义了。然而,我们将继续在Seam模块收到足够的错误修复和功能更新,值得发布新版本时,发布每个Seam模块。

据我个人了解,我们的大部分开发人员已经在使用Maven进行依赖管理,所以这个变化对他们来说不会产生任何影响。

总结

总结一下,Seam不会消失,而是其新的目标是团结CDI开发者社区,它将继续培养创新,鼓励新想法和改进。如果您对此有任何疑问或担忧,我期待在下面的评论部分回答它们。


回到顶部