JDK 19 / Java 19 正式 GA


JDK 19 / Java 19 已正式发布。

新版本总共包含 7 个新的 JEP:

405: Record Patterns (Preview)
422: Linux/RISC-V Port
424: Foreign Function & Memory API (Preview)
425: Virtual Threads (Preview)
426: Vector API (Fourth Incubator)
427: Pattern Matching for switch (Third Preview)
428: Structured Concurrency (Incubator)
  • 405:记录模式 (Record Patterns) 进入预览阶段

Record Patterns 可对 record 的值进行解构,Record patterns 和 Type patterns 通过嵌套能够实现强大的、声明性的、可组合的数据导航和处理形式。

该特性目前处于预览阶段。

  • 422:将 JDK 移植到 Linux/RISC-V 平台

目前只支持 RISC-V 的 RV64GV 配置,它是一个通用的 64 位 ISA。将来会考虑支持其他的 RISC-V 配置,例如通用的 32 位配置 (RV32G)。

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

Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过高效地调用外部函数(即 JVM 之外的代码)和安全地访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用本机库并处理本机数据,而不会像 JNI 那样危险和脆弱。

一句话总结:该特性让 Java 调用普通 native 代码更加方便和高效。

  • 425:虚拟线程 (Virtual Threads) 进入预览阶段

为 Java 引入虚拟线程,虚拟线程是 JDK 实现的轻量级线程,它在其他多线程语言中已经被证实是十分有用的,比如 Go 中的 Goroutine、Erlang 中的进程。虚拟线程避免了上下文切换的额外耗费,兼顾了多线程的优点,简化了高并发程序的复杂,可以有效减少编写、维护和观察高吞吐量并发应用程序的工作量。

详情查看 Java 引入预览版虚拟线程(协程)功能,大幅提高应用吞吐量

  • 426:向量 API (Vector API) 进入第 4 孵化阶段

向量计算由对向量的一系列操作组成。向量 API 用来表达向量计算,该计算可以在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。向量 API 的目标是为用户提供简洁易用且与平台无关的表达范围广泛的向量计算。

  • 427:switch 模式匹配 (Pattern Matching for switch) 进入第 3 预览阶段

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

  • 428:结构化并发 (Structured Concurrency) 进入孵化阶段

JDK 19 引入了结构化并发,这是一种多线程编程方法,目的是为了通过结构化并发 API 来简化多线程编程,并不是为了取代 java.util.concurrent,目前处于孵化阶段。

结构化并发将不同线程中运行的多个任务视为单个工作单元,从而简化错误处理、提高可靠性并增强可观察性。也就是说,结构化并发保留了单线程代码的可读性、可维护性和可观察性。

下载地址 | Release Note


相关文章

2022-06-28

认/开箱即用状态,在测试期间没有将额外的参数传递给 Java 实现,以查看 JVM 实现的参考性能 接下来看看值得关注的测试结果。 在基本的 Java SciMark 2.0 测试中,不同版本的 JDK 性能没有太大差距。至于 JVM 性能方面,相

2022-07-28

o 阶段,整个功能集已被冻结,将不再对 JEP 进行改动。 Java 19 只有 7 个新特性: 405: Record Patterns (Preview) 记录模式 422: Linux/RISC-V Port Linux/RISC-V 移植 424: Foreign Function & Memory API (Preview) 外部函数和内

2022-08-02

Apex 和 Visualforce、PLSQL、Apache Velocity、XML 和 XSL 。 PMD 6.48 正式发布,本次更新内容如下: 新特性 对 Java 19 的支持 注意:对 Java 17 预览语言功能的支持已被删除 Gherkin 支持 错误修复 apex ApexSOQLInjection:增加支

2022-09-18

JavaFX 是一个强大的图形和多媒体处理工具包集合,它允许开发者设计、创建、测试、调试和部署富客户端程序,并且和 Java 一样跨平台。 JavaFX 19 现已发布,JavaFX 19 需要 JDK 11 或更高版本。此版本增强了视频和 CSS 功能,修

2022-07-05

投入的 smart-mqtt。 对于smart-mqtt,我们规划通过 GraalVM 将 Java 应用编译成原生镜像,使其更好的部署于边缘场景。该设想存在较多的技术难题需要攻克,而当下面临的问题便是新版 GraalVM 已不再支持 JDK 1.8。Java 1.8 与 11 存在某些

2022-09-19

#566 [WW-5188] 从 2.6 开始替换为 6.0 #569 WW-5197 添加对 java.sql.Date 的支持 #574 [WW-5201] 将 log4j2 升级到版本 2.18.0 #575 [WW-5193] 使用正确的 org.hibernate.validator groupId 并升级到版本 6.1.3.Final #576 WW-5202 将 jasperreports 更新

2022-07-15

Go 1.19 发布了第一个 RC 版本,正式版预计在 8 月推出。 主要变化 针对“泛型”的 Bugfix 更新内存模型,与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致 Go 1.19 在启动时将默认提高打开文件的限制值 Go 1.19

2022-07-28

。 GraalVM 是一个高性能的 JDK 发行版。它旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,同时还为 JavaScript、Python、基于 LLVM 的语言(如 C 和 C++)以及许多其他流行编程语言提供运行时。此外,GraalVM 为编程语言之间

2022-08-03

确定义了 sync/atomic 包的行为。happens-before 关系的正式定义已被修改,以与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致。现有程序不受影响。随着内存模型的更新, sync/atomic 包中还有新的类型,例如&nb

2022-04-28

MySQL 的最新版本 8.0.29 于 2022 年 4 月 26 日正式发行(GA)。MySQL8.0 发布至今已经历 4 年(2018 年 4 月 19 日 GA),已经进入了标准生命周期的末期,如果你还在继续使用 MySQL 5.7 版本,甚至是 5.6 版本,现在应该认真考虑未来的数据

2022-06-06

面应用。其离线应用使用 Electron 框架构建。 draw.io 19.0 正式发布,自 18.0 版本以来的主要变化包括: 删除了对 IE 11 的支持 更新 mermaid.js 至 9.1.1 更新 JSZip 到 3.10.0 在布局中只忽略了有隐藏状态的单元格 修复了查看器中

2022-06-10

Apache Hop 2.0.0 已正式发布。 Apache Hop(Hop 是 Hop Orchestration Platform 的缩写)是一个灵活、元数据驱动的数据编排、工程和集成平台。该项目起源于二十多年前的 ETL 平台 Kettle,经过几年的重构,于 2020 年 9 月进入 ASF 孵化器。 Kettle

2022-07-19

Linux 5.19 发布了第 7 个 RC 版本。 过去的一周对内核维护者来说非常繁忙,因为针对 Retbleed 漏洞的安全缓解措施不仅给用户带来了 CPU 开销性能的影响,还给内核开发和测试过程带来了混乱。除了 Retbleed 需要对许多文件进行修

2022-08-02

Linus Torvalds 发布了Linux 5.19 , 作为 Linux 内核的最新稳定版本。发布公告中还提到这是在一台运行 AArch64 Apple M2 SoC 的 Apple MacBook 上进行的工作,这是他首次从 ARM64 笔记本电脑上发布新的 Linux 内核。 Linux 5.19 带来了许多新功能,