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/
评论