Java11新特性(一)——JDK11新特性概述

序言

关于JDK11,自从去年也就是2018年9月份 Oracle 对外公布——JDK11正式发布以来,博主就跃跃欲试,但是由于项目周期时间紧,一直未果,今年,也就是2019年2月底系统正式上线,博主除了远程技术支持以外,终于可以抽出实现来一探究竟了,博主的探寻的起始之路如下:社区 -> 新特性概览 -> 详细文档说明 -> 官方 API -> 实践与应用(除了体验新特性带来的便利和快感之外,还思考解决了哪些实际的问题等)。

关于如何开始 JDK11 的写作也是徘徊了良久,不知道该从哪儿开始,是从常用API呢,还是从代码实战,之后想来还是从JDK11新特性概论开始吧,在接下来的 “ Java11新特性 ” 系列文章中,如果有不到之处,欢迎指正,博主会立即予以修改。

JDK11新特性概述

1、关于JDK11

JDK11是由Java Community Process中的JSR-384指定的 Java SE 平台版本 11 的开源引用实现。

JDK11于2018年9月25日发布。在 GPL 下可用于生产的二进制文件可以从 Oracle 官方获得;此版本的特性和时间表是通过 JEP 流程提出并跟踪的,JEP 2.0提案对其进行了修订。该版本使用 JDK Release Process(JEP 3)生成的。

 

2、JDK11的17项新特性

  1. 181: Nest-Based Access Control
  2. 309: Dynamic Class-File Constants
  3. 315: Improve Aarch64 Intrinsics
  4. 318: Epsilon: A No-Op Garbage Collector
  5. 320: Remove the Java EE and CORBA Modules
  6. 321: HTTP Client (Standard)
  7. 323: Local-Variable Syntax for Lambda Parameters
  8. 324: Key Agreement with Curve25519 and Curve448
  9. 327: Unicode 10
  10. 328: Flight Recorder
  11. 329: ChaCha20 and Poly1305 Cryptographic Algorithms
  12. 330: Launch Single-File Source-Code Programs
  13. 331: Low-Overhead Heap Profiling
  14. 332: Transport Layer Security (TLS) 1.3
  15. 333: ZGC: A Scalable Low-Latency Garbage Collector(Experimental)
  16. 335: Deprecate the Nashorn JavaScript Engine
  17. 336: Deprecate the Pack200 Tools and API
     

光阴似箭、日月如梭,在过去的几个月中,Oracle 宣布了 Java 平台的改进,以确保其继续向前发展,为用户提供一个充满活力的未来。这些进展包括:

  • 提高交付的速度和可预测性:自Java9发布以来,Java平台已经切换到6个月的发布周期,允许开发人员更快地访问持续增强的功能。现在发行版在每年的3月和9月发布,这意味着不再试图每隔几年就一次性的数百个变更——相反,变更是以更有节制和可预测的速度发布的。
  • 使Java更加开放:为了提高开发人员的工作效率,Oracle采用了以前只能通过付费许可才能获得的商业特性,并将其开源。这样做可以在Oracle JDK和Oracle OpenJDK发行版之间创造更大的一致性和互换性。OpenJDK中以前的商业特性包括:Application Class Data Sharing、Project ZGC、 Java Flight Recorder (JFR)和 Java Mission Control (JMC)。最近,Oracle又宣布计划将JMC技术作为单独的下载提供给OpenJDK和Oracle JDK用户。
  • 关于Java SE订阅:Oracle 在今年夏天宣布了Java SE订阅,这是一个全新的模型,它涵盖了所有Java SE许可和支持,以进一步支持全球数百万在生产中运行Java的企业。订阅是对长期免费提供的Oracle OpenJDK的补充,它使开发人员和组织不需要商业支持。

