Java 近期要点事件包括 OpenJDK 相关 JEP、JDK 18 进入 Rampdown 第一阶段、JDK 19 专家组成立、Log4J 中发现远程代码执行漏洞、MicroProfile 5.0,以及 Spring、Hibernate 和 Quarkus 的小版本发布(point release)。
已完成审核的 JEP 421,即“弃用并移除 Finalization 功能”,在 JDK 18 中的状态由“建议定向发布”升级为“定向发布(Targeted)”。该 JEP 将在此后的 JDK 发布版中弃用自 JDK 1.0 就引入的对象终止(Finalization)机制。对象终止机制最初设计用于避免产生资源泄露问题,但默认启用情况下会导致不可预测延迟、非受控行为和线程等多处严重缺陷。
JDK 18早期访问构建(early-access builds) 的 第 27 次构建(Build 27) 于上周公开提供。相对于第 26 次构建,本次的 关键更新 包括对多处问题的 修正,细节详见“发行说明”。
遵照 JDK 18 的 发布规划,Oracle Java 平台组首席架构师 Mark Reinhold 官宣 JDK 18 进入 Rampdown 第一阶段。这意味着 JDK 源代码仓库的主线已分支为 稳定代码库,并且 JDK 18 中不会再额外添加任何 JEP。至此,计划于 2022 年 3 月发布 GA 版的 9 个功能集最终为:
JEP 400:默认 UTF-8
JEP 408:简单 Web 服务器
JEP 413:Java API 文档中的代码片段
JEP 416:使用方法句柄(Method Handle)重新实现 Core Reflection 机制
JEP 417:Vector API(第三次孵化)
JEP 418:因特网地址解析 SPI 协议
JEP 419:外部语言交互(Foreign Function)和 Memory API(第二轮孵化)
JEP 420:switch 语句的模式匹配(第二版预览)
JEP 421:弃用并移除 Finalization 功能
鼓励开发人员通过 Java Bug Database 上报软件缺陷。
JSR 394,即 Java SE 19](https://jcp.org/en/jsr/detail?id=394),于上周提交,正式宣布了 JDK 19 的六人专家组成立。他们分别是来自 Azul Systems 的 Simon Ritter\)、来自 Eclipse 基金会的 Manoj Palat、来自红帽的 Andrew Haley、来自 SAP 的 Christoph Langer 、来自 Oracle 的 Iris Clark 和 Brian Goetz,由 Clark 和 Goetz 担当该 JSR 的牵头人。其中给定的 关键时间点 包括:2022 年 6 月至 8 月期间开放审核,2022 年 9 月发布 GA 版。
JDK 19早期访问构建版 的 第 1 次构建(Build 1) 也于上周发布。
上周,广为使用的 Log4j2 日志库 被发现 存在 零日攻击漏洞,涉及 2.0 到 2.14.1 间的各版本。远程代码执行漏洞 CVE-2021-44228 可利用 Java Naming 和 Directory Interface 中存在的缺陷,在日志中执行恶意代码。Log4j2 的贡献者迅速解决了漏洞,并发布了新版本 2.15.0。InfoQ 对此第一时间跟进并做了 详细报道。
由 MicroProfile 工作组 正式 发布 的 MicroProfile 5.0,对 8 个社区开发的 API 全部做了更新,即 Config 3.0、Fault Tolerance 4.0、Health 4.0、JWT Authentication 2.0、Metrics 4.0、OpenAPI 3.0、OpenTracing 3.0 和 Rest Client 3.0。
最初基于各自相应 JSR 的 CDI、JAX-RS、JSON-P 和 JSON-B API,现在已转为相应的 Jakarta EE 9.1规范声明,分别为 Jakarta 上下文和依赖注入 3.0(CDI)、Jakarta RESTful Web 服务 3.0(JAX-RS)、Jakarta JSON 处理 2.0(JSON-P)和 Jakarta JSON 绑定 2.0(JSON-B)。Jakarta 注解(Annotations)2.0 也已于近期添加到 MicroProfile API 核心集中。该规范声明中给定了一组表示通用语义概念的注解,用于支持声明式编程。
在独立规范声明中,只有 上下文传播(Context Propagation)1.3 做了更新。
InfoQ 将对此进展做持续跟踪报道。
上周 Spring 团队聚焦于解决 Spring Boot 中的 Log4j2 漏洞 问题,框架只有三次小版本发布。Spring Boot 应用的开发维护人员只有在选用了 Log4j2 默认日志 的情况下,才会受该漏洞的影响。
已 发布 的 Spring Tools 4 for Eclipse, Visual Studio Code, and Theia 4.13.0 中,包括 Eclipse 2021-12 和针对 Apple Silicon 平台(ARM M1)的构建。更多细节,提供在“变更日志”中。
最近发布的 Spring Cloud 2021.0.0(也称为 Jubilee)中提供 Spring Cloud Sleuth 3.1.0,支持 Spring Cloud Config、Spring Cloud Stream Reactive、Spring Session 和 Spring Cloud Task 等一系列 Spring 相关技术,还提供对 Cassandra 的支持。
Spring Native 0.11 也已 发布,其中新特性包括支持 Spring Data MongoDB 延迟加载(lazy loading )的新注解@DocumentReference、 恢复对 Spring Integration 的支持、支持非 Spring Boot 测试。Spring Native 的使用环境是 GraalVM 21.3、Spring Boot 2.6 和 Spring Cloud 2021.0。
作为 Hibernate ORM 5.6 版发行系列中的一个 维护版本,5.6.2.Final 版根据 Java 社区的反馈,恢复了部分在 5.6.1.Final 版中确定的弃用。这是因为“许多用户明确指出,这些弃用并非‘可操作的’,因而令人困惑。即在没有可替代 API 的情况下,此类弃用问题除视而不见之外无法得以解决。” 更多细节,参见“问题列表”。
已 发布 的 Hibernate Search 6.1.0.Beta1 版,包括可动态扩展的分布式索引、支持 Jakarta EE 9.1、自定义 Elasticsearch 索引映射等新特性。其中还有一些 完全变更,需注意协调策略database-polling已重命名为outbox-polling。
红帽上周发布了 Quarkus 2.5 的 第 2 个维护版本2.5.2.Final,其中修复了大量软件缺陷,并对文档做了改进。更多细节,参见“变更日志”。
原文链接:
https://www.infoq.com/news/2021/12/java-news-roundup-dec06-2021/
今日好文推荐
点个在看少个 bug 👇