Java培训:Java 20中的新特性

天天见闻 天天见闻 2023-10-08 科技 阅读: 70
摘要: Java20版本正式指定了七个关键特性,包括虚拟线程、矢量API建议、结构化并发、作用阈值、外部函数和内存API、记录模式以及switch语句和表达式的模式匹配。想要学习Java技术的学生,可以参加Java训练,考虑全面系统的理论知识和实操项目的学习,以便你快速学习。 1。虚拟线程 虚拟线程是结构化并发的先决条件,自JDK19首次预览以来,已经进行了一些修改。这些更改包括API的一些调整以及ThreadGroup的持久性退化。当它们进入第二预览阶段时,这些轻量级线程旨在简化具有高吞吐量要求的同时应用程序的开发和维护。Oracle相信,这种扩展将带来Java应用程序扩展方式的重大变化。自JDK 19初始预览版以来的更新涉及少量API更改(目前在JDK 19中是持久的)和ThreadGroup降级(现在在JDK 19中也是持久的)。

Java 20版本已经正式指定了七个关键特性,包括虚拟线程、向量API提议、结构化并发、作用域值、外部函数和内存API、记录模式以及switch语句和表达式的模式匹配。想要学习java技术的同学,可以考虑参加Java培训,全面系统的理论知识和实操项目学习,让你快速学有所成。

1.虚拟线程

虚拟线程是结构化并发的先决条件,自从在JDK19中首次预览以来,已经进行了一些修改。这些更改包括对API的一些调整以及对ThreadGroup的永久降级。当它们进入第二个预览阶段时,这些轻量级线程旨在简化具有高吞吐量需求的并发应用程序的开发和维护。Oracle相信,这种增强将导致Java应用程序扩展方式的重大转变。自JDK 19中的初始预览版以来所做的更新涉及少量API更改(现在在JDK 19内是永久的)和ThreadGroup降级(现在在JDK 19中也是永久的)。

2.矢量API提案

在早期的JDK版本(16、17、18和19)中,矢量 API是作为孵化项目引入的。然而,在Java 20发布之前不久,这一API提案进行了重新提交,没有对JDK 19中的API状态进行任何更改。实现过程包括修复一些错误和提高性能。现在,这个新的提议允许在运行时高效编译的向量计算的表达式,作为支持的CPU上的最佳向量指令。矢量 API的正式添加发生在几周前。其目的是实现矢量计算的表达,这些计算在运行时编译为支持的CPU架构上的高效矢量指令。与等效标量计算相比,这显著提高了性能。因此,矢量 API在正式纳入之前就已经在JDK 16、JDK 17、JDK 18和JDK 19中孵化。参加java培训是入门学习的最佳选择,有经验丰富的专业老师面授指导教学,通过理论结合实战的方式教授java基础知识,帮助你更好的理解与运用java。

3.结构化并发

结构化并发引入了一个API,它通过将在不同线程中执行的多个任务作为一个内聚工作单元来简化多线程编程。这种方法简化了错误处理和消除过程,从而提高了应用程序行为的可靠性和可观察性。自JDK19中孵化以来,所做的唯一修改是增强StructuredTaskScope,以允许在任务范围内创建的线程继承作用域值。目前,此功能正在重新培养中。Structured Concurrency最初作为JDK 19中的孵化API引入,它将在单独线程中运行的多个任务视为单个工作单元,从而大大简化了多线程编程。这种方法简化了错误处理和消除,从而提高了可靠性和可观察性。重新孵化过程中唯一的变化是对StructuredTaskScope的更新,使在任务范围中创建的线程能够继承作用域值。

4.范围值

孵化中的API(Scoped Values)促进了线程内部和线程之间不可变数据的共享。它是线程局部变量的首选替代方案,尤其是在涉及大量虚拟线程的场景中。通过利用作用域值,可以在大型程序中的各个组件之间安全高效地共享数据,从而无需方法参数。该API的主要目标包括确保易用性、可理解性、健壮性和性能。目前,在开发的孵化器阶段,范围值API解决了线程内部和线程之间共享不可变数据的需要。这种方法比线程局部变量更受欢迎,尤其是在处理大量虚拟线程时。有了作用域值,在大型程序中的不同组件之间共享数据变得既安全又高效,而无需求助于方法参数。API旨在实现可用性、清晰度、弹性和最佳性能的目标。参加以实战项目为主要教学方法的java培训,可以有效地缩短同企业具体用人需求之间的差距,快速提升自己。

