最近,Oracle发布了JDK20,相比关于Java开发者来说,JDK的发版是比较收关注的作业了,小简也来和咱们一起了解了解JDK20发生了什么改变呢?

首先,JDK20是一个短周期版别,有6个月的保护时刻,据开发者方案,下一个LTS也就长时间保护版别将会在2023年9月份发布到来,也便是JDK21了。

JDK20正式发布了GA版本,短期维护支持,以及JDK21预览

现在JDK21也是推出了早期预览版别。

JDK20正式发布了GA版本,短期维护支持,以及JDK21预览

JDK 20 供给了来自 OpenJDK 项目 Amber 的言语改进(Switch 的记载方式和方式匹配),OpenJDK巴拿马项意图增强功用,以互连Java虚拟机(JVM)和本机代码(外部函数和内存API和矢量API),以及与 Project Loom 相关的功用(效果域值、虚拟线程和结构化并发),这些功用将大大简化编写、保护和调查高吞吐量并发应用程序的进程

Oracle 经过可预测的发布方案每六个月发布一次新的 Java 功用。这种节奏供给了连绵不断的立异,一起不断改进渠道的功用、稳定性和安全性,有助于进步 Java 在各种规模的组织和行业中的普遍性。

改变

Language Updates and Improvements

  • JEP 432: Record Patterns (Second Preview): Enhances the Java language by allowing users to nest record patterns and type patterns to create a powerful, declarative, and composable form of data navigation and processing. This helps increase developer productivity by enabling them to extend pattern matching to allow for more sophisticated and composable data queries.
  • JEP 433: Pattern Matching for Switch (Fourth Preview): By extending pattern matching to switch, an expression can be tested against a number of patterns—each with a specific action—so that complex data-oriented queries can be expressed concisely and safely. Expanding the expressiveness and applicability of switch expressions and statements helps increase developer productivity.

Project Loom Preview/Incubator Features

  • JEP 429: Scoped Values (Incubator): Enables the sharing of immutable data within and across threads, which are preferred to thread-local variables – especially when using large numbers of virtual threads. This increases ease-of-use, comprehensibility, robustness, and performance.
  • JEP 436: Virtual Threads (Second Preview): Significantly streamline the process of writing, maintaining, and observing high-throughput, concurrent applications by introducing lightweight virtual threads to the Java Platform. By enabling developers to easily troubleshoot, debug, and profile concurrent applications with existing JDK tools and techniques, virtual threads helps accelerate application development.
  • JEP 437: Structured Concurrency (Second Incubator): Simplifies multithreaded programming by treating multiple tasks running in different threads as a single unit of work. This helps development teams streamline error handling and cancellation, improve reliability, and enhance observability.

Project Panama Preview Features

  • JEP 434: Foreign Function & Memory API (Second Preview): Enables Java programs to interoperate with code and data outside of the Java runtime. By efficiently invoking foreign functions (i.e., code outside the Java Virtual Machine [JVM]), and by safely accessing foreign memory (i.e., memory not managed by the JVM), this feature enables Java programs to call native libraries and process native data without requiring the Java Native Interface. This increases ease-of-use, performance, and safety.
  • JEP 438: Vector API (Fifth Incubator): Expresses vector computations that reliably compile at runtime to vector instructions on supported CPU architectures. This increases performance compared to equivalent scalar computations.

JDK20包含7个JEP,现已数百小功用点的改变。

JEP

JEP Language Updates and Improvements
432 Record Patterns (Second Preview)
433 Pattern Matching for Switch (Fourth Preview)
429 Scoped Values (Incubator)
436 Virtual Threads (Second Preview)
437 Structured Concurrency (Second Incubator)
434 Foreign Function & Memory API (Second Preview)
438 Vector API (Fifth Incubator)

看不懂英文不要紧,因为我也看不懂,只是去官方网站上整理下来的材料,咱们能够翻译成中文再去查阅。

JDK20正式发布了GA版本,短期维护支持,以及JDK21预览

此段来自程序员DD大佬文章:

效果域值(Scoped Values)进入孵化阶段

引进 Scoped Values,它能够在线程内和线程间同享不行变数据它们优于线程局部变量,尤其是在使用很多虚拟线程时。

记载方式 (Record Patterns) 进入第 2 预览阶段

Record Patterns 可对 record 的值进行解构,Record patternsType patterns 经过嵌套能够完成强壮的、声明性的、可组合的数据导航和处理方式

switch 方式匹配 (Pattern Matching for switch) 进入第 4 预览阶段

switch 表达式和句子的方式匹配,以及对方式言语的扩展来增强 Java 编程言语。将方式匹配扩展到 switch 中,允许针对一些方式测验表达式,这样就能够简明而安全地表达杂乱的面向数据的查询。

外部函数和内存 API (Foreign Function & Memory API) 进入第 2 预览阶段

引进一个 API,经过它,Java 程序能够与 Java 运转时之外的代码和数据进行互操作。经过有效地调用外部函数,以及安全地访问外部内存,该 API 使 Java 程序能够调用本地库并处理本地数据,而不会像 JNI 那样有缝隙和风险。

虚拟线程 (Virtual Threads) 进入第 2 预览阶段

