InfoQ 推荐 ( ) • 2024-04-15 08:28

OpenJDK

JEP 466(类文件 API (第二次预览)")已从Candidate进入到Proposed to Target状态。该 JEP 提议进行第二轮预览,以获取来自之前一轮预览的反馈,即 在 JDK 22 中发布的 JEP 457(类文件 API (预览)")。该特性提供用于解析、生成和转换 Java 类文件的 API。这将先作为 ASM" (在 JDK 中 ASM 是 Java 字节码操作和分析框架)的内部替代方案,并计划在后续将其开放为公共 API。Goetz 将 ASM 描述为“一个带有大量遗留负担的老代码库”,并提供了背景信息",说明该提议将如何发展并最终取代 ASM。

JDK Mission Control" 9.0.0 发布",包含错误修复、增强功能和新特性,如:支持 Eclipse 4.30、Linux/AArch64 和深色模式;用于本地 JVM 刷新间隔的用户配置,替换默认的 5000 毫秒间隔;以及改进的 JFR 解析器性能。Mission Control 客户端现在在 Eclipse 2023-12 及以上版本上最佳运行。InfoQ 将跟进更详细的新闻报道。

JDK 22

Oracle 发布" Java 编程语言 和 JVM 22版本",其中包含了 12 个 JEP 的最终特性。更多详情可在此 InfoQ 新闻报道"中找到。

JDK 23

JDK 23 早期访问版本" 的 Build 15" 已发布,其中包含了自 Build 14 以来的更新",包括针对各种问题"的修复。关于此版本的更多详细信息,请参阅发行说明"。

Oracle Java 平台小组首席架构师 Mark Reinhold" 正式提议" JDK 23 的发布时间表如下:

Rampdown Phase One(从主线分叉):2024 年 6 月 6 日Rampdown Phase Two:2024 年 7 月 18 日Initial Release Candidate:2024 年 8 月 8 日Final Release Candidate:2024 年 8 月 22 日General Availability:2024 年 9 月 17 日

该时间表的评审于 2024 年 3 月 27 日结束。

GraalVM

随着JDK 22的发布",Oracle Labs 也发布"了GraalVM for JDK 22" 。新特性包括:对 Foreign Function & Memory API" 的实验性支持;支持 NATIVE_IMAGE_OPTIONS 环境变量,允许用户和工具通过环境传递额外参数;改进了原生镜像代理跟踪调用机制。有关此版本的更多详细信息,请参阅发行说明"。InfoQ 将跟进更详细的新闻报道。

Amazon Corretto

亚马逊发布" Amazon Corretto 22,他们的 OpenJDK 22 下游发行版,可在 Linux、Windows 和 macOS 上使用。开发人员可以从网站"上下载最新版本。

BellSoft Liberica JDK

类似的,BellSoft 发布" Liberica JDK 22,他们的 OpenJDK 22 下游发行版本。开发人员可以从网站"上下载最新版本。

随着 JDK 22 和 GraalVM for JDK 22 的发布,BellSoft 还发布"了 Liberica Native Image Kit" 24.0.0。变更包括:取消核心包,改用标准包;标准包和完整包仅用于 Java 应用程序(带或不带 JavaFX);改进了 SubstrateVM 监视器的进入/退出例程,加速原生镜像的启动"。

GlassFish

GlassFish 8.0.0的第三个候选版本"包含了一些错误修复和显著变更,如:改进管理控制台的加载选项;将 GlassFishORBHelper" 类重写为单例类;重构了 GlassFish 事件和调度处理机制。有关该版本的更多详细信息,请参阅发行说明"。

Spring Framework

Spring Boot" 3.3.0的第三个里程碑版本发布",包含了错误修复、文档改进、依赖项升级和新特性,如:一个新的执行器端点 /actuator/sbom,用于公开所有可用的 SBOM;支持从环境加载 base 64 编码的值;在 UndertowWebServer" 类中添加了一个新的 getUndertow() 方法,与 TomcatWebServer" 类中定义的 getTomcat() 方法保持一致。有关该版本的更多详细信息,请参阅发行说明"。

