领先一步
VMware 提供培训和认证,助您加速进步。
了解更多请注意,有一篇关于 Spring 5 系统要求 的后续博文。如果您主要对 Spring 5 的规划过程感兴趣,可以从那里开始。
在我们寻求 Java EE 集成的过程中,我们正积极拥抱最新一代的规范,例如 JPA、Bean Validation,当然还有 Servlet 和 JMS API。截至 Spring 4,我们同时支持 Java EE 6 和 7 级别的规范。我们希望尽快将其提升到 EE 7+ 级别(JPA 2.1、Bean Validation 1.1,特别是 Servlet 3.1 和 JMS 2.0),但面临一个根本性问题:EE 7 平台普及率不足。
Java EE 7 平台已于 2013 年 5 月发布,因此现在已有两年历史。令人惊讶的是,它至今在生产环境中仍很少见。但这也不是那么令人惊讶:尽管几年来已有少数项目获得了 EE 7 认证,但主要供应商的缺失显而易见:目前还没有主流的 EE 7 服务器提供生产支持,无论是 Web Profile 还是完整平台。截至 2015 年 6 月,常见的 EE 供应商仍在销售基于 2009 年的 Java EE 6 API 的服务器许可证。而且不只是传统的几家大厂。
重磅新闻(6 月 9 日): WAS 8.5.5 的 EE 7 修复包将于 6 月 26 日正式发布。IBM 棒极了!
尽管 EE 7 umbrella 下的几个规范已获得独立采用,例如通过 Hibernate 4.3 采用JPA 2.1,以及通过 Tomcat 8 和 Jetty 9 采用Servlet 3.1 / JSR-356 WebSockets,但公平地说,Java EE 7 作为平台整体未能进入市场。毕竟,“平台”的意义在于广泛的主流可用性。具有讽刺意味的是,稍后发布的 JDK 8(2014 年 3 月)却在生产环境中得到了快速拥抱,甚至在 EE 领域!因此,截至 2015 年中期的现状是,在生产环境中运行着基于 JDK 8 的 EE 6 服务器,并有供应商支持……
我们的决定: 考虑到 Spring 4 和 Java 8 的普及程度,我们将在 Spring Framework 5 代中将最低要求提升到 JDK 8+。然而,由于 Java EE 7 平台普及率不足,我们将不得不保留与当前一代应用服务器的兼容性:允许即将推出的 Spring 5 应用程序部署到生产环境中常见的基于 JDK 8 的 EE 6 服务器上——就像我们现在对 Spring 4 所做的那样,但至少我们可以在框架代码库及其所有核心接口上获得 JDK 8+ 的额外好处。
附注(6 月 6 日)
仅供参考,我非常欣赏GlassFish 和WildFly 作为开源工程的努力。Spring 为两者都提供了专门的支持,而Undertow HTTP 服务器(位于 WildFly 之下)非常适合与 Spring Boot 进行嵌入式部署。但这并不能改变项目所有者(分别是 Oracle 和 Red Hat)不愿支持它们,而是选择投资 WebLogic 12 和 JBoss EAP 6 用于生产环境的事实。来自 Payara(针对 GlassFish)等公司的外部支持只能在一定程度上缓解这种情况,而 Java EE 市场的大部分在 2015 年仍然依赖于供应商的生产产品——所有这些都基于 EE 6。
对于来自开源项目本身的出色的生产支持的例子,看看Tomcat 就可以了。Tomcat 项目在修复错误,特别是安全漏洞方面有着令人称赞的记录,而且速度非常快,即使是跨越了服务器过去三个主要版本。所以我并不是在主张商业支持本身,我是在主张像 Tomcat(而且敢说:像 Spring)那样进行适当的维护发布,无论是来自开源项目本身还是来自商业支持订阅。例如,WildFly 这两者都没有;GlassFish 没有来自 Oracle 的支持,但至少有 Payara 的支持选项。