Java 近期新闻包括:OpenJDK 的新特性,一个新的值对象相关的草案、JDK 18、JDK 19、Loom 项目、其他供应商对 Log4Shell(Log4j 在 Shell 下的实现)的声明、大量的 Spring 和 Quarkus 的更新、Hibernate ORM 60.0-M3、以及 Apache Camel、Camel Quarkus、Apache Tika 2.2.1、GraalVM Native Build Tools 0.9.9 的小版本发布(point release)。
上周,一个新的 JEP 草案, 预览版本的值对象(Value Objects) 被添加到了列表中。 这种新的 预览语言和VM特性 建议将值类型(Type)定义为无标识的值类(Class)并指定其实例的行为来增强 Java 对象模型。 这些类只包含最终的实例字段,而没有对象标识。
上周,JDK 18 早期体验版本 的 第29版 发布了,其中包含了对第 28 版中各种 问题 的修复和更新 。更多详细信息请查看 发布说明 。
上周,JDK 19 早期体验版本 的 第3版 也发布了,其中包含对第 2 版中各种 问题 的修复和 更新 。
对于 JDK 18 和 JDK 19,均鼓励开发人员通过 Java Bug Database 来提交 Bug。
Loom 项目(Project Loom)的 早期体验版本 ,19-loom+1-11 版,已经可以在 Java 社区使用了,它是基于 JDK 19 早期访问版本的 第2版 构建的。
甲骨文(Oracle)关于 Helidon 的 声明 :
默认情况下,基于 Helidon 的应用程序不会使用 Log4j,Log4j 也不会出现在类路径中。 但是 Helidon 提供了一个可选的 Log4j 集成模块( helidon-logging-log4
),并且 Helidon 会管理 Log4j 的版本。
如果你的应用程序使用了 helidon-logging-log4
,或者你的应用程序直接使用了 Log4j,那么你的应用程序需声明对 Log4j 的显式依赖。但是这个依赖的版本可能会被 Helidon 管理。
JetBrains 关于 JetBrains 市场中第三方插件的 声明 :
由于有很多基于 IntelliJ 的插件,我们最初使用 API Watcher 来检查哪些插件以及它们的哪些确切的版本使用了 log4j 中的哪些内容。我们暂时隐藏了所有检测到的使用了 log4j 的插件版本。
我们知道,这样的检查可能会产生一些误报。但是我们更愿意谨慎行事,更安全地使用它,并引起许多插件作者对潜在风险的注意,而不是错过那些需要重新打包 log4j 的插件。
Spring 本周非常忙碌,因为有许多不同的 Spring 项目 的小版本都发布了。
Spring Boot 2.6 和 2.5 版本系列有 2 个小版本发布:
版本2.6.2 包含 55个bug修复和文档改进 ,以及许多依赖项升级,如 Log4j 2.17.0 、 Kotlin 1.6.10 、 Hibernate 5.6.3.Final 以及多个与 Spring 相关的项目。
版本2.5.8 包含 46个bug修复和文档改进 ,以及许多依赖项升级,如 Log4j 2.17.0 、 Kotlin 1.5.32 、 Hibernate 5.4.33 以及多个与 Spring 相关的项目。
Spring Cloud Square 0.4.0 已经发布了,其特性包含:支持对非负载均衡的用例 进行调整 ;能够 为每个用 @RetrofitClient
注解的 Retrofit 客户端实例配置不同的 WebClient.Builder
bean;以及为 OkHttpClient
类实例 集成Spring Cloud Sleuth 。
Spring Native 0.11.1 已经 可用 ,其中包含了 13个bug修复和文档改进 ,以及对 Spring Boot 2.6.2 的依赖升级。
Spring Integration 5.5.7 已经 发布 ,其中包含了大量的 bug 修复。 更多详细信息请查看 迁移指南 (针对潜在的破坏性变更)和 变更日志 。
上周还发布了 Spring Security 版本的 5.2.15 、 5.3.13 、 5.4.10 、 5.5.4 和 5.6.1 等小版本,其中包含一些 bug 修复和小的改进。
Quarkus 2.5.4.Final 是 一个维护版本 ,提供了对 Jackson 2.12.6 的依赖升级,并修复了 Jackson Databind 中可能出现的 拒绝服务(Dos)攻击 。 更多详细信息请查看 变更日志 。
Quarkus 2.6.0.Final 已经发布 ,其特性包括:依赖升级到了 SmallRye Reactive Messaging 3.13、Kafka 3.0、Kotlin 1.6 和 Camel 3.14;已将诸如 Neo4J、Amazon Alexa、Reactive Messaging HTTP 等扩展迁移到了 Quarkiverse Hub ;一个新的 用于缓存的编程API ;以及一个更小的、基于 UBI Micro 的 Docker 镜像,可用于本地可执行文件。 该版本不包含来自 Quarkus 2.5.4.Final 的修复内容,但 Quarkus 2.5.4.Final 的修复内容包含在了 Quarkus 2.6.1.Final 中。
Quarkus 2.6.1.Final 是 2021 年的 最后一个维护版本 ,包括了 Quarkus 2.5.4.Final 的所有修复和一些依赖项升级。更多详细信息请查看 变更日志 。
上周发布了 Hibernate ORM 6.0 的 第3个beta版本 ,其中添加了新的注解: @IdGeneratorType
允许以类型安全的方式配置 IdentifierGenerator
接口; @TenantId
使用基于列的多租户来标记定义租户的属性; @AttributeBinderType
允许自定义属性映射的定义方式。更多详细信息请查看 Hibernate 6.0 的 用户指南 和 迁移指南 。
阿帕奇(Apache)软件基金会 发布了 Camel 3.7 版本系列中的最后一个小版本。 3.7.7 版本包含了 7 个 bug 修复和改进,并对 Logback 1.2.8、Log4j 2.16.0、以及 camel-nsq
和 camel-corda
组件的依赖项进行了升级。更多详细信息请查看 发布说明 。
为了与 Quarkus 保持一致,阿帕奇还发布了 Camel Quarkus 2.6.0,其中包含了 Camel 3.14.0 和 Quarkus 2.6.0,而 Quarkus 2.6.0.Final 和 JFR 原生支持。
Apache Tika 发布了其元数据提取工具包的 2.2.1 版。以前它是 Apache Lucene 的一个子项目,这个最新版本包括了对 Log4j 2.17.0 的升级,以及对 Office Open XML ( docx
/ pptx
/ xlsx
)回归的关键修复,该回归是在版本 2.2.0 中引入的。更多详细信息请查看 发布说明 。
在通往 1.0 版本的道路上, 甲骨文实验室(Oracle Labs) 发布了 0.9.9版本 的 Native Build Tools ,这是一个 GraalVM 项目,包含了与 GraalVM Native Image 互操作的插件。 这个最新的版本对 Gradle 插件进行了修复,即:如果缺少类路径条目, 则会放松资源检测机制 ;一个与自定义二进制文件相关的合适的原生推理任务,即除 main
二进制文件和 test
二进制文件之外的二进制文件;以及 对禁用工具链检测的操作进行返工 。