OpenJDK
JEP 448,Vector API(第六轮孵化),已经从 JDK 21 的 Candidate 状态提升至 Proposed to Target 状态。这个 JEP 位于Panama项目中,它纳入了前五轮孵化反馈的改进,即 JDK 20 交付的 JEP 438,Vector API(第五轮孵化)、JDK 19 交付的 JEP 426,Vector API(第四轮孵化)、JDK 18 交付的 JEP 417,Vector API(第三轮孵化)、JDK 17 交付的 JEP 414,Vector API(第二轮孵化)和 JDK 16 交付的 JEP 338,Vector API(孵化)。该特性的目标是增强 Vector API,从而能够根据 JEP 424, 外部函数与内存API(预览)的定义,从MemorySegment中加载和存储 Vector。该轮审查预计会在 2023 年 5 月 9 日结束。
JEP 445,无名类和实例主方法(Unnamed Classes and Instance Main Methods)(预览)已经从 JDK 21 的 Candidate 状态提升至 Proposed to Target。这个特性的 JEP 以前被称为灵活主方法和匿名主类(Flexible Main Methods and Anonymous Main Classes)(预览)以及隐式类和主方法增强(Implicit Classes and Enhanced Main Methods)(预览),提议“改进 Java 语言,以便于让学生无需了解为大型程序所设计的语言特性,就能编写出第一个程序”。这个 JEP 进一步推进了甲骨文的 Java 语言架构师Brian Goetz在 2022 年 9 月份所发表的博客文章“Paving the on-ramp”。甲骨文技术团队的顾问成员Gavin Bierman发布了规范文档的第一个草案,供 Java 社区审查。该轮审查预计会在 2023 年 5 月 12 日结束。InfoQ 会以更详细的新闻报道进行跟踪。
JEP 441,switch的模式匹配,已经从 JDK 21 的 Candidate 状态提升为Proposed to Target 状态。该 JEP 最终确定了这一特性,并针对前四轮预览的反馈添加了一些改进,即 JDK 20 交付的 JEP 433,switch的模式匹配(第四轮预览)、JDK 19 交付的 JEP 427,switch的模式匹配(第三轮预览)、JDK 18 交付的 JEP 420,switch的模式匹配(第二轮预览)以及 JDK 17 交付的 JEP 406,switch的模式匹配(预览)。该特性通过对 switch 表达式和语句进行模式匹配,增强了语言的功能。该轮审查预计会在 2023 年 5 月 11 日结束。InfoQ 会以更详细的新闻报道进行跟踪。
JEP 440,记录模式(Record Patterns),已经从 JDK 21 的 Candidate 状态提升到了 Proposed to Target 状态。该 JEP 最终确定了这一特性,并针对前两轮预览的反馈添加了一些改进,即 JDK 20 交付的 JEP 432,记录模式(第二轮预览)和 JDK 19 交付的 JEP 405,记录模式(预览)。该特性使用记录模式来解构记录值,以实现对语言的增强。记录模式可以与类型模式结合使用,以“实现强大的、声明式的、可组合的数据导航和处理形式”。类型模式最近通过 JDK 18 交付的 JEP 420,switch模式匹配(第二次预览)和 JDK 17 交付的 JEP 406,switch模式匹配(预览)扩展到了switch
case 标签中。JEP 432 最重要的变化是移除了对出现在增强型for
语句中的记录模式的支持。该轮审查预计会在 2023 年 5 月 11 日结束。InfoQ 会以更详细的新闻报道进行跟踪。
JEP 439,Generational ZGC,已经从 JDK 21 的 Candidate 状态提升为Proposed to Target 状态。该 JEP 建议“通过扩展 Z 垃圾收集器(ZGC)来提升应用的性能,使年轻对象和老对象保持独立的分代。这将允许 ZGC 更频繁地收集年轻的对象,这些对象往往会在较为年轻的时候就已经死亡了。”该轮审查预计会在 2023 年 5 月 10 日结束。InfoQ 会以更详细的新闻报道进行跟踪。
JEP 404,Generational Shenandoah(实验阶段),已经从 JDK 21 的 Candidate 状态提升到了 Proposed to Target 状态。该 JEP 建议“通过分代的收集功能增强 Shenandoah 垃圾收集器,以提高可持续的吞吐量、负载高峰的韧性和内存利用率。”与其他垃圾收集器(比如 G1、CMS 和 Parallel)相比,Shenandoah 目前需要额外的堆头部空间(headroom),并且更难恢复不可达对象占用的空间。该轮审查预计会在 2023 年 5 月 12 日结束。InfoQ 会以更详细的新闻报道进行跟踪。
JEP 450,紧凑的对象头信息(Compact Object Headers)(实验阶段)已经从 JEP Draft 8294992提升到了 Candidate 状态。在Lilliput项目的支持下,该 JEP 草案建议将 Java 对象的头信息从 96 或 128 比特减少至 64 比特。Lilliput 项目由亚马逊云科技的首席工程师Roman Kennke创建,该项目在 2022 年 5 月实现了 64 比特的头信息,这是其第一个里程碑。
甲骨文的编程语言设计师Daniel Smith已经宣布,原名为空限制值对象存储(Null-Restricted Value Object Store)(预览)和基本类型类(Primitive Classes) (Preview)的 JEP 401 改名为值对象的扁平化堆分布(Flattened Heap Layouts for Value Objects)。Smith 提供了一份更新的规范文档供社区审查。
JDK 21
JDK 21 的早期访问构建版本Build 21发布,该版本是对 Build 20 的更新,包含了对各种问题的修复。关于该版本的更多细节,请参阅发布说明。
对于JDK 21,鼓励开发人员通过Java Bug数据库报告缺陷。
Spring Framework
Spring Boot 3.1.0 的第二个发布候选版本提供了一些新特性,比如,将DockerComposeProperties类中的默认关闭设置为stop
;自动应用TestcontainersLifecycleApplicationContextInitializer类进行上下文测试;增加对 SQL Server、Oracle Database、Liquibase、Flyway 和 Cassandra 数据库的 Docker Compose 服务连接支持。同时,Couchbase SSL 的 keystore 属性spring.couchbase.env.ssl.key-store
和spring.couchbase.env.ssl.key-store-password
被弃用,转而使用 Couchbase 中对 SSL 绑定的支持。关于该版本的更多细节,请参阅发布说明。
Spring Modulith 0.6提供了缺陷修复、依赖性升级以及值得关注的新特性,例如,如果启用了事件发布注册表,则自动配置 MongoDB 事务;事件发布注册表支持异步处理和关闭行为;@EnableScenario
注解,用来在@SpringBootTest
集成测试中使用 Scenario Testing API;支持 Application Module Canvas 中的 jMolecules 架构类型。Spring Modulith 团队还决定将该项目提升为顶级的、非实验性的 Spring 项目,并计划在 Spring Boot 3.1 的 GA 发布后发布 1.0-M1 版本。关于该版本的更多细节,请参阅发布说明。
Spring Cloud for Amazon Web Services的 3.0.0 版本发布,其新特性包括,与 Spring Boot 3.0 兼容;构建在AWS SDK V2 for Java之上;重写的 SQS 集成模块;对 DynamoDB 的重新集成。关于该版本的更多细节,请参阅发布说明。
Spring Cloud Data Flow 2.10.3发布,主要解决了传递性依赖中的安全性问题,比如,spring-security-oauth2-client-5.4.2
、spring-expression-5.2.11
、spring-webmvc-5.3.25
、json-smart-2.3
和jettison-1.51
。此外,还有 Spring Boot 2.7.11 和 Spring Cloud 子项目的依赖性升级。关于这个版本的更多细节,请参阅发布说明。
Spring Tools 4.18.1发布,其特性包括,支持在探查@Value注解时导航到 Spring 属性文件;支持属性导航中的@ConditionalOnProperty注解,以及使用 Eclipse 2023-06 里程碑版本构建。Spring Tools 团队预计 4.19.0 版本将在 2023 年 6 月底发布。关于这个版本的更多细节,请参阅发布说明。
Infinispan
Infinispan 14.0.9.Final发布,其重要变化包括,修复 Infinispan 第三方集成测试与 JDK17 之间的问题;文档记录如何监控跨站复制;删除对 Jaeger 测试容器的依赖,并修复属性文件中的端口号。关于这个版本的更多细节可以在变更日志中找到。
Open Liberty
IBM发布了Open Liberty 23.0.0.4,其特性包括,为 ARM64 架构以及现有的 AMD64、PPC64LE 和 S390X 架构提供容器镜像;解决了CVE-2023-24998,即Apache Commons FileUpload中的一个漏洞,由于请求部分的数量没有进行限制,攻击者可以通过恶意上传触发拒绝服务攻击。
Quarkus
Quarkus 3.0.2.Final 是第二个维护版本,其中有一些值得注意的变化,比如,在Infinispan Dev Services指南中把server-list
文件改名为hosts
;修复 Dev UI2 显示错误 Java 版本的问题;解决Kubernetes Dev Services指南中没有正确记录k3s
名称的问题;修正 RESTEasy Reactive 流资源方法导致原生模式下出现NoSuchMethodException
异常的问题。关于这个版本的更多细节,请参阅发布说明。
Quarkus 2.16.7.Final发布,其特性包括,修复了 OIDC 代码加载令牌解密密钥时的算法对比缺陷;OIDC UserInfo类的一个微小更新,如果给定名称的字符串或布尔属性不存在,会抛出NullPointerException
;解决 Quarkus dev
模式在使用@ApplicationScoped
注解时无法与某种类型的项目目录树协同运行的问题;修正如果 OIDC 客户端无法获取令牌会抛出异常的问题。关于这个版本的更多细节,请参阅发布说明。
Helidon
甲骨文发布了Helidon 3.2.1,其新特性包括, JpaExtension类的启用标志,以允许后续的重构和替换;与 MicroProfile Rest Client和Fault Tolerance规范进行集成的变化,以处理因Weld规范中的默认调用上下文问题而产生的异步调用;支持与 Jaeger OpenTelemetry 不同传播器的集成。关于这个版本的更多细节,请参阅发布说明。
Apache 软件基金会
Apache Camel 4.0.0 的第三个里程碑版本包含缺陷修复、依赖性升级和功能增强,例如,改变默认的 Micrometer 指标名称以遵循 Micrometer 命名约定;支持Micrometer Observation;在 Spring Boot 实现中直接使用 HTTP 服务器;为添加/删除的 HTTP 端点添加监听器,使运行时(如 Spring Boot)更容易使用 Camel 的platform-http
和自己的 HTTP 服务器。关于这个版本的更多细节,请参阅发布说明。
Arquillian
Arquillian 1.7.0.Final发布,其特性包括,支持Jakarta Servlet 6.0;支持@ArquillianResource注解注入的 URL 使用 HTTPS;修复了使用 TestNG 7.5+时LoggerFactory类出现的NoClassDefFoundError
异常的问题。关于这个版本的更多细节可以在更新日志中找到。
OptaPlanner 转移至 Timefold
OptaPlanner是一个面向软件开发人员的开源人工智能约束解算器(constraint solver),它将转移至Timefold,这是一家由Maarten Vandenbroucke(联合创始人兼 CEO)和Geoffrey De Smet(联合创始人兼 CTO)创建的新规划优化公司。OptaPlanner 是 De Smet 在红帽公司担任高级首席软件工程师时创建的,在红帽公司的支持下,OptaPlanner 已经发展成熟,提供了他们自己的版本。InfoQ 会以更详细的新闻报道进行跟踪。
原文链接:
Java News Roundup: JEPs for JDK 21, Spring Cloud AWS 3.0, OptaPlanner to Timefold
评论