类似的,Spring Boot 3.2.4"和3.1.0"发布,包含了依赖项升级和重要的错误修复,如:在 WindowsOS 上解析基于 URL 类型的字符串创建的 BuildpackReference" 类实例时发生错误;在使用虚拟线程时缺少线程名前缀;在 Tomcat 被取消关闭时却报告成功关闭。关于这些版本的更多详细信息,请参阅版本 3.2.4"和版本 3.1.10"的发行说明。

Spring Security" 6.3.0-M3、6.2.3、6.1.8、6.0.10、5.8.11 和 5.7.12 已发布",均包含了错误修复和依赖项升级。里程碑版本的新特性包括:在DelegatingReactiveAuthenticationManager"类中添加了一个新方法 setContinueOnError() 和相应的字段 continueOnError,改进对失败授权的处理;添加新的类DelegatingAuthenticationConverter"和DelegatingServerAuthenticationConverter",用于[a]遍历多个AuthenticationConverter"接口的实现,找到第一个非空的Authentication"接口实现,以及[b]分别委托给其他ServerAuthenticationConverter"接口的实现。关于这些版本的更多详细信息,请参阅版本 6.3.0-M3"、版本 6.2.3"、版本 6.1.8"、版本 5.8.11" 和 版本 5.7.2" 的发行说明。

Spring Session" 3.3.0的第三个里程碑版本"包含了错误修复、依赖项升级和新特性,例如:允许使用@SpringSessionTransactionManager"注解指定PlatformTransactionManager"接口的实现,以防止应用程序在有多个TransactionManager"接口实现的情况下无法启动;新的SpringSessionBackedReactiveSessionRegistry"类,它从Spring Session中检索会话信息,而不是自己维护。关于这个版本的更多详细信息,请参阅发行说明"。

类似地,Spring Session" 3.2.2 和 3.1.5 已发布",其中包含了错误修复、依赖项升级以及与之前提到的 PlatformTransactionManager 接口的新特性。关于这些版本的更多详细信息,请参阅版本 3.2.2" 和 版本 3.1.5" 的发行说明。

Spring Shell" 3.2.3 和 3.1.10 已发布",其中包含了一些显著变化,例如:解决了由于重复的帮助参数导致的非交互式测试示例失败;新增了一个类,SpringSigningPlugin",用于签名快照版本;升级到 Gradle 8.6。这些版本分别基于 Spring Boot 3.2.4 和 3.1.10。关于这些版本的更多详细信息,请参阅版本 3.2.3" 和 版本 3.1.10" 的发行说明。

Spring Integration" 6.3.0-M2、6.2.3 和 6.1.7 已发布",其中包含了错误修复和依赖项升级。这三个版本都有一个显著的变化,即ObservationPropagationChannelInterceptor"类已被弃用,因为它无法正确地传播观测结果。建议开发人员启用通道观测,并使用作为通道消费者的MessageHandler"接口的实现。关于这些版本的更多详细信息,请参阅版本 6.3.0-M2"、版本 6.2.3" 和 版本 6.1.7" 的发行说明。

Spring Authorization Server" 1.3.0第三个里程碑版本"包含了依赖项升级和新功能,例如:实现OAuth 2.0的令牌交换";支持PKI Mutual-TLS客户端身份验证方法"。关于这个版本的更多详细信息,请参阅发行说明"。

类似地,Spring Authorization Server 1.2.3、1.1.6 和 1.0.6 已发布",其中包含了依赖项升级,并解决了 CVE-2024-22258 漏洞(Spring Authorization Server中的PKCE降级"),当 机密客户端 使用 PKCE 授予授权码时,应用程序容易受到 PKCE 降级攻击。如果使用 公共客户端,则应用程序不易受到攻击。关于这些版本的更多详细信息,请参阅版本 1.2.3" 和 版本 1.1.6" 的发行说明。

