作者 | Michael Redlich
译者 | 刘雅梦
策划 | 丁晓昀
Java 近期新闻综述,包括来自 OpenJDK、JEP 425、JDK 19、Loom 项目的 19-loom 5-429 构建版本、Jakarta EE Starter 实用程序、Spring 里程碑及小版本、Payara 和 JetBrains 关于 Spring4Shell 的声明、JReleaser 1.0、Helidon 2.5.0、JHipster 7.8.1、Hibernate Search 6.1.4、Kotlin 1.6.20 和 JDKMon 17.0.24 等的新特性。
OpenJDK
JEP 425,虚拟线程(预览版),从其 JEP 草案(Draft)8277131 提升为候选(Candidate)状态。该 JEP 将虚拟线程引入到 Java 平台中,这是一种轻量级线程,可以极大地减少编写、维护及观测高吞吐量并发应用程序的工作量。
JEP 草案 8284289,获取异步调用跟踪分析的改进方式,这是一个特性 JEP 类型,它定义了一个高效的 API,用于从带有 Java 和本机帧信息的信号处理程序中获取异步调用跟踪信息以进行分析。
JEP 草案 8284453,在 JFR 中可选的记录线程上下文(Optionally Record Thread Context in JFR),这是一个特性 JEP 类型,它建议增加将用户定义的相关事件上下文附加到现有的标准 JFR 堆栈跟踪、线程 ID 和时间事件中的能力。
JDK 19
甲骨文(Oracle)的 Java 平台组首席架构师 Mark Reinhold 对 JDK 19 的发布提议了以下的时间表:
- 2022 年 6 月 9 日:Rampdown 第一阶段(从主干源码库分支创建)
- 2022 年 7 月 21 日:Rampdown 第二阶段
- 2022 年 8 月 11 日:首次发布候选版本
- 2022 年 8 月 25 日:最终发布候选版本
- 2022 年 9 月 20 日:正式发布
该提案在 2022 年 4 月 13 日之前将继续接受审查以征求意见,直到最终确定。目前,JDK 19 只有一个新特性,JEP 422:Linux/RISC-V 移植。
JDK 19 早期访问构建版本的第 17 版已于上周发布,其中包括对第 16 版中各种问题的修复及更新。更多详细信息请参阅发布说明(https://jdk.java.net/19/release-notes)。
对于 JDK 19,鼓励开发人员通过 Java 缺陷数据库来报告缺陷。
Loom 项目
Loom 项目的早期访问构建版本的 19-loom 5-429 版已经面向 Java 社区发布,它是基于 JDK 19 早期访问构建版本的第 16 版的。这个最新版本的特性是对ForkJoinPool类进行了更新,这样可以提高在消息传递等情况下性能。
Jakarta EE Starter
Jakarta EE Ambassadors 已经推出了 Jakarta Starter 实用程序的 1.0 版,这是一个 Maven 原型,可以生成示例代码以构建简单的 Jakarta EE 微服务项目。Jakarta Starter 已经在 JDK 8、JDK 11 和 JDK 17 上测试过了,它需要 Maven 3 。
Spring 框架
在通往代号为 Kilburn 的 Spring Cloud 2022.0.0 的道路上,第二个里程碑版本已经发布,其中包括对其子项目的一系列的改进、缺陷修复和依赖升级:Spring Cloud Stream、Spring Cloud Config、 Spring Cloud Kubernetes、Spring Cloud Contract、Spring Cloud Gateway、Spring Cloud Function、Spring Cloud Commons。然而,也有一些破坏性的变更。Spring Cloud 2022.0.0-M2 与 Spring Boot 3.0.0-M2 兼容。有关该版本的更多详细信息,请参阅发布说明(https://github.com/spring-cloud/spring-cloud-dataflow/releases/tag/v2.9.4)。
Spring Cloud Data Flow 2.9.4 已经发布,它解决了漏洞 CVE-2022-22965(又名 Spring4Shell)和 CVE-2021-29425。还对 Spring Boot 2.5.12 进行了依赖项升级。有关该版本的更多详细信息,请参阅发布说明。
关于 Spring4Shell 漏洞的供应商声明
Payara 关于 Payara 平台的声明:
2022 年 3 月在 Spring Java 框架中检测到的远程代码执行(RCE)漏洞(被标记为 CVE-2022-22965)不太可能影响使用 Payara 平台的用户。 然而,在 Payara Server 中部署 Spring Framework WAR 打包应用程序的用户会受到这个漏洞的影响,因为 Payara Server 在其 Servlet 实现(即 Catalina)中共享了代码片段,该实现最初是从 Apache Tomcat 分支出来的。
为了降低此漏洞的影响风险,我们实施了一个紧急修复,该修复可以有效地禁用 Catalina 相应模块中受影响的代码。该修复将被包含在即将发布的 Payara 社区版(5.2022.2)和 Payara 企业版(5.38)中。
JetBrains 关于 JetBrains 产品的声明:
我们与产品团队一起对 JetBrains Web 应用程序进行了审计,包括的产品有:YouTrack、Hub、TeamCity、Space, Datalore, 服务有: JetBrains Website 和 JetBrainsAccount。 上面列出的应用程序都没有使用易受攻击的 Spring 版本,或者不符合已知的攻击标准,因此不受已发现的安全问题的影响。请参考以下有关 TeamCity、Hub 和 YouTrack 的技术讨论。
JReleaser
在 JReleaser 初始版本 0.1.0 发布后的一周年之际,预期内的 1.0 版本也已发布,它附带了许多新特性,比如:基于发布者的下载 URL 添加格式化功能;允许使用appName和appVersion属性的命名模板;可跳过模板文件的选项;并添加了一个packageVersion属性来解决 Chocolate 的版本方案问题。
关于这个版本的更多详细信息可以查看变更日志(https://github.com/jreleaser/jreleaser/releases/tag/v1.0.0),与 JReleaser 的创建者 Andres Almiray 的采访问答可以查看 InfoQ 新闻报道(https://www.infoq.com/news/2022/04/jreleaser-v1/)。
Helidon
甲骨文(Oracle)发布了 Helidon 2.5.0,它提供了以下特性:改进的 Oracle 云基础设施(Oracle Cloud Infrastructure,OCI)的 Java SDK 支持;改进了 JAX-RS 的实现,以支持@Path注解;以及一些缺陷修复和依赖升级。有关该版本的更多详细信息,请参阅发布说明(https://github.com/oracle/helidon/releases/tag/2.5.0)。
JHipster
在 7.8.0 版本发布了一周之后,JHipster 的 7.8.1 版发布了,其中包括:许多库的升级;并修复了 CVE-2022-24815 漏洞,即在创建带有响应式 SQL 后端的应用程序时进行 SQL 注入的漏洞。有关该版本的更多详细信息请参阅变更日志(https://github.com/jhipster/generator-jhipster/releases/tag/v7.8.1)。
Hibernate
Hibernate Search 6.1.4.Final 已发布,其特性包括:对 Hibernate ORM 6.0.0.Final 和 Hibernate Commons Annotations 6.0.0.Final 的-orm6构件进行了升级;将-orm6和-Jakarta构件的 Jakarta 依赖项升级至最新版本;在 Lucene 后端的多个查询中使用 SearchSort 接口实例,以消除副作用;以及一个对 Elasticsearch 后端的修复,在该后端中,对从未被索引的动态字段进行了排序。
Kotlin
JetBrains 发布了 Kotlin 1.6.20,其特性包括:支持在 Kotlin/JVM 中定义上下文相关的声明;改进了与通用 Java 类和接口的互操作性;在 JVM IR 后端并行编译单个模块,从而加快了构建时间;通过 Kotlin/JS IR 中的增量编译,简化了开发体验;Kotlin/Native 性能的改进;由于多平台项目的层次结构,改进了代码共享。有关该版本的更多详细信息,请参阅 InfoQ 的新闻报道(https://www.infoq.com/news/2022/04/kotlin-1-6-20-released/)。
JDKMon
最新版本的 JDKMon 是一个监控和更新已安装 JDK 的新工具,已面向 Java 社区发布。它由 Azul 的首席工程师 Gerrit Grunwald 创建,版本 17.0.24 附带的特性包括:与 JDKMon 的 Linux 版本相关的修复,以及 CVEs 指示符的替换。OpenJDK 版本的 Ubuntu 版本将被检测,但是在 Disco API 中不支持更新。
原文链接:
https://www.infoq.com/news/2022/04/java-news-roundup-apr04-2022/