JDK 16:Java 16的新功能 - InfoWorld

可以在jdk.java.net上找到适用于Linux,Windows和MacOS的JDK 16的早期版本。

JDK 16将作为标准Java版本的参考实现,将在明年2021年3月到来。

截至10月8日,八项提案正式针对JDK16。Java16的新功能包括:

  • 将ZGC(Z垃圾收集器)线程堆栈处理从安全点safepoints迁移到并发阶段。

    • 该计划的目标包括从 ZGC安全点中 删除线程堆栈处理。
    • 使堆栈处理变得惰性,协作,并发和增量;
    • 从ZGC安全点删除所有其他每线程根处理;
    • 并为其他HotSpot VM子系统提供了一种机制来延迟处理堆栈。
    • 这样,ZGC使HotSpot中的GC暂停和可伸缩性问题成为过去。
    • 到目前为止,随着堆大小和元空间大小而扩展的GC操作已经从安全点操作中移出并进入并发阶段。
    • 这些包括标记,重定位,参考处理,类卸载和大多数根处理。
    • GC安全点中唯一仍进行的活动是根处理和有时间限制的标记终止操作的子集。
    • 这些根目录包括Java线程堆栈和其他线程根目录,这些根目录存在问题,因为它们随线程数的增长而扩展。
    • 为了超越当前状况,必须将包括堆栈扫描在内的每线程处理移至并发阶段。
    • 使用此计划,改进的延迟的吞吐成本应该是微不足道的,并且在典型计算机上的ZGC安全点内花费的时间应少于一毫秒。
  • 弹性元空间能力,它可以将未使用的HotSpot VM类元数据(元空间)内存更迅速地返回给操作系统,从而减少了元空间的占用空间并简化了元空间代码,从而降低了维护成本。元空间存在大量的堆外内存使用问题。该计划要求用基于伙伴的分配方案替换现有的内存分配器,提供一种将内存划分为多个分区以满足内存请求的算法。这种方法已在Linux内核等地方使用,它将使在较小的块中分配内存以减少类加载器的开销变得切实可行。碎片也将减少。此外,从操作系统到内存管理领域的内存承诺将根据需要延迟执行,减少了从大型舞台开始但不立即使用它们或可能未完全使用它们的装载机的占地面积。为了充分利用伙伴分配所提供的弹性,将元空间内存排列成大小统一的颗粒,这些颗粒可以彼此独立地进行提交和不提交。
  • 启用C ++ 14语言功能,以允许在JDK C ++源代码中使用C ++ 14功能,并提供有关在HotSpot VM代码中可以使用其中哪些功能的特定指南。通过JDK 15,JDK中C ++代码使用的语言功能已限于C ++ 98/03语言标准。使用JDK 11,源代码已更新,以支持使用更新版本的C ++标准进行构建。这包括能够使用支持C ++ 11/14语言功能的最新版本的编译器进行构建。本提案不建议在HotSpot之外使用的C ++代码的样式或用法更改。但是要利用C ++语言功能,需要进行一些构建时更改,具体取决于平台编译器。
  • 孵化器阶段的矢量API,其中JDK将装有一个孵化器模块,jdk.incubator.vector,以表达可在支持的CPU架构上编译为最佳矢量硬件指令的矢量计算,以实现优于等效标量计算的性能。向量API提供了一种使用Java编写复杂向量算法的机制,该机制使用HotSpot VM中预先存在的支持进行向量化,但其用户模型使向量化更可预测且更可靠。该提案的目标包括提供一个清晰简洁的API来表达一系列矢量计算,通过支持多种CPU架构而与平台无关,在x64和AArch64架构上提供可靠的运行时编译和性能。优雅降级也是一个目标,
  • 将JDK移植到Windows / AArch64平台。随着新的服务器类和消费类AArch64(ARM64)硬件的发布,由于需求,Windows / AArch64已成为重要的平台。尽管移植本身已经基本完成,但该建议的重点是将端口集成到主线JDK存储库中。
  • 在x64和AArch64体系结构上,将JDK移植到Alpine Linux和其他使用musl作为其主要C库的Linux发行版。Musl是ISO C和Posix标准中描述的标准库功能的Linux实现。
    • 由于Alpine Linux的映像较小,因此已在云部署,微服务和容器环境中广泛采用。
    • Linux的Docker映像小于6MB。在这样的设置中让Java开箱即用地运行,
    • 将允许Tomcat,Jetty,Spring和其他流行的框架在这些环境中本机运行。
    • 通过使用jlink减小Java运行时的大小,用户可以创建专门为运行特定应用程序而定制的甚至更小的映像。
  • OpenJDK源代码库从Mercurial迁移到Git。推动这一努力的是版本控制系统元数据大小以及可用工具和托管方面的优势。
  • 迁移到GitHub,与从Mercurial到Git的迁移有关,JDK 16源代码存储库位于流行的代码共享站点上。Mercurial JDK和JDK-sandbox的向Git,GitHub和Skara的过渡已于9月5日完成,现已开放供稿。

