​  Java 开发工具包19(JDK 19)将于今年 9 月发布,现已功能完善,目前处于第二阶段。该版本的七项功能包括结构化并发、记录模式、外部函数和内存 API 的预览,以及对开源 Linux/RISC-V 指令集架构 (ISA) 的支持。

  JDK 19的特点包括:

  结构化并发,处于孵化器阶段,旨在通过结构化并发 API 简化多线程编程。这种并发性将在不同线程中运行的多个任务视为一个工作单元。

  可以嵌套记录模式和类型模式,以实现声明性、强大且可组合的数据导航和处理形式。该提案的目标包括扩展模式匹配以表达更复杂、可组合的数据查询,同时不改变类型模式的语法或语义。该提案基于 2021 年 3 月在 JDK 16 中交付的 instanceof 的模式匹配。未来的计划可能要求使用数组模式和可变参数模式等功能扩展记录模式。记录模式是 Project Amber 的一部分,旨在探索和孵化更小的、面向生产力的 Java 特性。

  一个外部函数和内存 API 的预览,它将引入一个 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 之外的代码)和安全地访问外部内存(即不受 JVM 管理的内存),API 使 Java 程序能够调用本地库和处理本地数据,而没有Java本地接口(JNI)的危险和脆弱性。外部函数和内存 API 结合了两个早期孵化的 API:外部内存访问 API 和外部链接器 API。外部函数和内存 API 之前在 JDK 17 中孵化并在 JDK 18 中重新孵化。该提案的目标包括易用性、性能、通用性和安全性。

  

  目标包括使以简单的每请求线程样式编写的服务器应用程序能够以接近最佳的硬件利用率进行扩展,使使用 java.lang 线程 API 的现有代码能够以最小的更改采用虚拟线程,并启用故障排除、调试和 使用现有 JDK 工具分析虚拟线程。本提案的目标不是更改 Java 中的基本并发模型或在 Java 语言或 Java 库中提供新的数据并行结构。删除传统的线程实现或静默迁移现有应用程序以使用虚拟线程也不是目标。

  每个模式都有特定的操作,因此可以简洁安全地表达面向数据的复杂查询。此功能之前在 JDK 17 和 JDK 18 中进行了预览。第三次预览将添加改进,包括用 switch 块中的 when 子句替换受保护的模式。此外,当选择器表达式的值为null时,模式切换的运行时语义与传统切换语义更加一致。该计划的目标包括通过允许模式出现在案例标签中来扩展 switch 表达式和语句的表现力和适用性。其他目标包括允许开发人员在需要时放松 switch 的历史性空敌意,提高 switch 语句的安全性,并确保现有的 switch 表达式和语句继续编译而无需更改并以相同的语义执行。

  从而实现优于等效标量计算的性能。使用 API 的开发人员获得了一种在 Java 中编写复杂矢量算法的方法,使用 HotSpot 自动矢量化器,但使用的用户模型使矢量化更加可预测和健壮。矢量 API 之前被孵化到 JDK 16、JDK 17 和 JDK 19 中。

  对 JDK 19 提出的 API 的改进包括对 MemorySegments 加载和存储向量的增强,正如 外部函数和内存API预览所定义的那样。JDK 19 还将添加两个跨通道向量操作,压缩和扩展,以及一个互补向量掩码压缩操作。压缩向量操作将由掩码选择的源向量的通道按通道顺序映射到目标向量,而扩展操作则相反。压缩操作在过滤查询结果时很有用。

  在向量 API 的另一个补充中,将扩展逐位积分通道操作,包括计算一个位的数量、反转位的顺序以及压缩和扩展位等操作。API 的目标包括清晰简洁、与平台无关、在 x64 和 AArch64 架构上具有可靠的运行时和编译性能,以及启用“优雅”降级,以应对向量计算在运行时无法完全表示为一系列 矢量运算。

  通过 Linux/RISC-V 移植,Java 将获得对硬件指令集的支持,该指令集已被广泛的语言工具链支持。RISC-V 实际上是一系列相关的 ISA。Linux/RISC-V 端口仅支持 RISC-V 的 RV64GV 配置,RISC-V 是一种包含矢量指令的通用 64 位 ISA。Java 的开发者将来可能会考虑其他 RISC-V 配置。

  该端口将支持以下 HotSpot VM 选项:模板解释器、C1(客户端)JIT 编译器、C2(服务器)JIT 编译器,以及包括 ZGC 和 Shenandoah 在内的所有当前主线垃圾收集器。实际移植几乎完成; JDK 增强提案 (JEP) 的重点是将端口集成到 JDK 主线存储库中。

  与 JDK 18 一样,JDK 19 将是一个短期版本,只有六个月的顶级 Premier 支持。之前的版本 JDK 17 是一个长期支持 (LTS) 版本,提供了数年的支持。