5.外部函数和内存(FFM)API

外部函数和内存(FFM)API允许Java程序与Java运行时外部的代码和数据进行交互,从而可以调用本机库并处理本机数据,而不需要与JNI(Java native Interface)相关的复杂性和风险。此API之前在JDK版本17和18中孵化,并在JDK 19中预览。JDK19以来所做的改进包括合并MemorySegment和MemoryAddress抽象,增强Sealed MemoryLayout层次结构,以及将MemorySession划分为Arena和SegmentScope,从而促进跨维护边界的分段共享。

FFM API结合了两个早期孵化的API,即Foreign-Memory Access API和Foreign Linker API。最初在JDK 17中孵育,然后在JDK 18中重新孵育,后来在JDK 19中预览。根据有价值的用户反馈,JDK 20现在重新审查了FFM API,包括以下增强功能:

l MemorySegment和MemoryAddress抽象是统一的,现在通过零长度的内存段表示内存地址。

l Sealed MemoryLayout层次结构得到了改进,以便于在开关表达式和语句中通过模式匹配进行无缝使用。

l MemorySession分为Arena和SegmentScope,促进了跨维护边界的分段共享。

6.记录模式

Java中记录模式的第二个预览旨在实现两个主要目标:扩展模式匹配以实现更高级和可组合的数据查询,以及维护类型模式的语法和语义。该语言功能最初是在JDK19中引入的,在Java20中,用户可以期待以下更新:

l 增加了对推断通用记录模式的类型参数的支持。

l 支持在增强的for语句的标头中使用的记录模式。

l 删除了对命名记录模式的支持。

记录模式在Java编程语言中引入了一种强大的机制,允许解构记录值。通过嵌套记录模式和类型模式,开发人员可以以声明性和高效的方式执行数据导航和处理。此功能的主要目标是增强模式匹配功能,并保持类型模式语法和语义的一致性。JDK19中第一次预览后的显著变化包括为通用记录模式添加了类型参数推断,在增强的for语句的头中启用了记录模式,以及删除了对命名记录模式的支持。通过参加java培训,学习最新java技能,可以让你的实力一直保持领先水平,提升行业竞争力。

1.7切换语句和表达式的模式匹配

Pattern Matching在JDK17中作为预览引入,并在JDK18和JDK19中进一步改进,现在随着JDK20进入第四个预览阶段。这一演变确保了它与记录模式预览功能一起继续进步,包括对switch语句语法的重要更新。switch语句和表达式的模式匹配为处理复杂的面向数据的查询提供了一种简洁而安全的方法。在JDK17、JDK18和JDK19中出现了第四个预览之后,它允许与记录模式功能进行持续的协同进化,受益于基于实践经验和用户反馈的不断改进。

自第三次预览以来,开关模式匹配的主要变化包括精简开关标签的语法,以及支持开关语句和表达式中使用的泛型模式和记录模式中的类型参数推理。此外,在枚举类上进行彻底切换的情况下,如果在运行时没有适用的切换标签,则将抛出MatchException,而不是CompatibleClassChangeError。

总结

随着Java的发展,它努力迎合开发人员不断发展的需求,并保持其作为健壮、可靠和创新的编程语言的地位。JDK 20中的增强,尤其是关于模式匹配及其与记录模式的协作,体现了Java致力于为各种应用程序提供现代、高效和用户友好的开发环境。开发人员可以期待在他们的项目中利用这些强大的特性来创建更具表现力、可维护性和高效的代码库。随着每一次迭代,Java的发展都展示了它对软件开发不断发展的前景的适应性和响应性,巩固了它作为编程社区基石语言的地位。如果你也对java感兴趣,不妨报个java培训班,有专业讲师面授指导教学,还有更加系统全面的课程,让学习更科学,更有效。

其他相关
天气api是什么意思 天气api

天气api是什么意思 天气api

作者: 天天见闻 时间:2024-04-12 阅读: 1
怎么给直播添加各地区温度为直播添加各地区温度可以通过以下步骤实现:首先需要获取各地区的实时温度数据,可以通过天气预报API或者其他相关的数据接口获取。其次,在直播界面中加入显示温度的模块,并将获取到的温度数据动态地显示出来。最后,可以根据用户的需求对温度模块进行定制化设计,例如添加背景图片、调整字体颜色和大小等……...
电脑配置推荐高性价比 电脑配置推荐

