就在刚刚,Java 16正式发布。

Java 16 正式发布

主要特性

Vector API(孵化)

提升了Java在CPU向量计算的性能,这是对大规模的张量计算的支持,提升了Java在AI领域的能力。

启用了新的C++特性

允许在JDK中C++源代码中使用 C ++ 14的新特性。

从 Mercurial 迁移到 Git

Git目前已经成为代码版本管理领域的绝对统治者,现在Java顺应潮流也使用Git进行源代码管理。

迁移到GitHub

OpenJDK的代码现在由GitHub托管。

ZGC垃圾收集器

并发线程堆栈处理的垃圾收集器。

Unix域套接字通道

Unix域套接字对ServerSocketChannelSocketChannel的支持。

Alpine Linux Port

在x64和AArch64体系结构上,将JDK移植到Alpine Linux以及其它使用musl C库的Linxu发行版上。

Elastic Metaspace

Hotspot对类元数据的处理(metaspace-元空间)有了很大的改进。占用空间减少了,现在可以更快地将未使用的内存回收到操作系统。

Windows/AArch64 Port

将 JDK 移植到 Windows / AArch64平台。

Foreign Linker API(孵化)

引入一个API,该API提供对本地代码的静态类型的纯Java访问。该API与Foreign-Memory API(JEP 393)一起将大大简化绑定到本机库的原本容易出错的过程。

Warnings for Value-Based Classes

将原始包装器类指定为*基于值的类,*并弃用其构造函数以将其删除,从而提示新的弃用警告。提供有关在Java平台中不正确尝试在任何基于值的类的实例上进行同步的警告。

Packaging Tool

提供jpackage用于打包独立Java应用程序的工具。

  • 支持本地打包格式,以为最终用户提供自然的安装体验。这些格式包括msiexe在Windows,pkgdmg在MacOS,以及debrpm在Linux上。

  • 允许在打包时指定启动时间参数。

  • 可以从命令行直接调用,也可以通过ToolProviderAPI以编程方式调用。

Foreign-Memory Access API (第三次孵化)

引入一个API,允许Java程序安全有效地访问Java堆之外的外部内存。

Pattern Matching for instanceof

在此之前 Java 中:

// 先判断类型
if (obj instanceof String) {// 然后转换String s = (String) obj;// 然后才能使用
}

自动匹配模式中:

if (obj instanceof String s) {// 如果类型匹配 直接使用
} else {// 如果类型不匹配则不能直接使用
}

Records Class

终于转正了,Java类不再又臭又长。原来是这样的:

public class Range {private final int min;private final int max;public Range(int min, int max) {this.min = min;this.max = max;}public int getMin() {return min;}public int getMax() {return max;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Range range = (Range) o;return min == range.min && max == range.max;}@Overridepublic int hashCode() {return Objects.hash(min, max);}@Overridepublic String toString() {return "Range{" +"min=" + min +", max=" + max +'}';}
}

现在可以简化为:

public record Range(int min, int max) {}

以往的文章有详细介绍。Java 14 新特性之JEP 359: Records(Preview)

默认情况下严格封装JDK

提高JDK的安全性和可维护性,跟普通开发者无关。

Sealed Classes

密封类,简单说就是被final修饰的类,密封类不能被继承,防止了恶意的派生。

另外Oracle发文对参与JDK 16贡献的公司和个人进行了感谢。

Oracle要感谢为ARM,SAP,Red Hat和腾讯等组织工作的开发人员所做的杰出贡献。我们也很高兴看到较小的组织(例如Ampere Computing,Bellsoft,DataDog,Microdoc和独立开发人员)的贡献,他们共同贡献了Java 16中3%的修复程序。

我们同样感谢许多经验丰富的开发人员,他们审查了建议的更改,尝试采用早期访问版本并报告问题的早期采用者,以及在OpenJDK邮件列表中提供反馈的敬业专业人员。

参与JDK16处理Issues的组织

推荐关注本文作者:码农小胖哥

分享高质量编程知识,探讨IT人生

技术干货,实战技巧,面试技巧,前沿资讯一个都不能少

往期推荐

如何用一句话得罪 95% 的中国人?昨天这家公司做到了...

携手阿里云送一波超大福利!不仅有低价ECS,更有机械键盘、AirPods Pro等好礼!

奇奇怪怪的大佬:理发店小弟到阿里P10

重磅!微信 3.0 客户端支持刷朋友圈了!从此爱上上班还是无心上班?

你以为在做的是微服务?不!你只是做了个比单体还糟糕的分布式单体!

喜欢的这里报道

↘↘↘

