你想了解的JDK 10版本更新都在这里

  • 「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」
  • 当然 不论新老朋友 我相信您都可以 从中获益。如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力!

特性总览

以下是 Java 10 中的引入的部分新特性。关于 Java 10 新特性更详细的介绍可参考这里

  • 基于时间的发行版本控制(JEP 322)
  • 局部变量类型推断(JEP 286)
  • 试验性 JIT 编译器(JEP 317)
  • 应用程序类数据共享(JEP 310)
  • 用于 G1 的并行 Full GC(JEP 307)
  • 清理垃圾收集器接口(JEP 304)
  • 其他 Unicode 语言标签扩展(JEP 314)
  • 根证书(JEP 319)
  • 线程本地握手(JEP 312)
  • 备用存储设备上的堆分配(JEP 316)
  • 删除本机头生成工具——javah(JEP 313)
  • 将JDK森林合并到单个存储库中(JEP 296)
  • API 变更

一. 基于时间的发行版本控制(JEP 322)

发行版本号的前世今生

自 Java 江山易主,JDK 发行版本的字符串命名方式一直是一个耐人寻味的话题。

单就下载 JDK 时,所看到的简短版本字符串形式来说,在 7u40 版本之前,u 之后的数字,代表了 JDK 发布以来的第几个修正版本,然而 Oracle 改变规则,为了彰显出安全之类的重大 修补(Cirtical Patch Updates)版本,采用 奇数 命名,而 Bug 修复、API 修改之类的 维护版本,则采用 偶数(另有版本号 $MAJOR.$MINOR.$SECURITY 的格式来区分 Bug 修正和 API 修改)

为此,之前既有的 JDK 6/7 发布版本,还被重新命名。(下方演示)

   Actual                    Hypothetical
Release Type           long               short
------------           ------------------------ 
Security 2013/06       1.7.0_25-b15       7u25
Minor    2013/09       1.7.0_40-b43       7u40
Security 2013/10       1.7.0_45-b18       7u45
Security 2014/01       1.7.0_51-b13       7u51
Minor    2014/05       1.7.0_60-b19       7u60

就结论而言,重新命名之后,从 7u96u37 开始,就可以从奇偶数来判别是否为重大修补版本;至于 7u40 之后的版本,重大修补版本 是基于 5 的倍数,遇偶数加一,而 维护版本 则会是 20 的倍数。如此(不直观)的命名方式,被规范在了 JEP223 中。(随着 JDK 9 一起发布的)

