雁塔网站建设,文大侠seo博客,广州预计明年1月达疫情高峰,西安市工程建设信息网最近#xff0c;Oracle发布了JDK20#xff0c;相比对于Java开发者来说#xff0c;JDK的发版是比较收关注的事情了#xff0c;小简也来和大家一起了解了解JDK20发生了什么变化呢#xff1f; 首先#xff0c;JDK20是一个短周期版本#xff0c;有6个月的维护时间#xff0…最近Oracle发布了JDK20相比对于Java开发者来说JDK的发版是比较收关注的事情了小简也来和大家一起了解了解JDK20发生了什么变化呢 首先JDK20是一个短周期版本有6个月的维护时间据开发者计划下一个LTS也就长期维护版本将会在2023年9月份发布到来也就是JDK21了。 目前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
JEPLanguage Updates and Improvements432Record Patterns (Second Preview)433Pattern Matching for Switch (Fourth Preview)429Scoped Values (Incubator)436Virtual Threads (Second Preview)437Structured Concurrency (Second Incubator)434Foreign Function Memory API (Second Preview)438Vector API (Fifth Incubator)
看不懂英文没关系因为我也看不懂只是去官方网站上整理下来的资料我们可以翻译成中文再去查阅。 此段来自程序员DD大佬文章 作用域值Scoped Values进入孵化阶段 引入 Scoped Values它可以在线程内和线程间共享不可变数据。它们优于线程局部变量尤其是在使用大量虚拟线程时。 记录模式 (Record Patterns) 进入第 2 预览阶段 Record Patterns 可对 record 的值进行解构Record patterns 和 Type 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 中的 Goroutine、Erlang 中的进程。虚拟线程避免了上下文切换的额外耗费兼顾了多线程的优点简化了高并发程序的复杂可以有效减少编写、维护和观察高吞吐量并发应用程序的工作量。 结构化并发 (Structured Concurrency) 进入第 2 孵化阶段 JDK 19 引入了结构化并发这是一种多线程编程方法目的是为了通过结构化并发 API 来简化多线程编程并不是为了取代 java.util.concurrent。 结构化并发将不同线程中运行的多个任务视为单个工作单元从而简化错误处理、提高可靠性并增强可观察性。也就是说结构化并发保留了单线程代码的可读性、可维护性和可观察性。 向量 API (Vector API) 进入第 5 孵化阶段 向量计算由对向量的一系列操作组成。向量 API 用来表达向量计算该计算可以在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令从而实现优于等效标量计算的性能。向量 API 的目标是为用户提供简洁易用且与平台无关的表达范围广泛的向量计算。 JDK21
计划于 2023 年 9 月发布一个 GA 和下一个 LTS 版本目前JDK 21的 Proposed to Target 有两个 JEP。
JEP 430字符串模板预览版一种 JEP 类型的特性提议使用字符串模板来增强 Java 编程语言字符串模板类似于字符串字面量但包含在运行时合并到字符串模板中的嵌入式表达式。该特性已被归类为 JDK 21 的 Proposed to Target但尚未正式公布审查日期。
JEP 431序列集合提议引入“一个组能新表示集合概念的接口这些集合的元素按照定义良好的序列或顺序排列作为集合的结构属性。”其动因是由于集合框架Collections Framework中缺乏定义良好的排序和统一操作集。该特性已被归类为 JDK 21 的 Proposed to Target但尚未正式公布审查日期。
然后在InfoQ中找到如下资料 我们可以根据一些JEP草案和候选者推测哪些额外的JEP有可能被纳入JDK 21。 由红帽的杰出工程师 Andrew Haley 和 Andrew Dinn 提交的 JEP 草案 8303358作用域值预览版改进了即将发布的 JDK 429 中提供的 JEP 20作用域值孵化器。以前称为*范围局部变量孵化器*在 Project Loom 的支持下此功能建议在线程内和线程之间共享不可变数据。这优先于线程局部变量尤其是在使用大量虚拟线程时。虽然该草案尚未达到候选状态但描述明确指出该 JEP 将添加到 JDK 21 中。 JEP草案8277163Value 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 草案8283227JDK 源代码结构一种信息性的 JEP 类型描述了 JDK 存储库中 JDK 源代码和相关文件的整体布局和结构。本 JEP 建议帮助开发人员适应 JDK 201 中提供的 JEP 9 模块化源代码中所述的源代码结构。 JEP Draft 8280389ClassFile 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。 此段来自作者 相关URL
甲骨文关于JDK20的发布新闻Oracle Releases Java 20 : https://www.oracle.com/news/announcement/oracle-releases-java-20-2023-03-21/
OpenJDK的JDK20下载页面https://jdk.java.net/20/
OpenJDK的JDK21开发预览版本下载页面https://jdk.java.net/21/