Seam.Next 公告

发布者    |       CDI Seam

我很高兴宣布我们 Seam.Next 计划的第一阶段的详细信息。我要感谢大家耐心等待我们完成这项工作,并提供了反馈,无论是通过电子邮件或 IRC 直接提供,还是通过 Seam 论坛提供。我还要感谢模块负责人、关键社区成员以及其他帮助制定此计划的人,这是一个非常协作的努力,我们对讨论的想法和目标以及未来的方向感到非常兴奋。

在我深入细节之前,我想先描述一下我们想要做出如此重大改变的动机,并谈谈推动我们的总体目标。我认为描述这一点的最佳起点是 Seam 2。

Seam 2

回顾我们在 Seam 2 中的做法,我认为可以肯定地说,该框架的许多方面都相当成功。我认为其成功的一个最显著因素是集成 - Seam 2 提供了核心框架功能(依赖注入、上下文、事件等)以及在核心框架之上构建的足够有用的功能,这使得应用开发变得非常高效。

它还提供了与许多第三方技术的集成,例如 Drools、jBPM、Wicket、Spring 等。在此基础上,它提供了将所有这些内容联系在一起的优秀文档,并且很好地帮助新开发者快速上手,而且还有 seam-gen 和 JBoss Tools 这样的良好工具。

总的来说,Seam 2 已经证明是一个成熟、全面的框架,解决了开发者在构建现代网络应用时面临的一些问题。

CDI 的到来

CDI 改变了 everything。通过标准化 Seam 的许多核心框架功能并将其作为 Java EE 平台的一部分,同时增加对类型安全和可扩展性的关注,不再需要自行携带框架 - 任何符合 Java EE 6 规范的容器都提供了一组完整的编程模型,无需补充额外的库来提供核心服务。

这是一大步的进步——根据标准编写应用程序是好事。它可以帮助您避免供应商锁定,并且意味着作为开发者,您的知识是可以移植的。它还让您处于一个绝佳的位置,可以充分利用不断增长的扩展和工具生态系统。

CDI无处不在

自从CDI发布以来,我们所有工作的一个基本原则就是“CDI无处不在”。通过在尽可能多的地方启用CDI支持,我们的目标是使开发者生产力比以往任何时候都要强。为此,我们一直在鼓励和协助其他项目团队直接从他们的项目中提供CDI集成。我们相信这是加强CDI生态系统和为开发者提供一个更专注于解决业务问题而不是与工具作斗争的环境的关键因素之一。

这当然意味着您不再需要像Seam这样的集成框架来支持许多CDI启用技术,例如Drools和jBPM(CDI支持即将推出)、GWT、Wicket等。此外,由于我们为Seam 2提供的工具(即seam-gen和JBoss Tools)基于其专有核心框架,因此任何新的工具都应该自然地专注于CDI现在提供的基于标准的组件模型。这就是Forge现在成为一个独立的顶级项目的原因,专注于构建Java EE应用程序。

Seam 3

从之前的图中我们可以看到,由于标准化,组成Seam的许多部分现在已超出原始项目的范围。这意味着Seam的关注点发生了变化。Seam 3不是提供一个完全集成的框架堆栈,而是将剩余的部分转变为CDI的可移植扩展集合。本质上,我们所做的是在模块化结构中实现了许多在Seam 2中存在的最有用的功能,并添加了一些新功能,以便Java EE开发者可以通过简单地将jar文件放入他们的项目中轻松地将这些功能添加到他们的应用程序中。

现在回想起来,我们认为将这个新项目命名为Seam 3是一个错误的选择,因为项目性质与上一版本相比发生了巨大变化。虽然为CDI创建一组有用的扩展无疑是值得追求的目标,但Seam 3本身不再是像Seam 2那样的完全集成的框架堆栈。由于关注点的这一变化,许多人对文档和新人入门体验感到失望。

用户想要什么?

我们从社区收到的反馈涵盖了广泛的担忧,然而有一些共同领域,例如

  • 文档
  • 入门体验
  • 工具
  • 缺乏Drools/jBPM支持
  • 缺乏某些功能,例如实体框架
  • 缺乏迁移指南

