Java 11终于推出了,它是Oracle在推行LTS(长期支持,Long-Term Support)后首个按计划推出的版本。虽然Oracle出于缩小旧版本模型和新方法间差距的考虑,也将早期的Java 8纳入到LTS发布中。

InfoQ今年早期的报道相比,新版本的特性列表发生了巨大的变化。Java 11中的新特性主要包括:

  • 基于嵌套的访问控制(即“Nestmates”):重新审视了内部类的实现方式,编译器无需插入桥接(Bridge)方法。
  • 动态类文件常量(即“Condy”):降低了代价,无需新建物化的类文件常量。Condy将提高性能,并提供新的平台方法。
  • ZGC(实验性):ZGC是一种全新的垃圾回收器(GC),设计在最高付出15%性能牺牲代价的情况下,实现低于10毫秒的暂停时间(即便对于大型堆)。
  • 黑匣子(Flight Recorder):一种低代价的数据采集框架,用于为Java应用和HotSpot JVM提供查错。黑匣子在前期版本中是一个商业特性,在新版本中开源提供。
  • 新的标准HTTP软件库:新模块java.net.http实现了API孵化的标准化,支持基于流的HTTP/1.1和HTTP/2。
  • TLS 1.3:实现了最近标准化的新版本传输层安全协议(TLS,Transport Layer Security)。
  • Lambda参数的本地变量语法:更新了Labmda语法,支持使用Java 10引入的var类型推理。

为精简Java核心产品,新版本还清理了一些旧特性:

  • Java EE和CORBA模块:如果应用需要EE和CORBA模块,那么应用需明确指明对这些模块的依赖。
  • Web Start:完全清除,不提供替代特性。
  • Applets:在大多数情况下严重推荐不使用,最终将被清理。
  • JavaFX:FX软件库已经迁移到OpenJFX项目,并从核心中移除。

译注: 自JavaFX于2012年开源并为OpenJDK项目下的OpenJFX子项目之后,它就已不再是Java SE的组成部分。这意味着OpenJFX的API将不再遵循JSR。由Oracle创建并分支的OpenJDK二进制版本Oracle JDK 11已正式宣称移除了JavaFX,但JavaFX依然是OpenJDK项目的组成部分。自2012年以后,如果OpenJDK开发人员想要构建或运行JavaFX应用,那么必须要额外下载OpenJFX,因为OpenJDK中并未包括OpenJFX。)

需特别指出的是,EE模块中包括对JAXB和SOAP的支持,这两个组件在很多企业中依然广为使用。对于已升级到新版本的开发团队,应该做一些仔细的检查,已确认是否需要针对这些改进修改构建脚本。

Oracle Java平台组软件开发副总Georges Saab对Java的新LTS模型做出如下评价:

LTS版本发布模型支持我们的客户按自己的节奏在受良好支持的Java SE LTS发布版本间的迁移,同时也支持Java开发人员生态系统更快地接触到最新改进。

InfoQ今年早期提供的一个幻灯片中,给出了一些新特性的例子。在InfoQ对ByteBuddy创始人Rafael Winterhalter的采访中,谈及了包括Condy和Nestmates在内的一些类文件新格式上的改进。

Oracle将在官方网站下载频道和其它软件提供商处提供Java 11的下载。但目前为止,官网下载频道尚未更新。Java 11的支持模型不同于前期版本,InfoQ曾详细报道了新模型的一些细节情况

Comments are closed.