Spring Modulith" 1.2.0 的第三个里程碑版本"已发布,包含了错误修复、文档改进、依赖项升级以及这些新特性:@ApplicationModuleListener" 注解中新增了 condition 字段,用于处理仅当事件符合特定条件时监听器才处理事件的场景;支持开放式应用模块和包信息类型。更多关于该版本的详情请参阅发布说明"。

Spring for Apache Pulsar" 1.0.4 发布",包含了依赖项升级和一个问题修复,解决在配置了ProducerBuilderCustomizer" 接口实现时生产者缓存失效的问题。更多关于此版本的详情请参阅发布说明"。

Spring for Apache Kafka" 3.2.0-M2、3.1.3 和 3.0.15 已发布",包含了错误修复、文档改进、依赖项升级和一些显著的变更,如:解决了与 Java ConcurrentModificationException 相关的解析不一致的问题,调用 KafkaMessageListenerContainer" 和 ConcurrentMessageListenerContainer" 类中定义的 setStoppedNormally() 和 isInExpectedState() 方法;在ReactiveKafkaConsumerTemplate" 类中新增了缺失的 receiveBatch() 方法,用于返回 Project Reactor 的KafkaReceiver" 接口实现。更多关于这些版本的详情请参阅版本 3.2.0-M2"、版本 3.1.3" 和版本 3.0.15" 的发布说明。

Quarkus