Oracle 提供的 JDK 不仅包括 Oracle OpenJDK 版本中的开源 GNU 通用公共许可协议版本 v2,还包括 Classpath Exception (GPLv2 + CPE) ,还包括那些使用 Oracle JDK 作为 Oracle 产品或服务的一部分或者不希望使用开源软件的用户的商业许可。 这些许可协议取代了历史上的“ BCL ”许可协议,该协议主要包含了免费和付费的商业条款。这样以来,将意味着用户可以得到符合自己需求的 Java 11:

  1. Java 11是一个长期支持(LTS)版本。这意味着那些对平台采用持保守态度并需要长期支持的用户可以通过Java SE订阅提供许可Oracle JDK二进制文件。它允许用户在至少8年内获得Java 11 LTS发行版的更新。订阅可以直接从Oracle访问经过测试和认证的Java SE性能方面、稳定性方面和安全性方面的更新。它还包括对 My Oracle Support (MOS)24x7的访问、对27种语言的支持、Java SE 8桌面管理、监控和部署特性等。
  2. 相反,喜欢快速访问新增强功能的用户可以继续使用Oracle OpenJDK发行版。与Java 9和Java 10相同,这个版本的用户将得到彻底的测试,由 Oracle 提供开源的 OpenJDK 来构建。

Java 11提供了17个增强功能,其中最显著的包括:

  • JEP 321 - HTTP Client (Standard):该 JEP 通过JEP 110标准化了JDK 9中引入并在 JDK 10中更新的已孵化的 HTTP 客户端 API。
  • JEP 332 - Transport Layer Security (TLS) 1.3:TLS 1.3是对TLS协议的重大改进,与以往的版本相比,TLS 1.3在安全性和性能得到了显著的改进。
  • JEP 328 - Java Flight Recorder (JFR):JFR 提供了一个高性能的飞行记录引擎和低开销的数据收集框架,用于解决Java应用程序的关键任务的故障。
  • JEP 333 - Project ZGC:ZGC 是一个实验性的低延迟垃圾收集器(GC),它可以处理大小从相对较小(几百兆字节)到非常大(多字节)的堆。
  • JEP 330 – Launch Single-File Source-Code Programs:这种增强简化了“ on-ramp ”或新的 Java 用户,增强了 Java launcher,使其可以运行作为 Java 源代码单个文件提供的程序,包括脚本和/或相关技术中的使用。

JDK随时间变化的总体速度在多年来基本上保持不变,但是在新的节奏下,更改速度已经显著增加。不是每隔几年就在一个庞大的发行版中提供成千上万个补丁和大约100个JEPS,而是在更小的发行版中以更易于管理、更可预测的进度提供更改。这些更改的范围从大的特性到小的增强、日常维护、BUG修复再到文档改进等。每个这样的更改都会在单个提交中表示。

在 JDK11 中标记为已修复的2468个 JIRA 问题中,1963个 JIRA 问题是由 Oracle 工作人员完成的,其中 505 个由个人和其他组织的开发人员完成的。 仔细研究这些问题并整理委托人提供的组织数据,会得到下面的图表,主要展示了 JDK11 修复的组织:

如上图,在JDK 11的开发过程中,Oracle 的开发人员解决了80% 的 JIRA 问题,而其它组织的开发人员解决了20% 的 JIRA 问题。 其中排名第二的五大贡献组织机构包括:SAP (7%)、 Red Hat (5%)、 Google (3%)、 BellSoft (1%)和 IBM (1%) ,这五大贡献机构共同解决了 17% 的 JIRA 问题,独立开发人员对JDK 11修复的贡献值为2% 。

其余 1% 的 JIRA 问题修复是由:阿里巴巴、亚马逊(Amazon)、ARM、Azul、英特尔(Intel)、JetBrains、Linaro和Qualcomm Datacenter Technologies 等众多组织机构的开发人员共同完成的。

 

3、产品支持路线图

Oracle Java SE支持路线图(这个较之前的时间表有所变化,该表更新与2018年11月):

对于Java SE 8之后的产品版本,Oracle将每三年指定一个版本作为长期支持(Long-Term-Support,LTS)版本。Java SE 11 (18.9 LTS)是一个LTS版本。出于Oracle Premier Support的目的,非LTS版本被认为是对最新LTS版本的实现增强的累积集。一旦一个新的特性发布可用,任何以前的非LTS发布都将被认为是可替代的。例如,Java SE 9是一个非 LTS 版本,并立即被Java SE 10(也是非LTS)所取代,而Java SE 10又立即被Java SE 11所取代。然而,Java SE 11是一个LTS版本,因此即使在 Java SE 12 发布之后,Oracle 客户也会收到 Oracle 官方获得支持和定期更新的Java版本。

4、JavaFX & Web 部署技术

