甲骨文oracle公司java se, jdk 10 于已2018年3月20号正式发布!尽管jdk 9对于许多java开发人员非常新鲜,但它的发展并没有停止。特别是jdk 10为局部变量实例化引入类型推断机制,并将现有的jdk存储库合并到一个mercurial存储库中。此外,为了更快地迭代,以及跟进社区反馈,java 的版本发布周期变更为每六个月一次,并且承诺不会跳票。新的发布周期也会严格遵循时间点,将在每年的 3 月份和 9 月份发布。
jdk(java development kit)是整个java的核心,包括了java运行环境、java开发工具和java基础类库源代码。jdk作为java开发的环境,是运行java程序不可缺少的环境,不管是做java开发还是做安卓开发,都必须在电脑上安装jdk。小到小型设备,大到智慧城市,java的贡献力量是其他任何技术无可比拟的。
java 10 新特性介绍
java 10 发布说明
http://www.oracle.com/technetwork/java/javase/10-relnotes-4108314.html
1.局部变量类型推断
局部变量类型推断可以说是java 10中最值得注意的特性,这是java语言开发人员为了简化java应用程序的编写而采取的又一步,如下图所示。
这个新功能将为java增加一些语法糖 – 简化它并改善开发者体验。新的语法将减少与编写java相关的冗长度,同时保持对静态类型安全性的承诺。局部变量类型推断将引入”var”关键字,也就是你可以随意定义变量而不必指定变量的类型,如下图:将被下面这个新语法所取代:
看完是不是有点js的即视感???越来越像js了吗?!虽然类型推断在java中不是一个新概念,但在局部变量中确是很大的一个改进。
说到类型推断,从jdk 5引进泛型,到jdk 7的”<>”操作符允许不绑定类型而初始化list,再到jdk 8的lambda表达式,再到现在jdk 10的局部变量类型推断,java类型推断正大刀阔斧的向前发展。
局部变量类型推荐仅限于如下使用场景:
• 局部变量初始化
• for循环内部索引变量
• 传统的for循环声明变量
java官方表示,它不能用于以下几个地方:
• 方法参数
• 构造函数参数
• 方法返回类型
• 字段
• 捕获表达式(或任何其他类型的变量声明)
2. gc改进和内存管理
jdk 10中有2个jep专门用于改进当前的垃圾收集元素。
第一个垃圾收集器接口是(jep 304),它将引入一个纯净的垃圾收集器接口,以帮助改进不同垃圾收集器的源代码隔离。
预定用于java 10的第二个jep是针对g1的并行完全gc(jep 307),其重点在于通过完全gc并行来改善g1最坏情况的等待时间。g1是java 9中的默认gc,并且此jep的目标是使g1平行。
3. 线程本地握手(jep 312)
jdk 10将引入一种在线程上执行回调的新方法,因此这将会很方便能停止单个线程而不是停止全部线程或者一个都不停。
4. 备用内存设备上的堆分配(jep 316)
允许hotspot vm在备用内存设备上分配java对象堆内存,该内存设备将由用户指定。
5. 其他unicode语言 – 标记扩展(jep 314)
目标是增强java.util.locale及其相关的api,以便实现语言标记语法的其他unicode扩展(bcp 47)。
6. 基于java的实验性jit编译器
oracle希望将其java jit编译器graal用作linux / x64平台上的实验性jit编译器。
7. 根证书(jep 319)
这个的目标是在oracle的java se中开源根证书。
8. 根证书颁发认证(ca)
这将使openjdk对开发人员更具吸引力,它还旨在减少openjdk和oracle jdk构建之间的差异。
9. 将jdk生态整合单个存储库(jep 296)
此jep的主要目标是执行一些内存管理,并将jdk生态的众多存储库组合到一个存储库中。
10. 删除工具javah(jep 313)
从jdk中移除了javah工具,这个很简单并且很重要。
检查jdk环境是否配置成功命令:
cmd命令提示符输入 java -version
jdk 10 / 9 / 8 / 7 java环境配置小工具
java™ se development kit 所有版本下载页面