期待已久,没有跳票的 Java 10已正式发布!时隔6个月为我们带来 109项新特性。
为了更快地迭代,以及跟进社区反馈,Java的版本发布周期变更为每六个月一次,并且承诺不会跳票。新的发布周期也会严格遵循时间点,将在每年的 3月份和 9月份发布。所以 Java 10的版本号是 18.3。
Java 10是采用新发布周期的第一个版本,提供了 109项新特性,其中最备受关注的莫过于包括局部变量的类型推断在内的 12项关键的新特性。
Java 10的 12项关键新特性:
JEP 286:局部变量类型推断
对于开发者来说,这是 JDK10唯一的真正特性。它向 Java中引入在其他语言中很常见的 var,比如 JavaScript 。只要编译器可以推断此种类型,你不再需要专门声明一个局部变量的类型。一个简单的例子是:
这就消除了我们之前必须执行的 ArrayList
有趣的是,需要注意 var不能成为一个关键字,而是一个保留字。这意味着你仍然可以使用 var作为一个变量,方法或包名,但是现在(尽管我确定你绝不会)你不能再有一个类被调用。
JEP 310:应用类数据共享(CDS)
CDS在 JDK5时被引进以改善 JVM启动的表现,同时减少当多个虚拟机在同一个物理或虚拟的机器上运行时的资源占用。
JDK10将扩展 CDS到允许内部系统的类加载器、内部平台的类加载器和自定义类加载器来加载获得的类。之前,CDS的使用仅仅限制在了 bootstrap的类加载器。
JEP 314:额外的 Unicode语言标签扩展
这将改善 java.util.Locale类和相关的 API以实现额外 BCP 47语言标签的 Unicode扩展。尤其是,货币类型,一周的第一天,区域覆盖和时区等标签现在将被支持。
JEP 322:基于时间的版本控制
我们的 JDK版本字符串格式几乎与 JDK版本一样多。有幸的是,这是最后需要使用到的,我们可以坚持用它。这种格式使用起来很像 JDK9中介绍的提供一个更加语义的形式。有一件困扰我的事是包含了一个 INTERIM元素,正如 JEP提议中所说,“永远是0”。好吧,如果永远是0,那它有什么意义呢?他们说这是为未来使用做保留,但我仍不是很赞同。我认为,这有些冗余繁杂。
这也消除了在 JDK9中有过的相当奇怪的情形。第一次更新是 JDK 9.0.1 ,非常符合逻辑。第二次更新是 JDK 9.0.4 ,不合逻辑。原因是,在 JDK9的版本计数模式下,需要留下空白以便应急或不在预期安排的更新使用。但既然没有更新是必须的,为什么不简单称之为 JDK 9.0.2呢?
JEP 319:根证书
在 JDK中将提供一套默认的 CA根证书。关键的安全部件,如 TLS ,在 OpenJDK构建中将默认有效。这是 Oracle正在努力确保 OpenJDK二进制和 Oracle JDK二进制功能上一样的工作的一部分,是一项有用的补充内容。
JEP 307:并行全垃圾回收器 G1
G1是设计来作为一种低延时的垃圾回收器(但是如果它跟不上旧的堆碎片产生的提升速率的话,将仍然采用完整压缩集合)。在 JDK9之前,默认的收集器是并行,吞吐,收集器。为了减少在使用默认的收集器的应用性能配置文件的差异,G1现在有一个并行完整收集机制。
JEP 313:移除 Native-Header自动生成工具
Java9开始了一些对 JDK的家务管理,这项特性是对它的延续。当编译 JNI代码时,已不再需要单独的工具来生成头文件,因为这可以通过 javac完成。在未来的某一时刻,JNI将会被 Panama项目的结果取代,但是何时发生还不清楚。
JEP 304:垃圾回收器接口
这不是让开发者用来控制垃圾回收的接口;而是一个在 JVM 源代码中的允许另外的垃圾回收器快速方便的集成的接口。
JEP 312:线程-局部变量管控
这是在 JVM内部相当低级别的更改,现在将允许在不运行全局虚拟机安全点的情况下实现线程回调。这将使得停止单个线程变得可能和便宜,而不是只能启用或停止所有线程。
JEP 316:在备用存储装置上的堆分配
硬件技术在持续进化,现在可以使用与传统 DRAM具有相同接口和类似性能特点的非易失性 RAM 。这项 JEP将使得 JVM能够使用适用于不同类型的存储机制的堆。
JEP 317:试验性的基于 Java的 JIT编译器
最近宣布的 Metropolis项目,提议用 Java重写大部分 JVM。乍一想,觉得很奇怪。如果 JVM是用 Java编写的,那么是否需要一个 JVM来运行 JVM?相应的,这导致了一个很好的镜像类比。现实情况是,使用 Java编写 JVM并不意味着必须将其编译为字节码,你可以使用 AOT编译,然后在运行时编译代码以提高性能。
这项 JEP将 Graal编译器研究项目引入到 JDK中。并给将 Metropolis项目成为现实,使 JVM性能与当前 C++所写版本匹敌(或有幸超越)提供基础。
JEP 296:合并 JDK多个代码仓库到一个单独的储存库中
在 JDK9中,有 8个仓库: root、corba、hotspot、jaxp、jaxws、jdk、langtools和 nashorn 。在 JDK10中这些将被合并为一个,使得跨相互依赖的变更集的存储库运行 atomic commit (原子提交)成为可能。
相关链接:
JDK 10正式版下载地址:
JDK 10安装指南
JDK 10发布说明
新特性
http://www.oracle.com/technetwork/java/javase/10-relnote-issues-4108729.html#NewFeature
Readme
果然要一刻不停的学习呀~
小伙伴们加油了
不然都赶不上版本更新了
不说了我看书去了








还没有评论,来说两句吧...