Java 16 正式发布!你还学得动吗?相关推荐

  1. babel原理_带你了解 snowpack 原理,你还学得动么(下)

    作者:AlienZHOU 转发链接:https://zhuanlan.zhihu.com/p/149351900 目录 带你了解 snowpack 原理,你还学得动么(上) 带你了解 snowpack ...

  2. 重磅:Java 16 正式发布了!

    2020 年是值得纪念的一年,这一年中我们庆祝了 Java 的 25 岁生日.经过二十多年的持续创新,Java 一直在: 通过适应不断变化的技术格局来保持灵活性,同时维持平台独立性. 通过保持向后兼容 ...

  3. 重磅!Java 16 正式发布

    点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 作者 | Sharat Chander   策划 | 万 ...

  4. 重磅!Spring Boot 2.5.0火热发布,还学得动吗?

    今年520的事情是真的多,把Spring Boot 2.5.0的版本发布都给忽略了! 今天跟我一起看看Spring Boot 2.5.0又都带来了哪些振奋人心的新特性吧! 主要更新 支持 Java 1 ...

  5. Java 16 正式发布

    主要特性 Vector API(孵化) 提升了Java在CPU向量计算的性能,这是对大规模的张量计算的支持,提升了Java在AI领域的能力. 启用了新的C++特性 允许在JDK中C++源代码中使用 C ...

  6. C#9.0 终于来了,您还学的动吗? 带上VS一起解读吧!

    一:背景 1. 讲故事 好消息,.NET 5.0 终于在2020年6月10日发布了第五个预览版,眼尖的同学一定看到了在这个版本中终于支持了 C# 9.0,此处有掌声,太好了!!! .Net5官方链接 ...

  7. 我年龄大了还学的动it吗

    我有一个朋友是下岗工人,大专学历,今年36岁,生活压力大,以前学了一些软件知识 他现在想进入这一行特别是编程这方面,而且想以此为生,各位兄弟你们说他行吗?如果行该如何学,学些什么? 转载于:https ...

  8. Javascript在ES2019中又新增了8个功能!你还学的动么?

    苦逼学习的ES6还没玩溜呢,现在又更新了8个功能,不得不感叹前端在这几年的快速发展. 不过好在,基础夯实之后,再学习新的内容,分分钟的事情. 废话不多说,直接来看这回又更新了些什么幺蛾子. Catch ...

  9. 微软TypeScript 3.0重磅发布!扶我起来,我还学得动

    web前端教程 用大白话,来讲编程 北京时间7月31日,微软宣布推出 TypeScript 3.0 正式版.TypeScript 3.0 是一个新的里程碑. 官方表示,尽管版本号是一个大变化,但 3. ...

最新文章

  1. 华为 S5700S-28P-LI Console连接电脑
  2. delphi中关于时间差的实例
  3. webpack相关配置
  4. android 处理通话焦点,java – AUDIOFOCUS_LOSS在Android中打电话后打电话
  5. Linux 查看进程命令
  6. nfa确定化 dfa最小化_深度学习中的优化:梯度下降,确定全局最优值或与之接近的局部最优值...
  7. vue 字典_【开源】基于Vue的前端组件库HeyUI
  8. 【离散数学中的数据结构与算法】四 加法法则与乘法法则
  9. 如何将卷积神经网络中的全连接层变成卷积层
  10. iOS 自带二维码扫描功能的实现
  11. 深入学习Make命令和Makefile(上)
  12. verilog中阻塞赋值与 非阻塞赋值的区别
  13. 总编下午茶:技术老男人的创业经
  14. 大数据分析师培训出来就业前景怎么样?数据分析有没有发展前景?
  15. 计算机c盘如何扩大,C盘太小怎么办?教你扩大容量!
  16. 高清3D人体解剖图谱
  17. 关于本公众号科研交流群(微信群)的说明
  18. 苹果手机上网很慢_手机的信号满格,为什么上网速度却很慢?一招教你解除限制...
  19. MacBook上有哪些值得下载的软件?
  20. 微信公众号申请+新浪SAE申请

热门文章

  1. linux socket 套接字状态 EAGAIN EWOULDBLOCK EINTR 与非阻塞 简介
  2. linux 崩溃文件 coredump 简介
  3. linux c 信号量简介
  4. 使用 openssl反弹加密 shell
  5. mysql 查询日志介绍
  6. NPTL简介 (NATIVE POSIX Thread Library)
  7. linux c 客户端与 golang 服务端通信(网络字节序)
  8. Linux rm 命令
  9. iconv文件编码判断转换
  10. Shell脚本的调试技术