然而,自 JDK 8 发布之后,Oracle 的 Java 架构师 Mark Reinhold 就希望,未来 Java 发布可以基于时间,以半年为周期,持续发布新版本,让一些有用的小特性,也能被开发者使用,因此,JEP 223 的规范就不再适用了,而在 JDK 9 发布后,他们针对新版本曾经提出过基于 $YEAR.$MONTH 格式,然而收到了社区极大的反对,为此,还提出了三个替代方案,收集各方的意见。(https://goo.gl/7CA8B3)

那么,Java 下一个特性版本是 8.31803?还是 10?调查结果显示,社群大多数都支持 10,Stephen Colebourne 也发出请求(https://goo.gl/i5J44T),并表示 Java 不像 Ubuntu 这类操作系统,基于 $YEAR.$MONTH 并不合适。

最终,Oracle 采用了 $FEATURE.$INTERIM.$UPDATE.$PATCH 这样的方案,并规定在了 JEP 322 中。

JEP 322 新模式解读

通过采用基于时间的发行周期,Oracle 更改了 Java SE 平台和 JDK 的版本字符串方案以及相关的版本信息,以适用于当前和将来的基于时间的发行模型。

版本号的新模式是:

$FEATURE.$INTERIM.$UPDATE.$PATCH

  • $ FEATURE:计数器将每 6 个月递增一次,并基于功能发布版本,例如:JDK 10,JDK 11。
  • $ INTERIM:对于包含兼容错误修复和增强功能但没有不兼容更改的非功能版本,计数器将增加。通常,这将是零,因为六个月内不会有任何临时发布。这保留了对发布模型的将来修订。
  • $ UPDATE:计数器将增加,用于解决安全问题,回归和较新功能中的错误的兼容更新版本。此功能会在功能发布后一个月更新,此后每三个月更新一次。2018 年 4 月版本是 JDK 10.0.1,7 月版本是 JDK 10.0.2,依此类推
  • $ PATCH:计数器将增加以用于紧急释放以解决严重问题。

并添加了新的 API 以通过编程的方式获取这些计数器:

Version version = Runtime.version();
version.feature();
version.interim();
version.update();
version.patch();

现在,让我们来看一下返回版本信息的 Java 启动器:

$ java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)

版本号格式为 10,因为没有其他计数器为零。发布日期已添加。可以将 18.3 理解为 Year 2018&3rd Month,版本 10 + 46 是版本 1046 版本。对于 JDK 10.0.1 的假设版本 93,版本将为 10.0.1 + 93

因此,对于 Java 9 来说,目前可以看到的版本,会是 9.0.4 这样的格式,至于 2018 年 3 月发布的特性版本为 10,到了 9 月提供的新版本,就是 11,JDK 11 预计会是长期支援版本,所以,在版本字串上,也会特别显示 LTS(long-term sup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JDK 1.8是Java开发工具包(Java Development Kit)的一个版本,是Java编程语言的重要工具之一。它包含了编译器、运行时环境、调试器和其他一些用于开发Java应用程序的工具。 JDK 1.8中引入了许多新特性和改进,其中最重要的是Lambda表达式和函数式接口。Lambda表达式是一种简化匿名内部类的方式,它使得编写代码更简洁、易读。函数式接口则是一种只有一个抽象方法的接口,它能够被Lambda表达式直接实现,提供了更强大的代码组织和处理能力。 除了Lambda表达式和函数式接口,JDK 1.8还引入了一些其他的新特性,如Streams API(流式API)、日期时间API、默认方法(default methods)等。Streams API提供了一种新的集合处理方式,使得对集合中的元素进行过滤、映射、排序等操作更加便捷。日期时间API则提供了对日期和时间的更加灵活和易用的操作方法。默认方法允许在接口中定义具体的实现,为现有的接口添加新的方法时更加方便。 JDK 1.8在性能方面也进行了优化,包括对编译器、垃圾回收器、类加载器等进行了改进和优化,提升了Java应用程序的性能和效率。 总之,JDK 1.8是一次重要的版本升级,引入了许多新特性和改进,使得Java编程更加灵活、高效和易用。这些特性使得Java开发人员能够更轻松地编写出高质量、可维护的代码,提升了开发效率和用户体验。 ### 回答2: JDK1.8是Java Development Kit(Java开发工具包)的一种版本,csdn是一家广受欢迎的中文技术社区和博客平台。 JDK1.8是Java平台的一个重要更新版本。它包含了许多新的特性和改进,为Java开发人员提供了更好的开发体验和更强大的功能。JDK1.8引入了Lambda表达式、函数式接口、Stream API等重要的语言特性和功能,使得Java语言更加现代化和灵活。 Lambda表达式是JDK1.8引入的一个重要特性,它简化了在函数式编程中使用的匿名内部类的写法,使得代码更加简洁易读。Lambda表达式的引入大大增加了Java语言的表达力,使得开发人员可以更方便地编写函数式风格的代码。 函数式接口是另一个JDK1.8的重要特性,它是只包含一个抽象方法的接口。函数式接口可以用lambda表达式或方法引用来实现,使得开发人员可以更方便地使用函数式编程的思来解决问题。 Stream API是JDK1.8新增的另一个重要特性,它提供了一种更高效、更简洁的方式来处理集合数据。Stream API利用了函数式编程的特性,可以方便地进行数据过滤、转换、聚合等操作,大大简化了对集合数据的处理代码。 csdn是一个面向中国IT技术人员的社区平台,提供了丰富的技术文章、博客、论坛等资源。在csdn上,开发者可以分享自己的技术经验和思考,学习他人的经验,解决问题。通过csdn,开发者可以与同行交流,不断提升自己的技术水平。 综上所述,JDK1.8是Java开发工具包的一个版本,引入了许多重要的新特性和改进,使得Java开发更加现代化和灵活。而csdn则是为中国IT技术人员提供了一个学习和交流的平台,使得开发者可以更好地掌握和应用JDK1.8的特性。 ### 回答3: JDK 1.8是Java Development Kit的缩写,是Java开发平台的一个重要版本。CSND是一个国内知名的技术社区,是中国最大的IT社区之一。JDK 1.8和CSND有什么关系呢? 首先,JDK 1.8是Java的一个重要版本,它包含了许多新的特性和功能,使得开发者能够更加方便地编写高效的Java代码。例如,它引入了Lambda表达式和函数式接口,使得代码更加简洁和易于理解。另外,JDK 1.8还引入了Stream API,提供了一种更强大和易于使用的方法来处理集合数据。这些新特性和功能对于Java开发者来说非常重要,因为它们可以提高开发效率和代码质量。 而CSND作为一个知名的技术社区,提供了一个平台,供开发者学习和分享技术知识。在CSND上,你可以找到大量关于JDK 1.8的文章、教程和讨论。这些内容可以帮助开发者更好地理解和应用JDK 1.8的新特性和功能。此外,CSND也提供了一个交流平台,开发者可以在这里互相交流经验、解决问题并相互学习。在CSND上,你可以找到许多与JDK 1.8相关的问答、指导和分享,帮助你更深入地学习和应用JDK 1.8。 总结而言,JDK 1.8是Java开发平台的一个重要版本,它包含了许多新特性和功能。而CSND作为一个知名的技术社区,提供了丰富的资源和交流平台,使得开发者可以更好地学习和应用JDK 1.8。通过在CSND上查阅和参与讨论,开发者可以深入了解JDK 1.8的特性,并应用于实际开发中,提高自己的技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值