Java 10 新特性全览

Java 10 新特性全览在 Java 9 之后,Java 将采用基于时间发布的策略,每 6 个月一个版本。目前,Java 10 的新特性都已经确定。

在 Java 9 之后,Java 将采用基于时间发布的策略,每 6 个月一个版本。目前,Java 10 的新特性都已经确定。

Java 10 新特性全览

具体来看看。

JEP 286: Local-Variable Type Inference


局部变量的类型推导。

很多人都会吐槽 Java 代码写起来太过繁琐,特别是涉及泛型的时候。就像 C++,也基于 auto 关键字引入了类型推导功能。

Java 也计划引入类似特性,语法是这样的:

var list = new ArrayList<String> ();  // infers ArrayList<String>var stream = list.stream();          // infers Stream <String>

该特性只能用于三种场景:

  • 带有初始化信息的局部变量

  • 增强 for 循环中的索引

  • 传统 for 循环中的局部变量

JEP 296: Consolidate the JDK Forest into a Single Repository


将 JDK 的多个代码仓库合并到一个代码仓库中。

看过 JDK 代码的应该知道,JDK 的不同功能分布在不同代码仓库中。以 JDK 9 为例,代码仓库有 8 个: root, corba, hotspot,jaxp, jaxws, jdk, langtools 和 nashorn。其中 hotspot 是虚拟机实现代码,jdk 是 Java 类库和相关工具,langtools 是 javac 等工具,nashorn 是 JavaScript 引擎。

JEP 304: Garbage Collector Interface


垃圾收集器接口。

在 hotspot/gc 代码实现方面,引入一个干净的垃圾收集器接口,改进不同垃圾收集器源代码的隔离性。这样添加新的或者删除旧的 GC,都会更容易。

JEP 307: Parallel Full GC for G1


为 G1 垃圾收集器引入并行 Full GC。

JEP 310: Application Class-Data Sharing


Java 之前就引入了类数据共享机制,Class data sharing (CDS) ,以减少 Java 程序的启动时间,降低内存占用。简单来说,Java 安装程序会把 rt.jar 中的核心类提前转化成内部表示,转储到一个共享的文件中(shared archive)。多个 Java 进程(或者说 JVM 实例)可以共享这部分数据。

现在,希望更近一步,支持应用类的数据共享。

JEP 312: Thread-Local Handshakes


修改安全点机制,使得部分回调操作只需要停掉单个线程,而不像以前那样,只能选择或者停掉所有线程,或者都不停止。

JEP 313: Remove the Native-Header Generation Tool (javah)


去掉 javah 工具。

从  JDK 8 开始,javah 的功能已经集成到了 javac 中。所以,javah 可以删掉了。

JEP 314: Additional Unicode Language-Tag Extensions


额外的 Unicode 语言标签扩展。

增强 java.util.Locale  和相关 API,实现 BCP 47 语言标签中额外的 Unicode 扩展。

JEP 316: Heap Allocation on Alternative Memory Devices


在可选内存设备上分配堆内存。

支持将 Java 对象堆分配到 NV-DIMM 等内存设备上。随着 NV-DIMM 越来越便宜,未来的系统可能会搭载异构内存架构。

JEP 317: Experimental Java-Based JIT Compiler


实验性的基于 Java 的 JIT 编译器。

支持基于 Java 的 JIT 编译器。相关工作主要基于 Graal。Graal 也是 Java 9 中引入的 AOT 编译器的基础。

JEP 319: Root Certificates


根证书。

在 JDK 中提供一组默认的根证书。

JEP 322: Time-Based Release Versioning


基于时间的版本字符串。修改 Java SE 平台和 JDK 版本字符串机制。

Oracle Java 平台组首席架构师 Mark Reinhold 在博客上介绍了有关 Java 未来版本的一些想法(你能接受Java 9的下一个版本是Java 18.3吗?)。他提到,Java 计划按照时间来发布,每半年一个版本,而不是像之前那样按照重要特性来确定大版本,如果某个大的特性因故延期,这个版本可能一拖再拖。 当时,Mark 也提出来一种基于时间命名版本号的机制,比如下一个将于 2018 年 3 月发布的版本,就是 18.3,再下一个版本是 18.9,依此类推。 不过经过讨论,考虑和之前版本号的兼容等问题,最终选择的命名机制是: $FEATURE.$INTERIM.$UPDATE.$PATCH $FEATURE,每次版本发布加 1,不考虑具体的版本内容。(之前的主版本号部分)2018 年 3 月的版本是 JDK 10,9 月的版本是 JDK 11,依此类推。 $INTERIM,中间版本号,在大版本中间发布的,包含问题修复和增强的版本,不会引入非兼容性修改。 整体而言,Java 10 并没有包含很多新特性。

今天的文章Java 10 新特性全览分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21044.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注