Java10正式发布时隔6月带来109

点击上方“CSDN”,选择“置顶”

关键时刻,第一时间送达!

期待已久,没有跳票的Java10已正式发布!

为了更快地迭代,以及跟进社区反馈,Java的版本发布周期变更为了每六个月一次,并且承诺不会跳票。新的发布周期也会严格遵循时间点,将在每年的3月份和9月份发布。此次Java10的版本号是18.3。

Java10是采用新发布周期的第一个版本,提供了项新特性,其中最受的莫过于包括局部变量的类型推断所在内的12项关键新特性。

Java10的12项关键新特性

JEP:局部变量类型推断

对于开发者来说,这是JDK10唯一的真正特性。它向Java中引入在其他语言中很常见的var,比如JavaScript。只要编译器可以推断此种类型,你就不再需要专门声明一个局部变量的类型。一个简单的例子是:

varx=nwArrayListString();

这就消除了我们之前必须执行的ArrayListString类型定义的重复。我鼓励你们去读JEP,因为上面有一些关于这个句法是否能用的规则。

有趣的是,需要注意var不能成为一个关键字,而是一个保留字。这意味着你仍然可以使用var作为一个变量、方法或包名,但是现在不能再调用类。

JEP:应用类数据共享(CDS)

CDS在JDK5时被引进以改善JVM启动的表现,同时减少当多个虚拟机在同一个物理或虚拟的机器上运行时的资源占用。

JDK10将扩展CDS到允许内部系统的类加载器、内部平台的类加载器和自定义类加载器来加载获得的类。之前,CDS的使用仅仅限制在了bootstrap的类加载器。

JEP:额外的Unicod语言标签扩展

这将改善java.util.Local类和相关的API以实现额外BCP47语言标签的Unicod扩展。尤其是货币类型,区域覆盖和时区等标签现在将被支持。

JEP:基于时间的版本控制

JDK版本字符串格式几乎与JDK版本一样多。有幸的是,这是最后需要使用到的,我们可以坚持用它。这种格式使用起来很像JDK9中介绍的提供一个更加语义的形式。但其中包含了一个INTERIM元素,正如JEP提议中所说的“永远是0”。好吧,如果永远是0,那它有什么意义呢?他们说这是为未来使用做保留,但我仍不是很赞同。我认为,这有些冗余繁杂。

这也消除了在JDK9中有过的相当奇怪的情形。第一次更新是JDK9.0.1,非常符合逻辑。第二次更新是JDK9.0.4,不合逻辑。原因是,在JDK9的版本计数模式下,需要留下空白以便应急或不在预期安排的更新使用。但既然没有更新是必须的,为什么不简单称之为JDK9.0.2呢?

JEP:根证书

在JDK中将提供一套默认的CA根证书。关键的安全部件,如TLS,在OpnJDK构建中将默认有效。Oracl正在努力确保OpnJDK二进制和OraclJDK二进制功能一致,这是一项有用的补充内容。

JEP:并行全垃圾回收器G1

G1是设计来作为一种低延时的垃圾回收器(但是如果它跟不上旧的堆碎片产生的提升速率的话,将仍然采用完整压缩集合)。在JDK9之前,默认的收集器是并行、吞吐、收集器。为了减少在使用默认的收集器的应用性能配置文件的差异,G1现在有一个并行完整收集机制。

JEP:移除Nativ-Hadr自动生成工具

Java9开始了一些对JDK的家务管理,这项特性是对它的延续。当编译JNI代码时,已不再需要单独的工具来生成头文件,可以通过javac完成。在未来的某一时刻,JNI将被Panama项目的结果取代。

JEP:垃圾回收器接口

这不是让开发者用来控制垃圾回收的接口,而是一个在JVM源代码中的允许另外的垃圾回收器快速方便的集成的接口。

JEP:线程—局部变量管控

这是在JVM内部相当低级别的更改,现在将允许在不运行全局虚拟机安全点的情况下实现线程回调。这将使得停止单个线程变得可能和便宜,而不是只能启用或停止所有线程。

JEP:在备用存储装置上的堆分配

硬件技术在持续进化,现在可以使用与传统DRAM具有相同接口和类似性能特点的非易失性RAM。这项JEP将使得JVM能够使用适用于不同类型的存储机制的堆。

JEP:试验性的基于Java的JIT编译器

最近宣布的Mtropolis项目提议用Java重写大部分JVM,乍一看觉得很奇怪。如果JVM是用Java编写的,那么是否需要一个JVM来运行JVM?相应的,这导致了一个很好的镜像类比。现实情况是,使用Java编写JVM并不意味着必须将其编译为字节码,你可以使用AOT编译,然后在运行时编译代码以提高性能。

这项JEP将Graal编译器研究项目引入到JDK中,并让Mtropolis项目成为现实,使JVM性能与当前C++所写版本的匹敌提供了基础。

JEP:合并JDK多个代码仓库到一个单独的储存库中

在JDK9中,有8个仓库:root、corba、hotspot、jaxp、jaxws、jdk、langtools和nashorn。在JDK10中这些将被合并为一个,使得跨相互依赖的变更集的存储库运行atomic







































北京去哪里医院治疗白癜风好
北京中科白癜风医院门诊靠谱吗



转载请注明:http://www.92nongye.com/xxmb/xxmb/204620332.html