译者 | 张卫滨
策划 | 丁晓昀
本期的 Java 新闻汇总主要包括如下的新闻:JEP 472,准备限制对 JNI 的使用,目标在 JDK 24 实现;Spring Framework 的里程碑和小版本发布;Piranha Cloud 的月度发布,以及 Gradle 8.9 和 Arquillian 1.9 的发布。
OpenJDK
JEP 472,准备限制对 JNI 的使用(Prepare to Restrict the Use of JNI),已经从 JDK 24 的 Candidate 状态提升到了 Proposed to Target 状态。这个 JNI 建议限制使用本质上不安全的 Java 本地接口(Java Native Interface,JNI),同时限制使用 JDK 22 提供的外部函数与内存(Foreign Function & Memory,FFM)API 中的受限方法。从即将发布的 JDK 23 开始,除非 FFM 用户在命令行启用不安全的本地访问,否则 Java 运行时将会显示关于使用 JNI 的警告。预计在 JDK 23 之后的版本中,使用 JNI 将会抛出异常,而不仅仅是警告。按照预计,审查工作会在 2024 年的 7 月 15 日结束。
JDK 23
JDK 23 的早期访问构建版本的 Build 31 发布,该版本是对 Build 30 的更新,其中包括对各种问题的修复。关于这个版本的更多细节可以在发布说明中找到,关于 JDK 23 新特性的详细信息,请参阅 InfoQ 的新闻报道。
JDK 24
JDK 24 的早期访问构建版本的 Build 6 发布,该版本是对 Build 5 的更新,其中包括对各种问题的修复。关于这个版本的更多细节可以在发布说明中找到。
对于 JDK 23 和 JDK 24,鼓励开发人员通过 Java 缺陷数据库报告缺陷。
Spring Framework
Spring Framework 6.2.0 的第五个里程碑版本提供了缺陷修复、文档改善、依赖性升级和新的特性,比如,新的SmartHttpMessageConverter
解决了GenericHttpMessageConverter
接口的多个限制,同时提供了与 Spring WebFlux Encoder
和Decoder
接口更一致的契约;允许ObjectProvider
接口的自定义实现只声明一个方法,以改进单元测试;解决了SimpleClientHttpResponse
类在响应体为空且状态码大于等于 400 时抛出IOException
的问题。关于该版本的更多详细信息,请参阅发布说明。
与之类似,Spring Framework 6.1.11 版本发布,提供了缺陷修复、文档改善、依赖性升级和新的特性,比如,确保 Spring Expression Language ReflectionHelper
类中 Java MethodHandle
类的 varargs 组件类型不为null
;AbstractAutowireCapableBeanFactory
类中定义的重载getTypeForFactoryMethod()
方法应捕获NoClassDefFoundError
并返回null
。该版本将包含在即将发布的 Spring Boot 3.3.2 和 3.2.8 中。关于该版本的更多详细信息,请参阅发布说明。
Spring Data 的 2024.0.2 和 2023.1.8 均是服务版本,主要进行了缺陷修复,并对以下子项目进行了依赖性升级:Spring Data Commons 3.3.2 和 3.2.8、Spring Data MongoDB 4.3.2 和 4.2.8、Spring Data Elasticsearch 5.3.2 和 5.2.8,以及 Spring Data Neo4j 7.3.2 和 7.2.8。即将发布的 Spring Boot 3.3.2 和 3.2.8 可分别使用这些版本。
Spring Cloud 2023.0.3 发布,其代号为 Leyton,其中包含缺陷修复和子项目的变更,即 Spring Cloud Kubernetes 3.1.3、Spring Cloud Function 4.1.3、Spring Cloud OpenFeign 4.1.3、Spring Cloud Stream 4.1.3 和 Spring Cloud Gateway 4.1.5。该版本基于 Spring Boot 3.2.7。关于这个版本的更多详细信息,请参阅发布说明。
Spring HATEOAS 2.3.1 和 2.2.3 版本发布,升级了依赖关系,并改进了 Internet Engineering Task Force(IETF) RFC-8288 规范(Web Linking)的解析器,以支持高级链接头信息表达式。关于这两个版本的更多详细信息,请参阅 2.3.1 和 version 2.2.3 的发布说明。
Quarkus
Quarkus 3.12.2 是第二个维护版本,它解决了一些值得注意的问题,例如,自 Quarkus 3.10 发布以来,SecurityIdentityAugmentor
接口的实现会导致 Jakarta CDI ContextNotActiveException
;当 Quarkus REST Client 扩展的服务器部分未包含进来时,使用 Jakarta RESTful Web Services @Provider
注解标注的类未注册为原生镜像;执行 Quarkus CLI 添加扩展时,会在gradle.properties
文件中重新排列属性并添加时间戳,关于该版本的更多详情,请参阅变更日志。
Micrometer
Micrometer Metrics 1.14.0 的第一个里程碑版本提供了依赖性升级和新特性,比如,在@Counted
注解中添加了对@MeterTag
注解的支持,以完善@Timed
注解中对现有功能的支持;允许为OtlpMeterRegistry
类提供自定义的 Java ThreadFactory
接口实现;在MongoMetricsConnectionPoolListener
类中添加了一个计数器,以便于检索连接失败的尝试次数。关于该版本的更多详细信息,请参阅发布说明。
Micrometer Metrics 的 1.13.2 和 1.12.8 版本提供了依赖升级和值得注意的缺陷修正,比如,在创建Metrics
元数据时,避免为每个 metric 的 scrape 均调用约定名称,因为约定名称已经计算好了;由于PrometheusMeterRegistry
类中的直方图(histogram)不一致而导致的IllegalArgumentException
;对定义在OtlpMeterRegistry
中的publish()
方法进行了修正,解决了由于“Failed to publish metrics to OTLP receiver”错误信息中不包含可操作的上下文而导致日志中不含有跟踪堆栈的问题。关于这些版本更多的详细信息,请参阅 1.13.2 和 1.12.8 的发布说明。
Micrometer Tracing 1.4.0 的第一个里程碑版本提供了依赖性升级和两个新的特性:为micrometer-tracing-bridge
目录中的方法和字段中添加 Micrometer Metrics @Nullable
注解,以及在TraceContext
和Tracer
接口中分别定义了sampled()
和nextSpan(Span)
方法;还提供了将 Micrometer Metrics Observation
接口中定义的Context
内部类的值传播到Baggage
接口的功能。关于该版本的更多信息,请参阅发布说明。
同样,Micrometer Tracing 的 1.3.2 和 1.2.8 版本也分别升级了 Micrometer Metrics 1.13.2 和 1.12.8,以及 OpenTelemetry Semantic Attributes 1.33.4-alpha。关于这些版本的更多详情,请参阅 1.3.2 和 1.2.8 的发布说明。
Project Reactor
Project Reactor 2024.0.0 的第四个里程碑版本对reactor-core 3.7.0-M4
、reactor-netty 1.2.0-M4
和reactor-pool 1.1.0-M4
进行了依赖性升级。此外,reactor-kafka 1.4.0-M1
、reactor-addons 3.6.0-M1
和reactor-kotlin-extensions 1.3.0-M1
制品保持不变,重新调整为 2024.0.0-M4 版本。关于该版本的更多详情,请参阅变更日志。
Project Reactor 2023.0.8 是第八个维护版本,对reactor-core 3.6.8
、reactor-netty 1.1.21
和reactor-pool 1.0.7
进行了依赖性升级。此外,reactor-kafka 1.3.23
、reactor-addons 3.5.1
和reactor-kotlin-extensions 1.2.2
制品保持不变,重新调整为 2023.0.8 版本。关于该版本的更多详情,请参阅变更日志。
Project Reactor 2022.0.21 是第 21 个维护版本,对reactor-core 3.5.19
、reactor-netty 1.1.21
和reactor-pool 1.0.7
进行了依赖性升级。此外,reactor-kafka 1.3.23
、reactor-addons 3.5.1
和reactor-kotlin-extensions 1.2.2
制品保持不变,重新调整为 2022.0.21 版本。关于该版本的更多详情,请参阅变更日志。
最后,代号为 Europium-SR46 的 Project Reactor 2020.0.46 版本发布,对reactor-core 3.4.40
和reactor-netty 1.0.47
进行了依赖性升级。此外,reactor-kafka 1.3.23
、reactor-pool 0.2.12
、reactor-addons 3.4.10
、reactor-kotlin-extensions 1.1.10
和reactor-rabbitmq 1.5.6
制品保持不变,重新调整为 2020.0.46 版本。关于该版本的更多详情,请参阅 变更日志。
Piranha Cloud
Piranha 24.7.0 版本发布,提供了缺陷修复、依赖关系升级以及众多工具的迁移,比如,Eclipse JAXB、OmniFaces JWT Authorization、OmniFish Transact 和 Eclipse Parsson 移至到了各自的 Piranha 扩展中。该版本还包括一个新的 DefaultPiranhaBuilder
类,它实现了PiranhaBuilder
接口。关于此版本的更多详细信息,请参阅其文档和问题跟踪器。
Apache 软件基金会
Apache Tomcat 9.0.91 发布,其中包含缺陷修复和值得注意的变更,例如,确保在打包到 JAR 文件的时候,正确处理标签文件中的 include 指令(包括绝对路径和相对路径);扩展AuthenticatorBase
类的AuthenticatorBase.AllowCorsPreflight
内部枚举类中过滤器值的实现和allowCorsPreflightBypass()
方法,使其适用于与 CORS 过滤器配置的 URL 模式相匹配的所有请求,而不仅仅在 CORS 过滤器映射到/*
时才适用。关于该版本的更多详细信息,请参阅发布说明。
Apache Camel 4.7.0 发布,提供了缺陷修复、依赖性升级和功能改进 / 新特性,例如,为 AWS、Azure 和 Google 云平台组件添加了端点服务位置;为RestRegistry
接口提供了新的开发人员控制台,可在此获取已知 REST 服务的列表;将TransformerKey
和ValidatorKey
类从实现迁移到 SPI。关于此版本的更多详细信息,请参阅发布说明。
Arquillian
Arquillian 1.9.0.Final发布,提供了值得注意的变更,例如,默认禁用 Maven MultiThreadedBuilder
类,以便在持续集成时生成可读取的构建日志;恢复 JUnit BeforeEachCallback
和AfterEachCallback
监听器接口的使用,因为在TestRunnerAdaptor
接口中定义的before()
和after()
方法会在监听器中调用。有关此版本的更多详细信息,请参阅变更日志。
Gradle
Gradle 8.9.0 发布,提供了如下特性:改进的错误和告警报告,可在依赖关系解析过程中报告各种问题;为 IDE 集成器提供 Java 编译错误的结构化细节,使分析和解决问题变得更容易;能够显示 Gradle 所使用的 JVM 的更详细的信息。有关此版本的更多详细信息,请参阅发布说明。
查看英文原文:
Java News Roundup: JDK 24 Update, Spring Framework, Piranha Cloud, Gradle 8.9, Arquillian 1.9 (https://www.infoq.com/news/2024/07/java-news-roundup-jul08-2024/)
声明:本文由 InfoQ 翻译,未经许可禁止转载。