java16 第二篇

  • JDK 15 已于今年 9 月 15 日发布,这是一个短期版本,只会受到 Oracle 6 个月的支持。JDK 16 将作为标准 Java 版本的参考实现在 2021 年 3 月 16 日发布。
  • 与 JDK 15 一样,JDK 16 也将是个短期版本,仅提供 6 个月的支持。
  • 预计于 2021 年 9 月发布的 JDK 17 将是一个长期支持(LTS)版本,会获得数年的支持。目前的 LTS 版本 JDK 11 则于 2018 年 9 月发布。

JDK 16 现在处于 Early-Access(EA,早期访问)阶段,目前最新版本是 Build 26。

按 InfoWorld 所述,截至 2020 年 11 月 30 日,已有 14 个特性已被正式提了出来,还有 2 个特性则是预测性质。Java 16 即将推出的新功能或包括有:

  • 之前在 JDK 15 中预览过,密封类和接口限制了 哪些其他类和接口可以继承或实现它们。

    • 该计划的目标包括:允许类或接口的作者控制负责实现它的代码,
    • 提供比访问修饰符更声明性的方式来限制超类的使用,
    • 并通过提供模式分析的基础来支持模式匹配的未来方向。
  • 除了 misc.Unsafe 等关键的内部 API 外,
    • 默认情况下对 JDK 内部进行强封装。用户可以选择自 JDK 9 以来默认的宽松的强封装。
  • 外部链接程序 API,提供对本地代码的 静态类型的 Java 访问。该 API 将在 JDK 16 中处于孵化阶段。
  • 移动 ZGC(Z 垃圾收集器)线程堆栈处理从安全点到 并发阶段。该计划的目标包括从 ZGC 安全点中删除线程堆栈处理。
  • 弹性元空间能力,它可以将未使用的 HotSpot VM 类元数据(元空间)内存更迅速地返回给操作系统,从而减少元空间的占用空间并简化元空间代码,从而降低维护成本。
  • 启用 C ++ 14语言功能,允许在 JDK C ++源代码中使用 C ++ 14功能。
  • 孵化器阶段的矢量 API,其中 JDK 将配备一个孵化器模块,jdk.incubator.vector
    • 以表达可在支持的 CPU 架构上编译为 最佳矢量 硬件指令的矢量计算,以实现 优于等效标量计算的性能。
  • 将 JDK 移植到 Windows / AArch64平台。
  • 在 x64和 AArch64体系结构上,将 JDK 移植到 Alpine Linux 和其他使用 musl 作为其主要 C 库的 Linux 发行版。
  • 提供 记录类,作为不可更改数据的透明载体。
  • 增加 Unix 域 套接字 通道,其中在 nio.channels 包中的 套接字通道和 服务器套接字通道 API 中增加了 Unix 域(AF_UNIX)套接字支持。
  • 外部存储器 访问 API,允许 Java 程序安全地访问 Java 堆外部的外部存储器。
  • 用于 instanceof 运算符的模式匹配,在 JDK 14 和 JDK 15 中进行了预览,将在 JDK 16 中完成。
  • 提供用于打包独立 Java 应用程序的 jpackage 工具。
  • OpenJDK 源码从 Mercurial 迁移到 Git,托管平台也迁移到 GitHub。

详情可查看:https://jdk.java.net/16/