Java:JDK 19——Java 19的新特性相关推荐

  1. java 1.7的新特性_[Java]  JDK 1.7版本的 新特性

    在网上看到一些jdk1.7的新特性,现将我觉得比较实用的记录于下: (1)switch中可以使用字串了 String s = "test"; switch (s) { case & ...

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

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

  3. 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】

    深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...

  4. Java 9 中的9个新特性

    转载自 强悍!Java 9 中的9个新特性 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新. 这里有九个令人兴奋的新功能将与 Java 9 一起发布. Java 平台级模 ...

  5. Java 9 中的 9 个新特性

    Java 9 中的 9 个新特性 Java 8 发布三年多之后,已经于在2017年9月21日发布了. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新. 这里有九个令人兴奋 ...

  6. java 可控异常_java异常处理,重新认识java异常,java7异常处理的新特性!

    原标题:java异常处理,重新认识java异常,java7异常处理的新特性! 在程序中,错误可能产生于程序员没有预料的各种情况,或者是超出了程序员可控范围的环境因素,如用户的坏数据.试图打开一个根本不 ...

  7. go每日新闻(2022-06-14)——一文告诉你Go 1.19都有哪些新特性

    每日一谚:Test to know you are correct. go中文网每日资讯--2022-06-14 一.Go语言中文网 Gopher 应该记住这 10 个命令 golang刷leetco ...

  8. JDK 16 昨日正式发布,新特性实践尝鲜来啦!

    JDK 16在2021年2月18日已完成最终候选版本,并于2021年3月16日正式发布.和JDK 15一样,JDK 16也会是一个短期版本,仅支持六个月.而计划在2021年9月发布的JDK 17将会是 ...

  9. java字符串去重复_Java 8新特性:字符串去重

    本文首发与InfoQ. 8月19日,Oracle发布了JDK 8u20,JDK 8u20包含很多新特性,比如Java编译器更新.支持在运行时通过API来修改MinHeapFreeRatio和MaxHe ...

  10. 7.Java基础之集合框架+JDK8新特性

    1.集合概述 1.1 为什么学集合 思考:数组有什么缺点? 长度一旦定义,不能改变!定义大了,浪费空间:小了,可能不够 ---->动态的数组 对于增删,需要移动位置 ->有人帮我们做这个事 ...

最新文章

  1. python爬虫教程pdf-Python 爬虫:把廖雪峰教程转换成 PDF 电子书
  2. POJ3686 The Windy's 【费用流】*
  3. 腾讯游戏规范直播:以后将严禁这些行为!
  4. 【Druid IO】Druid的imply方式安装
  5. 抽象类和接口有哪些共同点和区别
  6. android json 解析 arraylist,android – 将ArrayList转换为JSONArray
  7. java 米与厘米 转换_米转码换算(米与码的换算关系)
  8. 解决svn报错:svn: Working copy 'D:\02_workplace\udp\WebRoot\Backstage\Sysi' locked; try performing 'clean
  9. 一文带你了解移动入库指南(详细版)
  10. 光敏电阻型号怎么命名和其主要参数
  11. 2021-11-10
  12. python3下载mapbox矢量切片
  13. Springmvc+Mybatis( 配置Conveter转换器 转换工厂 (来转换数据格式)),报错,搞好了
  14. windows xp的密钥
  15. 从寻找美食到美食家,源于一份分享
  16. 【Unity3D】 新手引导
  17. C++ this指针
  18. 【keil】 一款舒适的配色主题
  19. 19.SpringSecurity存在的问题及解决方案
  20. 51单片机-控制LED灯

热门文章

  1. Loading 用户体验 - 加载时避免闪烁
  2. 如何在react-native中使用阿里iconfont矢量图标
  3. 【blender】动画导出方法
  4. 提高淘宝店铺浏览量的20种方法
  5. 微信小程序宠物商城项目源码来了~
  6. asp.net夜话之八:数据绑定控件(上)
  7. 深度学习-计算机视觉-基础学习笔记-01
  8. gcc流程及鲜有人知的参数
  9. D:\ANdriod\emulator\qemu\windows-x86_64\qemu-system-i386.exe: Could not open 'C:\Users\榛刓.android\a
  10. java 固定电话_Java正则表达式验证固定电话号码符合性