Spring 针对 Java 8 升级

  • Matt Raible
  • 马德奎

2014 年 4 月 17 日

话题:DevOps语言 & 开发架构

Java 8 刚刚在几周前的3 月 18 日发布。几天后,Spring Framework 项目负责人Jeurgen Hoeller发表了题为《企业项目中的 Java 8》的文章。文中,他指出,那些著名的 Java EE 应用服务器如何不允许轻松升级。

对于 Java EE 服务器,升级时通常有一个突出问题,就是绑定了 JDK 版本。对于 WebSphere,即使是在 WAS 8.5 上,默认的 JDK 版本仍然是 Java 6,Java 7 只是一个可选项。对于 WebLogic,最近的版本已经更坚决地基于 Java 7。然而,两者均不允许用户自由选择使用哪一代 JDK。

由于应用服务器技术栈通常与特定的 JDK 版本紧密集成,所以简单地使它运行在不同的 JDK 安装上并不可取。当代的应用服务器甚至不可能承受在 Java 8 上启动一次冒烟测试。

Hoeller 继续写道,对于希望快速采用 Java 8 的开发人员而言,那些使用 Tomcat 和 Jetty 的项目更有优势。

在这点上,像 Tomcat 和 Jetty 这样的瘦 Web 应用服务器有明显的优势,因为它们不依赖于任何 JDK 版本的规范。Tomcat 8 和 Jetty 9 已经在 OpenJDK 8 上测试了半年,而且已经广泛宣布兼容 Java 8。甚至 Tomcat 7 也加入了该俱乐部,得到一个经过升级的 Eclipse 编译器。

因此,对于 Java 8,Tomcat 和 Jetty 都将自己描述为当前有质量保障的产品选项。

他在总结时提醒用户,特定的框架和库需要兼容 Java 8。从文章的结尾部分来看,谈到 Java 8, Spring 似乎是“蓄势待发”。

Spring Framework 4 代从一开始就一直按照一种兼容 Java 8 的方式设计。实际上,甚至在 OpenJDK 8 的第一个候选版本发布之前,我们就发布了全面支持 Java 8 开发的 Spring Framework 4.0 GA 版本。

在我们看来,Spring Framework 4 和 Java 8 在许多环境中都是一个完美的组合,不只是 Tomcat、Jetty 或者 WildFly,还有近来的嵌入式引擎,如 Reactor 或 Undertow,以及其它各类用户自定义的应用架构。

六天之后,Spring 4.0.3 发布。它有什么不同?Spring 的这个版本“是用 OpenJDK 8 GA 构建的”,而且“包含了最新的 ASM 5.0.1(同样在 JDK 8 GA 层面支持字节码,取代我们先前惯用的 ASM 4.2 派生)”。除了真正支持 Java 8 之外,Spring 4.0.3 版本还在 WebSocket 方面有许多改进。从我们的审查来看,作为该版本的一部分,它似乎修复了 Prashant Deva 在题为《Spring 4 Websocket 支持 Bug 要览》的文章中提到的所有问题。

本月初,Spring Boot 发布正式版Chris Beams做了一项很棒的工作,展示了如何用 Boot 构建 spring.io。Pivotal 开发团队一直在不遗余力地支持 Java 8,而且对于 Spring Boot,他们还在推动对其它语言的支持。

关于#Spring Boot有趣的一面:它不是关于 Java VS. Groovy VS. Scala。它是关于一个成熟的平台 + 你选择的 JVM 语言……

——Oliver Gierke(@olivergierke)2014 年 4 月 1 日

你尝试用最新版本的 Spring 和 Java 升级应用程序了吗?如果没有,是什么阻止了你?

查看英文原文:Spring Updated for Java 8

DevOps语言 & 开发架构