java16 新特性相关推荐

  1. java的发展(8-17新特性整理)

    java java的诞生与历史: 简介:Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. ...

  2. Java8-19新特性一览 ,认识全新的前沿技术

    文章目录 Java8-19新特性一览 ,认识全新的前沿技术 前言 你的收获 Java发展趋势 准备工作 新特性 1.接口private 1).说明 2).案例 3).注意 2.类型推断 1).说明 2 ...

  3. Java9、10、11、12、13、14、15、16、17个版本新特性

    Java9新特性 1 模块化系统 模块(module)的概念,其实就是package外再裹一层,也就是说,用模块来管理各个package,通过声明某个package暴露,不声明默认就是隐藏.因此,模块 ...

  4. 不停歇的Java即将发布JDK16新特性速览及从菜鸟到架构师[图]

    一.不停歇的Java即将发布JDK16新特性速览 当开发者深陷Java8版本之际,这边下一版本Java16有了最新的消息,与Java15一样,作为短期版本,Oracle仅提供6个月的支持. 根据发布计 ...

  5. JDK9-17新特性

    文章目录 环境准备 JAVA9 概述 一 语法层次的改变 1_钻石操作符号语法升级 2_try结构语法升级 3_下划线命名标识符的使用限制 二 API层次的改变 1_接口中的私有方法 2_String ...

  6. JDK各版本新特性(更新到Java20)

    Hello,I'm Shendi 每当Java出新版本我会第一时间更新 目录 各版本JDK下载 JDK 1.0 1996-01-23 Oak(橡树) JDK 1.1 1997-02-19 JDK 1. ...

  7. JDK8-JDK17中的新特性(var类型推断、模式匹配、Record、密封类)

    文章目录 1. 新语法结构 1.1 Java的REPL工具: jShell命令 1.2 异常处理之try-catch资源关闭 1.3 局部变量类型推断 1.4 instanceof的模式匹配 1.5 ...

  8. 我要学ASP.NET MVC 3.0(一): MVC 3.0 的新特性

    摘要 MVC经过其1.0和2.0版本的发展,现在已经到了3.0的领军时代,随着技术的不断改进,MVC也越来越成熟.使开发也变得简洁人性化艺术化. 园子里有很多大鸟都对MVC了如指掌,面对问题犹同孙悟空 ...

  9. .NET 4.0 Interop新特性ICustomQueryInterface (转载)

    .NET 4.0 Interop新特性ICustomQueryInterface 在.NET Framework v4.0发布的新功能中,在名字空间System.Runtime.InteropServ ...

最新文章

  1. AI时代,人与机器的沟通方式
  2. 解决跨域常见方案(is therefore not allowed access)
  3. CRC循环校验码原理及计算举例
  4. mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询
  5. 微信公众号开发--.Net Core实现微信消息加解密
  6. 数据结构:树套树-替罪羊树套权值线段树
  7. MVC应用程序JsonResult()的练习
  8. 指定的網域的名稱或安全性識別碼(用磁碟映像檔部署的電腦無法加入AD網域 )...
  9. Python学习笔记(4)-文件读取报错
  10. 移动前端开发与WEB前端开发有什么联系与区别?
  11. 水彩风建筑效果图制作教程
  12. 【转自人人】本科生如何发表论文
  13. Xcode8 10大新特性
  14. 基于美国人口数据分析
  15. 钢条切割(记忆型递归)dp
  16. 司普沃浅谈豆角种植技术与管理方案
  17. java awt canvas_java.awt 类 Canvas - Java 中文参考手册
  18. 自制电脑usb红外遥控键盘
  19. [BZOJ1499][NOI2005][DP+优化]瑰丽华尔兹
  20. JavaScript:替换原段落中的文字并将其变成红色

热门文章

  1. 【Linux分组权限】linux下创建用户分组及设置分组权限
  2. CSDN送你一份春节压岁钱,请在 24H 内领取!
  3. 各版本JDK、JRE官方下载地址
  4. 王者荣耀1-HTMLCSS教案
  5. 【学习随记】Ubuntu使用U盘相关问题
  6. 爱江山更爱美人服务器维修怎么,爱江山更爱美人落星院详细玩法攻略
  7. msp430g2553流水灯
  8. mysql快速建表工具_我所知道的MYSQL快速建表的3种方法
  9. mv单位是什么意思_ayawawa经常说的pu MV是什么意思 怎么mv是什么意思算
  10. 路由器刷机解决学校无线上网问题(小米4A千兆版)