电脑配置推荐高性价比 电脑配置推荐

作者: 天天见闻 时间:2024-03-21 阅读: 31
最新的电脑配置推荐配置推荐:CPU:12代酷睿i5- 12400F散热:利民AX120主板:微星B660M-B内存:金士顿 -野兽-3200-16G固态:金士顿nv2 500G M.2一299显卡:影驰 GTX 1660S电源:影驰500W机箱:玩嘉 流光 合计:4300左右CPU:12代酷睿i5 -12400……...
OpenAI欲打造AI行业的“苹果生态”?上线GPT Store,定制个人GPT成为现实,重磅更新GPT-4,API价格下调近3倍

OpenAI欲打造AI行业的“苹果生态”?上线GPT Store,定制个人GPT成为现实,重磅更新GPT-4,API价格下调近3倍

作者: 天天见闻 时间:2023-11-07 阅读: 56
每位记者:文巧每编辑:李孟林 在发布会时间,OpenAI再次轻松颠覆了整个人工智能(AI)行业。不仅是AI领域,对于受AI影响的各行各业来说,昨晚可能是睡不着的一夜。 当地时间11月6日,OpenAI举办首届开发者大会OpenAI DevDay,该公司CEO Sam Altman发布ChatGPT重大更新--定制版本ChatGPT,用户可打造自己的GPT,向GPT Store公开分享,同时发布更强大、速度更快的GPT-4版本GPT-4Turbo。更令人惊讶的是,OpenAI将API的价格下调了近3倍,降至1000Token/美分。...
常用语言的线程模型(Java、go、C++、python3) | 京东云技术团队

常用语言的线程模型(Java、go、C++、python3) | 京东云技术团队

作者: 天天见闻 时间:2023-10-17 阅读: 57
背景知识软件如何驱动硬件?硬件需要相关的驱动程序才能运行,驱动程序安装在操作系统内核中。编写一个程序A后,A程序要操作硬件操作,首先需要进行系统调用,然后内核寻找相应的驱动程序来驱动硬件。驱动程序如何运行硬件?驱动程序作为硬件和操作系统之间的媒介,可以将与操作系统相关的命令翻译成硬件能够识别的电信号,同时,驱动程序还可以将硬件电信号转换为操作系统可以识别的命令。进程、轻量级进程、线程关系由于一个进程执行的空间不同,它被分为内核线程和用户进程,所有这些都称为内核线程,因为它没有虚拟地址空间。当创建一个新的用户进程时,分配一个新的虚拟地址空间,其中不同用户进程之间的资源被分离。创建新流程需要耗费大量资源,而且流程之间切换的成本也很高,因此引入了轻型流程。轻量化在本质上也是对内核线程的上层是抽象的,可以在不同的轻量级进程之间共享一些资源,但是由于轻量级进程本质上是内核线程,所以进行轻量级线程之间的切换需要进行系统调用,成本也很昂贵。内核本质上只能感知进程的存在,就像不同语言的多线程技术一样,是基于用户进程创建的线程库,线程本身不是参与处理器竞争,而是其所属的用户进程参与处理器的竞争。...
Java面试:Java 内存分配与回收策略及Java死锁

Java面试:Java 内存分配与回收策略及Java死锁

作者: 天天见闻 时间:2023-10-05 阅读: 62
概述java内存分配和回收策略以及Minor GC和Major GC(Full GC)。 内存分配 堆栈区域:堆栈分为java虚拟堆栈和本地方法堆栈。 堆空间:堆由所有线程共享,在虚拟机启动时创建并唯一存储对象实例。堆区域是gc的主要区域,通常分为两个块年轻一代和老龄一代。更细的年轻一代分为Eden领域,主要放置新建对象,From survivor和To survivor保存gc幸运保存的对象,默认情况下分别占8:1:1。...
什么是线程?

什么是线程?

作者: 天天见闻 时间:2023-09-26 阅读: 69
帖子是什么?线程是操作系统能够进行运算调度的最小单位,也称为轻量级进程,是进程的执行单位。在多任务处理中,线程是用户进程的一个例子,它包含一组独立的执行单元,这些执行单元称为线程。每个线程都有自己的堆栈、堆栈以及执行上下文,彼此通过共享内存进行通信。线程可以分为单线程、多线程、线程池等不同类型。单线程意味着程序只有一条执行线…...
我来说两句

年度爆文