在这些背后,我们还注意到两个强烈的信息

  • 一些开发者主要对可移植性感兴趣。他们不希望应用程序锁定在特定的容器实现中,而且对他们来说,能够在不同的环境中使用框架是非常重要的。
  • 许多开发者只想有一个端到端的工作框架,而不需要自己组装所有部分并找出如何集成它们。他们不希望不得不阅读来自不同项目的多套文档,并且他们对应用程序框架的主要要求是生产力,即快速高效地完成任务。

那么问题来了,我们如何回归Seam 2所提供的完全集成的框架堆栈和生产力,同时提供一套可便携的扩展,用户可以根据需要按需消费,这些扩展能在任何存在CDI的环境下运行?我们一直在与社区领导者、模块负责人合作,并提出了一项我们认为能够应对这些挑战的提案。

我们将采取的第一步是创建一套由社区拥有的可便携CDI扩展;一套事实上的功能集,开发人员可以在他们自己的应用程序中使用,无论他们希望部署到哪个容器。这个项目的重大目标之一是壮大并统一Java EE社区。通过与其他CDI扩展开发者合作,例如Apache MyFaces CODI团队和CDISource团队,以及其他Java EE社区的关键成员,我们正在创建一个比各自部分之和更强大的社区。

这必须是一个真正的社区项目,没有任何企业背景,以确保项目保持中立。我们认为Apache是一个很好的项目托管地,因为他们是一个非营利组织,没有企业议程,在社区中拥有生产成功开源项目的强大声誉。因此,无需多言,让我向大家介绍Apache DeltaSpike项目。

Apache DeltaSpike

当你阅读这封信时,Apache DeltaSpike的提案已提交给Apache孵化器,并开始了成为顶级Apache项目的进程。DeltaSpike是一套可便携的CDI扩展,由Java EE社区共同构建。它将由来自各个Java EE开源供应商的贡献代码启动,并提供构建企业应用所需的一系列基本功能。便携性将是这个项目的主要原则,满足许多开发者对于能够在多个不同环境中运行框架的需求。

在最初的发布之后,现有的Seam开发团队(包括全职和志愿者贡献者),以及MyFaces CODI团队、CDISource团队和Java EE社区的其他成员将进行DeltaSpike的持续开发——这包括新功能和创新、错误修复和其他增强。虽然我不便谈论DeltaSpike的发布时间表(这是由Apache DeltaSpike Podling项目管理委员会(PPMC)决定的),但我有100%的信心,它将是一个充满活力、积极的项目,并获得应有的关注和贡献,并产生许多持续发布。

Apache DeltaSpike的第一个版本将包括一个通用核心,一套扩展,将为构建其他扩展提供基础。它将在多个Java EE容器中进行广泛的测试,以确保便携性,并为其他功能的发展提供坚实的基础。最终的目标是Apache DeltaSpike将包含今天在Seam中可以找到的许多功能。

一个集成的框架

我们还提到,我们希望解决需要端到端开发堆栈的开发者需求。虽然我们仍在处理这个细节,但我想向大家保证,提供与Seam 2精神一致的完全集成框架,但具有更高的生产力,对我们来说是一个高度优先的任务。我们有一些很好的想法来满足您的需求,提供一套完整的集成框架。我们知道您将像我们一样对即将到来的内容感到兴奋,所以请在接下来的几个月里关注这个空间,以获取更多详细信息。

Seam怎么办?

对于那些已经在Seam上投入大量资源的开发者们,请不要担心,我们也会照顾到你们。我们将在可预见的未来继续开发Seam 3,实际上即将发布的Seam 3.1版本包含了众多令人兴奋的新模块和其他改进。我们还想重申,我们对Seam社区承诺满满——上面提到的所有举措都是为了大家的利益,为大家提供构建运行世界的应用的最高效框架和工具。我们希望大家在接下来几个月我们逐步实施这个愿景时能耐心等待,并对您一直以来的支持表示感谢。


回到顶部