Java 近期新闻:新的候选 JEP、Spring里程碑版本和Micrometer

2024-02-29 15:28:31 浏览数 (2)

作者 | Michael Redlich

译者 | 明知山

策划 | 丁晓昀

OpenJDK

JEP 466(类文件 API(第二轮预览))已从其 JEP Draft 8324965 进入 Candidate 状态。该 JEP 提议进行第二轮预览,以便获取针对前一轮预览的反馈:将在 JDK 22 中交付的 JEP 457(类文件 API(预览))。这个特性提供用于解析、生成和转换 Java 类文件的 API。它最初将作为 JDK 中 ASM ( Java 字节码操作和分析框架)的内部替代方案,并计划在后续将其开放为公共 API。Goetz 将 ASM 描述为“一个带有大量遗留负担的旧代码库”,并提供了背景信息,说明该草案将如何演化并最终取代 ASM。

JEP 465(字符串模版)已从 JEP Draft 8323333 进入 Candidate 状态。该 JEP 提议在经过两轮预览后最终确定特性,即将在 JDK 22 中交付的 JEP 459(字符串模版 (第二轮预览))和在 JDK 21 中交付的 JEP 430(字符串模版 (预览))。该特性通过 string templates 来增强 Java 语言,字符串模版包含嵌入的表达式,这些表达式在运行时被解释,其中嵌入的表达式也会进行求值和验证。有关 JEP 430 的更多详细信息,可以在 InfoQ 的这篇新闻报道中找到。

PatientEXP 创始人兼首席执行官 Archie Cobbs 以及 Oracle 技术咨询委员会成员 Gavin Bierman 介绍了 JEP Draft 8325803(灵活的构造函数体 (第二轮预览)),这个 JEP 提议进行第二轮预览和更名,以便获取针对前一轮预览的反馈,即将在 JDK 22 中交付的 JEP 447(super() 之前的语句 (预览))。该特新允许在构造函数中的 this()super() 调用之前出现不引用正在创建的实例的语句,并保留构造函数现有的安全性和初始化保证。该 JEP 中的变更包括:对局部类的处理;将在显式构造函数调用之前不能被访问的限制放宽为要求在显式构造函数调用之前不能读取字段。Gavin Bierman 为 Java 社区提供了这个 JEP 的初步规范以供评审和反馈。

JDK 23

JDK 23 早期访问版本的 Build 10 已发布,其中包含来自 Build 9 的更新,包括修复了各种问题 。有关此版本的更多详细信息,请参阅发布说明。

JDK 22

JDK 22 早期访问版本的 Build 36 也已发布,其中包含来自 Build 35 的更新,包括针对各种问题的修复。有关此版本的更多详细信息,请参阅发布说明。

对于 JDK 23 和 JDK 22,开发者可以通过 Java Bug Database 报告错误。

Spring Framework

Spring Framework 6.1.4 发布 ,修复了一些错误,改进了文档,升级了依赖项,并引入了许多新特性,例如:允许 BeanPropertyRowMapper 类的子类自定义映射名称;重构 ReloadableResourceBundleMessageSource 类,允许子类在重写 getMergedProperties() 方法时重用收集和合并算法;拒绝在同一元素上多次声明 @HttpExchange 注解,而不只是记录警告信息。有关该版本的更多详细信息,请参阅发布说明。

类似地,Spring 6.0.17 和 5.3.32 也已发布,包括错误修复、文档改进和新特性:如果预检请求中包含了 Access-Control-Request-Private-Network 标头(私有网络访问),允许 @CrossOrigin 注解从应用程序向 Google Chrome 提供 Access-Control-Allow-Private-Network 标头;避免在 CommonAnnotationBeanPostProcessor 类中调用 ClassUtils 类中定义的 getMostSpecificMethod() 方法时提前解析该方法,因为在找到注解之前可能会被外部调用。有关这些版本的更多详细信息,请参阅 6.0.17 和 5.3.32 的发布说明。

