Java 近期要点事件包括 OpenJDK 相关 JEP、JDK 18 进入 Rampdown 第一阶段、JDK 19 专家组成立、Log4J 中发现远程代码执行漏洞、MicroProfile 5.0,以及 Spring、Hibernate 和 Quarkus 的小版本发布(point release)。
OpenJDK
已完成审核的 JEP 421,即“弃用并移除Finalization功能”,在 JDK 18 中的状态由“建议定向发布”升级为“定向发布(Targeted)”。该 JEP 将在此后的 JDK 发布版中弃用自 JDK 1.0 就引入的对象终止(Finalization)机制。对象终止机制最初设计用于避免产生资源泄露问题,但默认启用情况下会导致不可预测延迟、非受控行为和线程等多处严重缺陷。
JDK 18
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 417:Vector API(第三次孵化)
JEP 418:因特网地址解析SPI协议
JEP 420:switch语句的模式匹配(第二版预览)
JEP 421:弃用并移除Finalization功能
鼓励开发人员通过Java Bug Database上报软件缺陷。
JDK 19
JSR 394,即Java SE 19,于上周提交,正式宣布了 JDK 19 的六人专家组成立。他们分别是来自 Azul Systems 的 Simon Ritter](https://www.linkedin.com/in/siritter/)、来自 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 的远程代码执行漏洞
上周,广为使用的Log4j2日志库被发现存在零日攻击漏洞,涉及 2.0 到 2.14.1 间的各版本。远程代码执行漏洞CVE-2021-44228可利用 Java Naming 和 Directory Interface 中存在的缺陷,在日志中执行恶意代码。Log4j2 的贡献者迅速解决了漏洞,并发布了新版本 2.15.0。InfoQ 对此第一时间跟进并做了详细报道。
MicroProfile
由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 团队聚焦于解决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
作为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
红帽上周发布了 Quarkus 2.5 的第2个维护版本2.5.2.Final,其中修复了大量软件缺陷,并对文档做了改进。更多细节,参见“变更日志”。
原文链接:
Java News Roundup: JDK 18 in Rampdown, JDK 19 Expert Group, Log4j2 Vulnerability, MicroProfile 5.0
评论