与JRE绑定的Web部署技术(由Java插件和Java Web Start组成)具有更短的支持生命周期(只有5年的支持周期)。而在Java SE 9和Java SE 10中,部署堆栈被标记为不推荐的,并被标记为将要删除的。Oracle Java SE 11及其后续版本已经不包含部署堆栈。由于Java SE 8将是Java SE 8上的Java Web Start扩展支持的部署堆栈的结束版本,所以Java SE 8d 扩展支持预计在2025年3月结束。而对 Java 插件(JavaApplet)的支持将持续到2019年3月。

Java SE 8是推荐的,也是唯一支持部署堆栈的版本。Java SE 8部署堆栈可用于在Windows平台上运行Java SE 6或Java SE 7应用程序。Java SE 8之外,其它 Java 部署技术将不再被支持。

JavaFX已经开源并重新设计为一个独立的库,而不是包含在JDK中。从Java SE 11 (18.9 LTS)开始,JavaFX不再包含在Oracle JDK中。在Java SE 8上对JavaFX的支持将持续到Premier Support支持期(直到2022年3月)。

 

Oracle Java SE 常见问题

今年1月,也就是2019年1月,Oracle 官方发布了几个关注度较高的问题,并予以详细的回答,具体内容如下:

问题一:2019年1月以后Java还免费吗?

答案是绝对的。与过去20多年的情况一样,Oracle一直保持Java的免费和开放,并免费为当前版本提供稳定性方面、性能方面和安全性方面的持续更新。Oracle还将继续提供免费的关键补丁更新(需要提前一年预定),必要时提供额外的更新,并且在基于新版本更新的节奏下每年提供两个特性更新(还包括关键补丁更新)。 在 OpenJDK 开源社区中完成了所有这些开发工作,使得我们的贡献可以被任何人移植、分析和使用,作为开放源码的Java,可以从 Oracle 官网免费下载 Java 的最新更新版本。

 

问题二:Java 8 的 “ End of Public Updates ” 时间表是什么?

2019年1月15日计划对Java 8进行关键补丁更新(8u201和相关的8u202补丁集更新),这是BCL许可下的最后一次更新,BCL许可一般免费用于桌面和服务器,多年来一直是Oracle JDK许可。接下来,于2019年4月16日发布的Java 8更新(8u211和相关的8u212补丁集更新)将根据新的许可提供,该许可将免费用于个人桌面使用,并可用于开发、测试、原型设计和演示的目的。

最近发布的 Java 版本仍然是免费的,并且遵循来自jdk.java.net的开源许可下,或者免费使用于OTN许可的开发、测试、原型设计和演示。2019年4月16日之后,对于那些希望继续使用发布的用于商业或生产目的的 java8 更新的用户,可以使用 Java SE 订阅。

 

问题三: 在2019年4月前发布并在 BCL 下下载的 java8更新能否在2019年1月后继续使用?

当然是可以的。可以根据提供的给定的许可条款继续使用任何版本的 Java。 Java 8更新的新许可只适用于2019年1月之后根据新许可发布的更新,从2019年4月16日计划的季度更新开始。

 

总结

在较早的 Java 公共更新中,可以一直追溯到 Java 1.1,可以在 Java 档案中找到。 提供这些旧版本是为了帮助开发人员在旧系统中调试问题。

而在没有更新最新的安全修补程序情况下,博主不建议在公共网络种使用旧的或更老的版本,因为在没有更新安全补丁的情况下使用,是不安全的,需要承担风险之大。如果在政府级别的项目,对其稳定性要求比较高的,可以使用,因为一般政府的项目运行都是内网与外网隔离的,所以,不会存在安全性的问题,除非人为因素造成。

参考 & 推荐阅读:

《 Oracle Java SE 官网 》

《 Oracle生命周期支持策略 》


 好了,关于 Java11新特性(一)——JDK11新特性概述 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者: 华    仔
联系作者: [email protected]
来        源: CSDN (Chinese Software Developer Network)
原        文: https://blog.csdn.net/Hello_World_QWP/article/details/88788021
版权声明: 本文为博主原创文章,请在转载时务必注明博文出处!
发布了318 篇原创文章 · 获赞 637 · 访问量 144万+

猜你喜欢

转载自blog.csdn.net/Hello_World_QWP/article/details/88788021