如约而至,Java 10 正式发布:包含 109 项新特性

期待已久,没有跳票的 Java 10 已正式发布!你可以通过这里下载 Java 10 正式版。

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

Java 10 是采用新发布周期的第一个版本,提供了 109 项新特性,其中最备受关注的莫过于局部变量的类型推断。

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

这样的 Java 代码你喜欢吗?

相关链接:

  • JDK 10 安装指南

  • JDK 10 发布说明

  • 新特性

  • Readme

其他链接:

  • JDK 10 的 109 项新特性

Java 10 的 12 项关键新特性:

  • JEP 286: 局部变量的类型推断。该特性在社区讨论了很久并做了调查,可查看 JEP 286 调查结果

  • JEP 296: 将 JDK 的多个代码仓库合并到一个储存库中

  • JEP 304: 垃圾收集器接口。通过引入一个干净的垃圾收集器(GC)接口,改善不同垃圾收集器的源码隔离性。

  • JEP 307: 向 G1 引入并行 Full GC

  • JEP 310: 应用类数据共享。为改善启动和占用空间,在现有的类数据共享(“CDS”)功能上再次拓展,以允许应用类放置在共享存档中

  • JEP 312: 线程局部管控。允许停止单个线程,而不是只能启用或停止所有线程

  • JEP 313: 移除 Native-Header Generation Tool (javah)

  • JEP 314: 额外的 Unicode 语言标签扩展。包括:cu (货币类型)、fw (每周第一天为星期几)、rg (区域覆盖)、tz (时区) 等

  • JEP 316: 在备用内存设备上分配堆内存。允许 HotSpot 虚拟机在备用内存设备上分配 Java 对象堆

  • JEP 317: 基于 Java 的 JIT 编译器(试验版本)

  • JEP 319: 根证书。开源 Java SE Root CA 程序中的根证书

  • JEP 322: 基于时间的版本发布模式。“Feature releases” 版本将包含新特性,“Update releases” 版本仅修复 Bug

JDK 10 正式版下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

其他资料:

Java 10的新特性

说了这么多,看Java 10都会有哪些特性来改变我们写代码的方式呢?!

1.局部变量类型推断

局部变量类型推断可以说是Java 10中最值得注意的特性,这是Java语言开发人员为了简化Java应用程序的编写而采取的又一步,如下图所示。

这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。

局部变量类型推断将引入"var"关键字,也就是你可以随意定义变量而不必指定变量的类型,如:

  1. List <String> list = new ArrayList <String>();

  2. Stream <String> stream = getStream();

将被下面这个新语法所取代:

  1. var list = new ArrayList <String>();

  2. var stream = getStream();

看完是不是有点JS的即视感???越来越像JS了吗?!虽然类型推断在Java中不是一个新概念,但在局部变量中确是很大的一个改进。

说到类型推断,从JDK 5引进泛型,到JDK 7的"<>"操作符允许不绑定类型而初始化List,再到JDK 8的Lambda表达式,再到现在JDK 10的局部变量类型推断,Java类型推断正大刀阔斧的向前发展。

  1. // 该运算符允许在没有绑定ArrayList <>的类型的情况下初始化列表

  2. List <String> list = new LinkedList <>();

局部变量类型推荐仅限于如下使用场景:

  • 局部变量初始化

  • 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工具,这个很简单并且很重要。

转载来源:https://www.oschina.net/news/94402/java-10-released-mar-21?nocache=1521601201815

如约而至,Java 10 正式发布:包含 109 项新特性相关推荐

  1. Java 10 正式发布!时隔 6 月带来 109 项新特性

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 期待已久,没有跳票的 Java 10 已正式发布! 为了更快地迭代,以及跟进社区反馈,Jav ...

  2. JDK 10 的 109 项新特性

    来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10 虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的 ...

  3. Java 15 正式发布, 14 个新特性,刷新你的认知!!

    JDK 15 2020/09/15 如期而至! 这个时间牛逼啊,和苹果发布会同天? OracleJDK 15 发布地址: https://www.oracle.com/java/technologie ...

  4. Spring Framework 5.2 正式发布,14项新特性一览

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | xplanet 来源 | http://oschina.net/news/1103 ...

  5. 3月20日, Java 10 正式发布了!

    3 月 20 日,Oracle 宣布 Java 10 正式发布.官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/inde ...

  6. Java 5~11各个版本新特性史上最全总结

    Java 5 Java5开发代号为Tiger(老虎),于2004-09-30发行 特性列表 泛型 枚举 自动装箱拆箱 可变参数 注解 foreach循环(增强for.for/in) 静态导入 格式化( ...

  7. Java 7~14各个版本新特性详解

    Java 7 特性列表 switch中添加对String类型的支持 数字字面量的改进 / 数值可加下划 异常处理(捕获多个异常) try-with-resources 增强泛型推断 JSR203 NI ...

  8. Java 10正式发布,带来了这些新特性

    点击上方"程序员小灰",选择"置顶公众号" 有趣有内涵的文章第一时间送达! 本文转载自公众号  InfoQ 作者 | 张建锋编辑 | 郭蕾 北京时间 3 月 2 ...

  9. Java番外篇2——jdk8新特性

    Java番外篇2--jdk8新特性 1.Lambda 1.1.无参无返回值 public class Test {interface Print{void print();}public static ...

最新文章

  1. ElasticSearch 条件更新 删除
  2. windows系统登陆就注销如何解决,系统登陆就注销的解决办法
  3. modbus-rtu qt4-serialport2------micro2440 as host
  4. 用udp协议通讯时怎样得知目标机是否获得了数据包?_和相亲对象聊天,你属于UDP还是CDP?...
  5. GAN论文阅读路线图,更快地通过大量阅读入门GAN
  6. 2017.10.11 network 网络扩容 思考记录
  7. 编程利器 Beyond Compare 的使用
  8. 树莓派zero配置打印机
  9. 定期删除30天以前的elasticsearch的日志
  10. 【NOIP1999】【codevs1083】Cantor表(找规律)
  11. C# 替换桌面背景图片
  12. Android开发常用的模拟器
  13. _nullterminated
  14. Windows文件名太长无法删除
  15. 踩坑记---Win10安装anaconda及tensorflow-cpu版
  16. Serverless 极致弹性解构在线游戏行业痛点,你有过迷茫吗
  17. 云脉H5高效纠错系统
  18. 微软开源自有云服务器专属 Linux 发行版 CBL-Mariner,可在 GitHub 免费下载!
  19. bzoj 1123: [POI2008]BLO (tarjan求点双+树形DP)
  20. CRT显示器和液晶显示器

热门文章

  1. 简单易懂的破解脱壳从0开始
  2. 技术MBA高科技企业的“宠儿”
  3. 做一个项目,平时都用到哪些工具提高效率(中)
  4. memcache_engine + memcachedb = 高性能分布式内存数据库
  5. div 文字 input 垂直居中
  6. 136.只出现一次的数字
  7. 数值计算方法(高斯消元以及LU分解)
  8. 【AI视野·今日CV 计算机视觉论文速览 第242期】Mon, 14 Feb 2022
  9. 利用juypter搭建远程可访问的python交互页面
  10. 数据库的操作 增删改查 mysql