如约而至,Java 10 正式发布!

3 月 20 日,Oracle 宣布 Java 10 正式发布。

官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html

在 Java 9 之后,Java 采用了基于时间发布的策略,每 6 个月一个版本。这是采用新的发布策略之后的第一个版本。

Java 10 主要有 12 个新特性。

具体来看看。

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 循环中的局部变量

看个复杂点的例子:

对该特性感兴趣的读者可以参考:https://developer.oracle.com/java/jdk-10-local-variable-type-inference

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 版本字符串机制。考虑和之前版本号的兼容等问题,新的版本命名机制是: $FEATURE.$INTERIM.$UPDATE.$PATCH

$FEATURE,每次版本发布加 1,不考虑具体的版本内容。(之前的主版本号部分)2018 年 3 月的版本是 JDK 10,9 月的版本是 JDK 11,依此类推。

$INTERIM,中间版本号,在大版本中间发布的,包含问题修复和增强的版本,不会引入非兼容性修改。

原文地址:https://www.cnblogs.com/han-1034683568/p/8615091.html

时间: 2024-10-09 23:20:18

如约而至,Java 10 正式发布!的相关文章

Java 9和Java 10的新特性

http://www.infoq.com/cn/news/2014/09/java9 Java 9新特性汇总 继2014年3月份Java 8发布之后,Open JDK加快了开发速度, Java 9的发布已经提上日程.预计在2016年发布Java 9,同时公布了JEP(JDK改进提议)中的前期列表.任职于Takipi 的Alex Zhitnitsky整理了Java 9中一些纳入JSR(Java规范提案)的新特性和大家一直期待但未确定的一些特性.这些特性有Jigsaw项目.新的智能编译工具.期待已久

Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码

美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码可以看出 Java 8 扩展支持到 2025 年,而 Java 11 扩展支持到 2026 年. 现在大部分都在用 Java 8,Java 9 和 10 目前很少有人在用,至少我没有发现有公司在生产环境应用的,那就是找死. 现在 Java 11 长期支持,也已

Java 11正式发布,这几个逆天新特性教你写出更牛逼的代码

就在前段时间,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,可在生产环境中使用! 这无疑对我们来说是一大好的消息.作为一名java开发者来说,虽然又要去学习和了解java11,但内心还是欣慰的.我想至少你和我一样的心情:Java在手,天下我有! 今天我们来看一下Java 11到底是什么.他有什么特别的.到底要不要升级到Java 11. Java 11有什么特别的 在Oracle官网中,进入下载页面,第一个可供下载的JDK版本已经提换成了Java SE 11 (LTS),

Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8进制.16进制************"); System.out.println(Integer.toBinaryString(i)); // 10转换2进制 System.out.println(Integer.toOctalString(i)); // 10转换8进制 System.out.p

eoLinker-AMS开源版JAVA版本正式发布

eoLinker-AMS开源版JAVA版本正式发布! 深感广大开发者的支持与厚爱,我们一直在努力为大家提供更多更好的接口服务.截止至2018年4月3日,eoLinker-AMS 开源版for PHP已经更新到了3.5.0,平均每周更新一个新版本--出色的优化迭代速度,上佳的功能支持,周到的用户支持服务,一切只为成就万物互联! eoLinker尊重每一种语言的使用者,也深知用户需求的多样性.为此,我们在发布eoLinker-AMS JAVA版的同时,正式启动多语言AMS开源计划!下一步,我们将会制

Java 10更新汇总,新的编译器通吃主流编程语言

早些时候Oracle发布了Java 10,这是Oracle更改发布策略之后的第一版Java,Oracle现已决定每六个月发布一个新的Java版本,周期缩短了,但是并不是说我们要学的更多了,而是说缩短开发周期后,有助于更快修复bug,并提前放出新功能,因为时间短所以新功能并不是很多.本次更新主要有:局部变量类型推断,G1并行完全垃圾回收,以及测试版的Java-Based JIT编译器.更新详情如下: 局部变量类型推断:在Java 8 lambda表达式的类型推断基础上,Java 10现已可以对本地

Java 10 实战第 1 篇:局部变量类型推断

现在 Java 9 被遗弃了直接升级到了 Java 10,之前也发过 Java 10 新特性的文章,现在是开始实战 Java 10 的时候了. 今天要实战的是 Java 10 中最重要的特性:局部变量类型推断,大家都知道是 var 关键字,但具体怎么使用,及要注意什么要点呢? 我们通过几个例子来讲解局部变量类型推断这个新特性! 什么是局部变量类型推断 var javastack = "javastack"; System.out.println(javastack); 大家看出来了,局

Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!

前几天写了一篇 Java 8 即将在 2019 年停止免费向企业提供更新的文章,企图迫使用户向更新一代的 Java 版本升级,但让人遗憾的是,小编今天收到了 Oracle Java 版本的升级推送,装完居然是 Java 10 !!!! 很意外,为什么直接从 Java 8 升级到了 Java 10,去年未满一岁的亲儿子 9 呢??抱着怀疑的心态去 Oracle 看了下,置顶推荐的是 Java 10.0.1,9也不见了,真是6翻了.. Java 10 添加的新功能 var 也是让人咋舌!! Java

Java 10 发布,是时候关注 Kotlin 了

Java 10 发布了,对于广大程序员来说,算是个大新闻.毕竟在程序员的世界里,Java 仍然保持了一哥的地位,也就是说,这个世界上使用 Java 语言编程的程序员可能是最多的.不过最近 Java 大版本更新的速度确实让老程序员们瞠目结舌.十八年前,也就是千禧年 2000,Sun 公司像神经病一样连续在 5 月份推出了 JKD1.3 和 1.4,按照现在的版本规则,也就是 Java 3 和 4.四年以后 Java 5 发布,那是 2004 年,这种发布节奏让程序员完全找不到节奏,以至于 Java