本期的 Java 新闻主要会介绍 OpenJDK、JDK 19、Jakarta EE 10 的新特性,对 Spring Cloud 子项目的更新,Amazon Corretto 为 OpenJDK 17 所提供的异步、缓冲日志,Quarkus 2.7.4.Final,Hibernate ORM 6.0.0.CR2,Apache Groovy 3.0.10 与 2.5.16,Apache Camel 3.14.2,JReleaser 早期访问版本,JobRunr 4.0.10,JDKMon 17.0.23 和 FailSafe 3.2.3。
OpenJDK
JEP 422,即Linux/RISC-V移植,已经从 JDK 19 的 Candidate 状态提升到了 Proposed to Target 状态。这个 JEP 提议将 JDK 移植到 Linux/RISC-V,这是一个免费开源的 RISC 指令集架构。它将会支持模板解析器、C1 和 C2 JIT 编译器,以及所有当前主流的 GC,包括 ZGC 和 Shenandoah。这个 JEP 的重点是将该移植集成到 JDK 主线代码库中。该审议过程计划于 2022 年 3 月 17 日结束。
JDK 18
JDK 18仍处于候选发布阶段,预计将于 2022 年 3 月 22 日发布 GA 版本。发布说明中包含了一些文件的链接,比如完整的API规范和一个带注释的API规范,它比较了 JDK 17(Build 35)和 JDK 18(Build 37)之间的差异。InfoQ 将以更详细的新闻报道继续跟进相关的消息。
JDK 19
JDK 19早期访问构建版本的Build 13已经发布,其特性是对 Build 12 的更新,包括对各种问题的修复。更多细节可以在发布说明中找到。
对于 JDK 18 和JDK 19,我们鼓励开发者通过Java缺陷数据库报告错误。
Jakarta EE 10
Eclipse 基金会的 Jakarta EE 开发人员倡导者Ivar Grimstad在他的 Hashtag Jakarta EE 每周博客中宣布,面向 Jakarta EE 10规范的初步发布审议已经在 2022 年 2 月 28 日的最后期限前成功完成。这意味着 Jakarta EE 10 有望在 2022 年 5 月底前如期交付。
2022 年的Jakarta EE开发者调查也在上周公布,今年的调查将聚焦在在云原生应用开发方面。
Spring 框架
最近,Spring 相对平静,Spring Cloud团队提供了两个子项目的小版本发布,它们都是基于Spring Boot 2.6.3 和Spring Cloud 2021.0.1。
Spring Cloud Stream Applications的 2021.1.1 版本已经发布,该项目提供开箱即用的应用程序,它可以作为独立的 Spring Boot 应用程序运行,该版本的特性主要是改进和缺陷修复。该版本的进一步细节可在发布说明中找到。
由阿里云维护的社区项目Spring Cloud Alibaba的 2021.0.1.0 版本发布,特性是对Nacos 1.4.2、Apache RocketMQ 4.9.2 和Sentinel 1.8.3 进行了依赖升级。关于这个版本的更多细节可以在发布说明中找到。
Amazon Corretto
Amazon Corretto 团队在发现应用程序在向磁盘写入日志时会被I/O阻塞后,为 OpenJDK 17 贡献了对可选的异步/缓冲日志的支持(JDK-8229517)。开发者现在可以通过应用-Xlog:sync
开关和统一日志(Unified Logging,UL)框架来避免因 I/O 导致的 GC 暂停延长。他们的实验表明,异步日志将实际的 CPU 时间减少了 34.5%,整体的 CPU 利用率从 102.7%增加到 171.6%。
Quarkus
Quarkus 2.7.4.Final 发布,它是第四个维护版本,包括以下变化:升级到 JReleaser 1.0.0-M3;当 RESTEasy Reactive 与传统 REST 客户端一起使用时,避免出现NullPointerException
;向OpenApiRecorder
记录INFO
消息,以在生产模式下使用quarkus.http.cors
属性以及更新 HTTP 头信息的 HTTP CORS 部分。关于这个版本的进一步细节可以在更新日志中找到。
Red Hat 还发布了 Quarkus Tools for IntelliJ 1.10.0,该版本的特性包括安全修复,并支持 Quarkus 的运行/调试配置。
Hibernate
在通往 Hibernate ORM 6.0 的道路上,第二个候选版本已经发布,特性包括:发布到 Maven 中央仓库的制件现在已被签名;修复 CDI 相关的问题,这是由于 CDI 中一个BeanManager接口的实现已不可用;修正和改进@NotFound注解的映射行为。该版本还通过了Jakarta Persistence 3.1规范的 TCK。该团队预计将在未来两到四周内提供正式的 GA 版本。
Apache Groovy
Apache Groovy 3.0.10 已经发布,其中包括 91 个缺陷修复、依赖性升级以及以下改进:类型参数检查;TraitComposer类的实例应该用@Generated
注解标记生成方法;枚举值应该被加载到注解属性中。更多细节可以在发布说明中找到。
Apache Groovy 2.5.16 已经发布,它包括 108 个缺陷修复、依赖性升级以及与上文相同的改进,除此之外,还包括如下的特性:@Delegate
注解应检查注解属性上的属性/方法名称,如includes
和excludes
;如果一个final
变量也被声明为volatile
,则会产生编译器错误;AST 转换应只为不可变的字段提供 getter 方法。进一步的细节可以在发布说明中找到。
Apache Camel
Apache 软件基金会在 Camel 3.14 版本的发布序列中提供了一个新的 LTS 小版本发布。3.14.2 版本修复了 27 个缺陷和改进,并且对 Spring Boot 和 Apache Commons Pool(org.apache.commons:commons-pool2)的 2.6.4 和 2.5.10 版本的依赖进行了升级。更多细节可以在发布说明中找到。
JReleaser
在通往 1.0.0 版本的道路上,JReleaser更新了一个早期访问版本,提供了如下的功能:新的可选项,以便在 verbose 模式下运行jpackage
命令,并删除了所有废弃的源代码。
JobRunr
JobRunr是一个在 Java 中执行后台处理的工具,它发布了4.0.10版本,包括对以下问题的修复:无法从包含抽象成员的Enum
中反序列化JobDetails类的实例,以及CronExpression
类的实例无法处理 12 月 30 日和 31 日的日期。
JDKMon
JDKMon是一个监控和更新已安装的 JDK 的新工具,它的最新版本已经提供给 Java 社区。它由 Azul 公司的首席工程师Gerrit Grunwald创建,17.0.23 版包括:更新的依赖关系,根据漏洞得分进行着色的安全漏洞链接,以及对 UI 小问题的修复。
Failsafe
Failsafe是一个轻量级、零依赖性的库,用于处理 Java 8+中的问题,它发布了 3.2.3 版本,修正了一个问题,即在RetryPolicy之外使用Timeout接口的实现时,在某些条件下无法触发。关于这个版本的更多细节,可以在更新日志中找到。
原文链接:
Java News Roundup: JDK 19 and Jakarta EE 10 Updates, Ansynch and Buffered Logging by Amazon Corretto
评论