Java 引进虚拟线程,虚拟线程是 JDK 完成的轻量级线程,它在其他多线程言语中现已被证实是非常有用的,比方 Go 中的 GoroutineErlang 中的进程。虚拟线程避免了上下文切换的额定耗费,统筹了多线程的优点,简化了高并发程序的杂乱,能够有效减少编写、保护和调查高吞吐量并发应用程序的作业量

结构化并发 (Structured Concurrency) 进入第 2 孵化阶段

JDK 19 引进了结构化并发,这是一种多线程编程方法,意图是为了经过结构化并发 API 来简化多线程编程,并不是为了取代 java.util.concurrent

结构化并发将不同线程中运转的多个使命视为单个作业单元,然后简化错误处理、进步可靠性并增强可调查性。也便是说,结构化并发保留了单线程代码的可读性、可保护性和可调查性。

向量 API (Vector API) 进入第 5 孵化阶段

向量核算由对向量的一系列操作组成。向量 API 用来表达向量核算,该核算能够在运转时可靠地编译为支撑的 CPU 架构上的最佳向量指令,然后完成优于等效标量核算的功用。向量 API 的方针是为用户供给简洁易用且与渠道无关的表达规模广泛的向量核算。

JDK21

方案于 2023 年 9 月发布一个 GA 和下一个 LTS 版别,现在JDK 21Proposed to Target 有两个 JEP

JEP 430,字符串模板(预览版),一种 JEP 类型的特性,提议使用字符串模板来增强 Java 编程言语,字符串模板类似于字符串字面量,但包含在运转时合并到字符串模板中的嵌入式表达式。该特性已被归类为 JDK 21Proposed to Target,但没有正式公布审查日期。

JEP 431,序列调集,提议引进“一个组能新表明调集概念的接口,这些调集的元素依照界说良好的序列或顺序排列,作为调集的结构特点。”其动因是因为调集框架(Collections Framework)中缺乏界说良好的排序和统一操作集。该特性已被归类为 JDK 21Proposed to Target,但没有正式公布审查日期。

然后在InfoQ中找到如下材料:

咱们能够根据一些JEP草案和候选者估测哪些额定的JEP有可能被纳入JDK 21

由红帽的杰出工程师 Andrew Haley 和 Andrew Dinn 提交的 JEP 草案 8303358,效果域值(预览版)改进了行将发布的 JDK 429 中供给的 JEP 20,效果域值(孵化器)。以前称为*规模局部变量(孵化器),*在 Project Loom 的支撑下,此功用主张在线程内和线程之间同享不行变数据。这优先于线程局部变量,尤其是在使用很多虚拟线程时。尽管该草案没有达到候选状态,但描绘明确指出该 JEP 将添加到 JDK 21 中。

JEP草案8277163,Value Objects(预览版)是Project Valhalla赞助的JEP的一项功用,它主张创立值目标 – 指定其实例行为的无标识值类。此草案与 JEP 401,基元类(预览版)相关,该类仍处于候选状态。

JEP 435,异步堆栈盯梢 VM API,一种功用 JEP 类型,主张界说一个有效的 API,用于从信号处理程序获取异步调用盯梢,以便从具有 Java 和本机帧信息的信号处理程序进行剖析。

JEP 401,基元类(预览版)在Valhalla项意图掌管下,引进了开发人员声明的基元类 – 特殊类型的值类 – 如上述值目标(预览版)JEP草案中所界说 – 界说新的基元类型。

JEP草案8301034,密钥封装机制API是JEP类型的一种功用,主张:满意规范密钥封装机制(KEM)算法的完成;经过更高级别的安全协议满意 KEM 的使用事例;并允许服务供给商刺进 Java 或 KEM 算法的本机完成。此草案最近进行了更新,包含一项重大更改,该更改删除了 DerivedKeyParameterSpec 类,转而将字段放在**封装(int from, int to, String algorithm)** 方法的参数列表中。

JEP 草案8283227,JDK 源代码结构,一种信息性的 JEP 类型,描绘了 JDK 存储库中 JDK 源代码和相关文件的整体布局和结构。本 JEP 主张帮助开发人员习惯 JDK 201 中供给的 JEP 9 模块化源代码中所述的源代码结构。

JEP Draft 8280389,ClassFile API,主张供给一个用于解析、生成和转化 Java 类文件的 API。该JEP开端将作为JDK中Java字节码操作和剖析框架ASM的内部替代品,并方案将其作为公共API敞开。Oracle的Java言语架构师Brian Goetz将ASM描绘为“一个带有很多留传包袱的旧代码库”,并供给了有关该草案将如何演化并终究取代ASM的背景信息。

JEP 草案 8278252JDK 打包和装置指南,一个信息性的 JEP,主张供给在 macOS、Linux 和 Windows 上创立 JDK 装置程序的指南,以下降不同 JDK 供给商在 JDK 装置之间发生抵触的风险。其意图是经过正式化装置目录称号、包称号以及可能导致抵触的装置程序的其他元素,在装置 JDK 的更新发行版时供给更好的体会。

咱们估计Oracle将很快开端为JDK 21供给更多的JEP

此段来自作者:

JDK20正式发布了GA版本,短期维护支持,以及JDK21预览

相关URL

甲骨文关于JDK20的发布新闻Oracle Releases Java 20 : www.oracle.com/news/announ…

OpenJDKJDK20下载页面:jdk.java.net/20/

OpenJDKJDK21开发预览版别下载页面:jdk.java.net/21/

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。