Quarkus 3.8.3(第二个维护版本",跳过了版本 3.8.0)带来了一些显著变更,例如:解决了由于缺少表而导致Hibernate模式验证失败的问题,但实际上表是存在的;支持通过REST Client" 发送 Java InputStream" 实例;解决了 SmallRye Mutiny" 与 Quarkus OpenTelemetry 包之间的不兼容性。更多关于此版本的详情请参阅更新日志"。

Quarkus团队宣布",为了提高清晰度,他们为部分扩展"引入了一种新的命名策略,特别是那些包含“reactive”名称的扩展。他们发现,在扩展中使用“reactive”会导致混淆和误解,让开发人员误以为这涉及响应式编程。名称变化包括:

Quarkus

Quarkus RESTEasy Reactive 变成 Quarkus REST;Quarkus SmallRye Reactive Messaging 变成 Quarkus Messaging;Quarkus REST Client Reactive 变成 Quarkus REST Client。

Quarkus Hibernate Reactive 扩展将保留“reactive”,因为它本质上确实推动了响应式编程模型。

Micronaut

Micronaut基金会发布"了Micronaut Framework" 4.3.7,其中包括Micronaut Core 4.3.12"、错误修复、文档改进以及模块的更新:Micronaut Security"和Micronaut Maven Plugin"。更多关于该版本的详情请参阅发布说明"。

Eclipse 基金会

Eclipse Store" 1.3.1 发布,包含了错误修复和新特性,例如:一个新的CDI扩展";用于Eclipse Store的REST服务;对Spring Boot配置的改进。更多关于此版本的详情请参阅发布说明"。

Eclipse Vert.x" 4.5.6已发布",包含了一些显著变更,例如:重构了HttpUtils"类中定义的absoluteURI()方法,该方法自己检查请求URI的格式,而不是使用JDK的URI"解析器进行验证;解决了由于Origin"类中定义的isValid()方法拒绝chrome-extension方案而导致的IllegalStateException。更多关于此版本的详情请参阅发布说明"。

Apache 软件基金会

Apache Tomcat" 11.0.0-M18"和9.0.87"已发布,包含了一些显著变更,例如:确保在成功的FORM身份验证后恢复保存的POST请求正文时URI、查询字符串和协议不会损坏;对Writer"和OutputStream"类的错误处理保持一致,确保响应被回收后使用它们中的任何一个都会触发NullPointerException,前提是discardFacades使用了默认值true。对于里程碑版本,团队决定将最低Java版本降低到JDK 17。更多关于这些版本的详情请参阅版本11.0.0-M18"和版本9.0.87"的发布说明。

Maven" 4.0.0-alpha-13 发布,包含了错误修复、依赖项升级和新特性/改进,例如:更新了OperatingSystemProfileActivator"类,允许在指定操作系统版本时使用通配符;改进了Dependency Injection API"。更多关于此版本的详情请参阅发布说明"。

Hibernate

Hibernate ORM" 6.5.0 的第一个候选版本"包含了错误修复和改进,例如:改进了Java时间对象和时区偏移的使用,现在直接通过JDBC驱动程序JDBC 4.2"进行组装;为配置查询结果存储在查询缓存中的格式提供了新的布局;支持在Jakarta Persistence的@IdClass"注解中使用Java记录作为参数。此版本还提供了基于Hibernate注解处理器的新Jakarta Data"规范的技术预览。

Infinispan

Red Hat 发布"基于Infinispan" 15.0.0的Infinispan Operator 2.4.0",一个内存数据存储。新功能包括:配置健康检查就绪、活动和启动探针值的能力;简化了JGroups配置,使用由Infinispan服务器提供的“Kubernetes”技术栈;改进了跨站点复制,使用TLSv1.3和TLS客户端认证作为默认选项。

Infinispan 14.0.27.Final包含了一些显著变更,例如:将PostgreSQL驱动程序升级到42.4.5;避免因Infinispan Insights"出现错误而停止服务器;在停止缓存管理器时,对InsightsService"类的实例进行了null检查。更多关于此版本的详情请参阅发布说明"。

JobRunr

JobRunr团队宣布"与MindWave"合作,将碳感知作业调度功能整合到JobRunr平台中。计划在2024年第3季度正式发布,这标志着他们的使命"向前迈出了一大步,即“将前沿技术与环境管理相结合”。这个功能将在JobRunr和JobRunr Pro产品中提供。

JHipster

JHipster" 8.2.1 版本"包含了错误修复、依赖项升级和新特性,例如:更新了@AuthorizedFeignClient"注解,使用Spring Cloud OpenFeign"的dismiss404替代了已弃用的decode404属性;添加了Gradle的Cucumber"约定插件;生成使用Gradle约定插件的初始文件。更多关于该版本的详情请参阅发布说明"。

JHipster Lite" 1.6.0已发布",包含了错误修复、依赖项升级和新特性/增强,例如:使用Kafka官方不带ZooKeeper的Docker镜像;改进了对依赖项排除的处理;在使用Java String" 类定义的indexOf()和lastIndexOf()方法时,通过使用字符字面量替换字符串字面量来提升性能。更多关于该版本的详情请参阅发布说明"。

Ktor

JetBrains团队发布"Ktor"的2024年路线图,Ktor是一个用于创建微服务和Web应用程序的异步框架,旨在保持框架的轻量、灵活和透明。2024年将发布的新特性包括:OpenTelemetry插件;基于gRPC的服务;在Ktor 3.0.0中迁移到Kotlinx-io",一个提供基本I/O原语的Kotlin多平台库;支持托管事务;简化依赖注入。

jFUSE

Cryptomator" 发布 jFUSE" 的生产就绪版本,这是一个用Java开发FUSE"文件系统的实用程序。jFUSE利用了Java的外部函数和内存API",这是JDK 22中的一个新特性。FUSE(用户空间中的文件系统)是用户空间程序将文件系统导出到Linux内核的接口。

Gradle

Gradle" 8.7已发布":支持使用Java 22编译、测试和运行基于JVM的项目;为Groovy DSL脚本编译改进缓存;对延迟配置"、错误和警告消息、配置缓存"和Kotlin DSL的改进。关于该版本的更多细节可以在发行说明"中找到。

原文链接:

https://www.infoq.com/news/2024/03/java-news-roundup-mar18-2024"/