Spring Data 2024.0.0 的首个里程碑发布 :支持与 Spring Framework @Value 注解更接近的值表达式,用于改进 Spring 表达式语言(SpEL)表达式(#{…})、属性占位符(${…})或两者的表达式表示;与 MongoDB 5.0 驱动程序的兼容性;在 Neo4jTemplate 和 ReactiveNeo4jTemplate 类中创建围绕数据库操作的显式事务,如果一个操作涉及多个查询,则可避免驱动程序级别的多个事务所引起的混乱。有关该版本的更多详细信息,请参阅发布说明。

类似地,Spring Data 2023.1.3 和 2023.0.9 也已发布,包含了错误修复和相应的依赖项升级,如:Spring Data Commons 3.2.9 和 3.1.9;Spring Data MongoDB 4.2.9 和 4.1.9;Spring Data Elasticsearch 5.2.9 和 5.1.9;以及 Spring Data Neo4j 7.2.9 和 7.1.9。这些版本也可能被用在即将发布的 Spring Boot 3.2.3 和 3.1.9 中。

Open Liberty

IBM 发布 Open Liberty 24.0.0.2-beta,其中新增了对 OpenID Connect 客户端和服务器的反向通道注销支持。反向通道注销允许 OpenID Connect 服务器直接通知 OpenID Connect 客户端用户注销,让每个 OpenID Connect 客户端都可以在本地注销用户。这种直接的通信方式解决了通过嵌入在 OpenID Connect 客户端网页的 iFrame 进行通信会遇到的问题。

Micronaut

Micronaut 基金会发布 Micronaut Framework 4.3.2 ,其中包括 Micronaut Core 4.3.6、错误修复、文档改进和模块更新:Micronaut for Spring、Micronaut Tracing、Micronaut SQL Libraries、Micronaut Cache 和 Micronaut Security。还升级了依赖项到 Netty 4.1.107。有关此版本的更多详细信息,请参阅发布说明。

Quarkus

Quarkus 3.7.3(第三个维护版本)包含了错误修复、依赖项升级和重要变更,例如:通过将 privateKey 属性的生成设置为 finalstatic 提升了 OidcTestSecurityIdentityAugmentor 类的性能;允许在类和方法上使用多个 @TestConfigProperty 注解,允许覆盖每个测试方法的多个配置值;解决了在 Jakarta RESTful Web Services ContainerRequestContext 和 UriInfo 接口中定义的 getUriInfo()getMatchedURIs() 方法抛出的 IndexOutOfBoundsException,在设置 quarkus.http.root-path 属性时值不以斜杠结尾就会抛出这个异常。有关该版本的更多详细信息,请参阅变更日志。

Hibernate

Hibernate Search 7.1.0 的第一个发布候选版本 :通过新的 @SearchEntity 注解改进了独立 POJO 映射器中的实体注册;引入了新的查询字符串谓词 queryString,根据提供的字符串匹配结构化查询的文档,可以构建更高级的查询字符串;在 Elasticsearch 8.12 中引入了新的 knn 查询,消除一些向量搜索功能的限制。

Infinispan

Infinispan 15.0.0.Dev09 包含了依赖项升级和重要变更,例如:解决了 SoftIndexFileStoreFileStatsTest 类中定义的 testExpirationCompactionOnLogFile() 方法内的“不稳定测试失败”;将 TimeoutException 类移到 org.infinispan.commons 包中,与 CacheException 类位于相同的包中;在序列化配置时对 Hot Rod 和数据库凭据进行掩码处理。有关此版本的更多详细信息,请参阅发布说明。

Micrometer

Micrometer Metrics 1.13.0-M1 包含了错误修复、依赖项升级和新特性,例如:从 PrometheusMeterRegistry 类中删除对 Meter.Id 类的 getConventionName() 方法的调用,因为会重复计算收集器名称;在 AbstractTimer 类中定义的 record() 方法返回值为负时添加日志;在 DefaultMongoCommandTagsProvider 类中添加了一个 database 标签,用以支持 MongoDB 4.11.0 中添加的命令事件的 databaseName 属性名。有关该版本的更多详细信息,请参阅发布说明。

类似地,Micrometer Metrics 1.12.3 和 1.11.9 也分别包含了依赖项升级和重要的错误修复,例如:在包私有方法上使用 @MeterTag 注解时会抛出 NoSuchMethodException;如果 durationBetweenRotatesMillis 字段设置为 0,则在 TimeWindowMax 类中计算模数时会抛出 ArithmeticException;在 JvmGcMetricsTest 类定义的sizeMetricsNotSetToZero() 方法中使用 ZGC 时连续集成失败。有关这些版本的更多详细信息,请参阅 1.12.3 和 1.11.9 的发布说明。

Micrometer Tracing 1.3.0-M1 包含了错误修复、依赖项升级和新特性:一个新的 TestSpanReporter 类,实现了 SpanReporter 接口,可以在报告 span 时存储 FinishedSpan 接口的实现,允许一个 API 处理测试中的 span,而不管使用的是什么跟踪器;升级 Zipkin Brave 到 6.0,一个分布式跟踪工具库,避免使用 Brave 6.0 不支持的内部类型;重用 W3CPropagation 类,避免了一个重大的行为错误。有关此版本的更多详细信息,请参阅 发布说明。

类似地,Micrometer Tracing 1.2.3 和 1.1.10 分别包含了依赖项升级和重要的错误修复:在 OtelBaggageManager 类中,尽管创建了 span,但仍然缺少用户定义的标签;升级到 Spring Boot 3.2.1 后出现测试失败,因为 Log4j Mapped Diagnostic Context 中缺少了一些属性。有关这些版本的更多详细信息,请参阅 1.2.3 和 1.1.10 的发布说明。

Project Reactor

Project Reactor 2023.0.3(第三个维护版本)包含对 reactor-core 3.6.3reactor-netty 1.1.16reactor-kafka 1.3.23 的依赖项升级。同时,reactor-pool 1.0.5reactor-addons 3.5.1reactor-kotlin-extensions 1.2.2 等也升级到与 2023.0.3 保持一致的版本。有关此版本的更多详细信息,请参阅变更日志。

Project Reactor 2022.0.16(第十六个维护版本)包含对 reactor-netty 1.1.16reactor-kafka 1.3.23 的依赖项升级。同时,reactor-core 3.5.14reactor-pool 1.0.5reactor-addons 3.5.1reactor-kotlin-extensions 1.2.2 等也升级到与 2022.0.16 保持一致的版本。有关此版本的更多详细信息,请参阅变更日志。

Project Reactor 2020.0.41(代号 Europium-SR41)包含对 reactor-netty 1.0.42reactor-kafka 1.3.23 的依赖项升级。同时,reactor-core 3.4.35reactor-pool 0.2.12reactor-addons 3.4.10reactor-kotlin-extensions 1.1.10reactor-rabbitmq 1.5.6 等也升级到与 2020.0.41 保持一致的版本。有关此版本的更多详细信息,请参阅变更日志。

Piranha

Piranha 24.2.0 版本 带来了一些重要的变化,包括:确保 Jakarta Servlet RequestDispatcher 接口中定义的 forward() 方法不包装请求,并保持参数优先级不变;新的构建器类 DefaultWebApplicationRequestBuilder 和 DefaultWebApplicationResponseBuilder,用于改进请求和响应,作为对 WebApplication 类的补充;对 HttpSession 接口及其相关 API 的测试进行了整合。有关此版本的更多详细信息,请参阅它的文档和问题跟踪器。

查看英文原文

https://www.infoq.com/news/2024/02/java-news-roundup-feb12-2024/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

0 人点赞