JDK19:Java19新特性

9月份即将推出的非LTS版本中, Java19会有结构化并发,虚拟线程,开关表达式模式匹配,向量API以及Linux/RISC-V端口等功能。

JDK 19较早接入版本可在jdk.java.net上获取。通过对数据库进行优化来提高系统性能,从而使其能够在更低的成本下提供更好的用户体验。此外,JDK19还支持远程部署。因此,它也具有了很高的性价比。JDK 19主要有以下几个作用。

结构化并发

在孵化阶段的目的是通过结构化并发库实现多线程编程的简化。使用这些组件可以降低代码复杂性、提高系统性能以及减少错误发生概率。并发性较好的工作单元可以减少错误处理。可靠性及可观察性提高。

预览记录模式

以解构记录值。记录模式与类型模式能够嵌套在一起,使数据导航与处理具有声明性,功能强大且能够结合在一起等特点。未来计划将记录模式扩展为数组模式或vararg模式匹配。此外还需要研究基于XML语言的索引结构并开发一个原型系统来支持这种新技术。本文将讨论记录模式及其应用,并给出一些建议供相关人员参考。本文介绍了几个具体案例。记录模式属于Project Amber,这个项目的目的在于探索并孵化出更小型的,以生产力为导向的Java功能。

它提供了一个用于访问外函数的接口——内存API。

它会介绍一种API,通过该API, Java程序能够同Java运行时以外的其他代码及数据实现互操作。这使得Java应用程序能方便地移植到其他系统上并且具有良好的可移植性和安全性。另外,Java执行过程中会产生大量的错误。为了保护这些错误,必须对其加以屏蔽。通过对外来函数的高效调用,也就是对外来代码在Java运行过程中的安全访问,也就是不受JVM支配,这个API使得Java程序可以在不存在Java本地接口的风险与脆性的情况下调用本地库并对本地数据进行处理。国外函数与内存API是两个不同的概念:孵化API,国外内存访问API和国外链接器API等。国外的函数与内存API曾经孵化于JDK 17,再孵化于JDK18。本建议旨在易用性,性能,通用性,安全性等方面。

预览虚拟线程

多使用一个轻量级线程就可以极大地减少编写,维护以及观测高吞吐量的并发应用所需要的工作。其目的是:让用简单的每个请求线程样式写出来的服务器应用程序都能在硬件利用率接近最优的情况下展开,让利用java.lang Thread API中已有的代码能在最少的修改情况下使用虚拟线程,并且能利用已有的JDK工具实现虚拟线程的故障诊断,调试以及分析。最后,本文讨论了这些技术可能带来的潜在影响及未来研究方向。通过实验验证,我们发现它们确实可以显着提高程序性能。这对于开发高性能的实时分布式系统具有重要意义。Java是一个通用的并发模型,Java语言提供了一个基于Java库中数据并行结构的框架。其目的也不在于删除线程这一传统实现或者无声地把已有应用移植到利用虚拟线程上。

switch表达式是在第三次开发时提出来的。

在switch中推广模式匹配,使一个表达式能够对某些模式执行检测,并且每一种模式具有具体的操作,从而能够简明、安全地表示面向数据的复杂查询。选择器表达式可以被用来确定用于模式切换的切换语义。本文还讨论了如何使用这种方法来设计用于解决数据库应用问题的原型系统。最后介绍了开发此系统所需的工具、技术以及实施过程。提出了一种新的基于Switch的解决方案。此外,本文还给出了一个基于案例标签的开关表达式来增强其表达能力和适用性。还有一些目的是让开发者能够在必要的时候放松switch中历史上null-hostility的限制,提高switch中语句的安全性以及保证switch中已有表达式及语句不会在编译过程中被修改并且在同一语义上得到实现。

本发明还提供了用于执行上述方法的系统及装置以及用于执行所述方法的软件,其中,该方法包括以下步骤:接收用户提交的文件,将其转换为可执行的代码,并将其封装成一个或多个矢量API,以供用户调用;

用来表示矢量计算并可靠地将其编译成运行时所支持CPU架构中最佳矢量指令以达到比相同标量计算更好的表现。这种优化是基于对标准图形引擎Open GL的扩展而完成的。该系统具有可视化编程接口,它允许通过图形用户界面来执行任何与矢量相关的操作。这个技术也可用到其他领域。矢量API以前已经并入JDK 16, JDK 17, JDK 19中。

针对JDK 19建议的API改进包括加强MemorySegments加载并存储矢量(例如外国函数以及内存API预览中定义)。JDK19还提供了在两个不同方向上进行的跨道矢量操作:压缩和扩展,其中每个方向都有一个矢量掩码压缩操作过程。

本文提出了一个支持向量API,允许用户通过逐位积分来选择1比特或颠倒比特作为压缩或扩展比特。同时对一些特殊问题进行了讨论,例如:如何使用X86处理器执行这些算法,Verilog HDL代码描述及测试过程中可能出现的错误,等等。最后给出了具体实例。2。API旨在包含简洁、清晰、不受平台影响、x64及AArch64框架下运行可靠、编译性能良好、达到“优雅”退化等特点来处理矢量计算运行过程中无法完整表示成矢量操作序列这一问题。

Linux/RISC-V 移植

Java会得到一个已得到广泛语言工具链支持的硬件指令集。Linux/RISC-V接口将仅支持RISC-Ⅴ RV64GV组态,仅需1个普通64位ISA就可以包含矢量指令。这类接口可以提供一种更灵活、方便和易于扩展的编程环境。但目前还没有针对这些类型接口开发的系统可供选择。本文描述了这种设计方法。Java的开发者今后也许还会考虑配置其它RISC-V。

原文链接:http://www.sfdkj.com/14189.html

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片