OpenJDK
Oracle 的编程语言设计师Daniel Smith提交了值对象存储增强(预览)(Value Object Storage Enhancements (Preview))。在 Valhalla 项目下,该 JEP 在字段和数组组件中引入了值对象的空限制(null-restricted)存储。 “这些变量被初始化为类的初始实例,并拒绝写入空值。它们可以通过紧凑、扁平化的对象编码进行优化”。
JDK 21
Oracle发布了Java 编程语言和虚拟机的21版本,其中包括 15 个 JEP 的最终特性集。关于该版本的更多信息,请参阅 InfoQ 的新闻报道。
JDK 22
JDK 22 早期访问版本的Build 16发布,该版本是对 Build 15 的更新,包含对各种问题的修复。有关该版本的更多详情,请参阅发布说明。
Oracle 的 Java 平台组的首席架构师Mark Reinhold对提议的 JDK 22 发布计划没有异议,并宣布了如下的最终发布计划:
Rampdown 第一阶段(fork 主线):2023 年 12 月 7 日
Rampdown 第二阶段:2024 年 1 月 18 日
初始候选版本:2024 年 2 月 8 日
最终候选版本:2024 年 2 月 22
正式发布:2024 年 3 月 19 日
对于JDK 22,鼓励开发人员通过Java缺陷数据库报告缺陷。
GraalVM
在发布JDK 21的同时,Oracle Labs 还发布了面向 JDK 21 的 GraalVM。新特性包括:完全支持 JDK 21;通过 Profile-Guided Optimizations 增强了性能;采用了新的应用程序级别的策略加快了编译时间;通过新的 CLI 选项--parallelism
和--color
改善了开发人员的体验,这两个选项分别用来在构建时指定线程数和输出颜色。关于该版本的更多详情,请参阅发布说明。InfoQ 后续将会发布更详细的新闻报道。
在通往 1.0 版本的过程中,Oracle Labs 发布了Native Build Tools的0.9.27版本,这是一个由插件组成的 GraalVM 项目,用于实现与 GraalVM Native Image 的互操作性。这个最新版本为面向 JDK 21 的 GraalVM 提供了错误修复和功能增强。有关此版本的更多详情,请参阅变更日志。
Amazon Corretto
亚马逊云科技发布了 Amazon Corretto 21,这是他们的 OpenJDK 21 的下游发行版,可以在 Linux、Windows 和 macOS 上使用。开发人员可以在该站点下载这一最新版本。
BellSoft Liberica JDK
同样,BellSoft 也发布了Liberica JDK 21,这是他们的 OpenJDK 21 的下游发行版。开发人员可以在该站点下载这一最新版本。
Spring Framework
Spring Boot 3.2.0 的第三个里程碑版本提供了缺陷修复、依赖关系升级和新特性,比如,在 Spring for Apache Pulsar 的配置中添加了ConnectionDetails
接口和@ServiceConnection
注解;提供RestClientBuilderConfigurer
类的实例,以便于将 Spring Boot 的默认配置应用于自定义的RestClient.Builder
接口;移除对 WebFlux 插装(instrumentation)的已废弃 ServerHttpObservationFilter
类的使用。关于该版本的更多详情,请参阅发布说明。
同样,Spring Boot 的3.1.4、3.0.11和2.7.16版本也对文档进行了更新和依赖性升级,为JavaVersion
枚举类增加了TWENTY_ONE
枚举常量,并修复了一些值得注意的缺陷,例如,在使用metadata-url
查询时,Saml2RelyingPartyAutoConfiguration
类会忽略在sign-request
属性中设置的值;DomainSocket
类中的文件描述符和套接字泄露;在使用WelcomePageHandlerMapping
类的时候,无效的Accept
请求 HTTP 头信息会产生HTTP 500
Internal Server Error。关于这些版本的更多详情,请参阅3.1.4版本、3.0.11版本和2.7.16版本的发布说明。
Spring Integration 6.2.0 的第三个里程碑版本包含了依赖性升级和值得关注的变更,例如,重构KafkaMessageDrivenChannelAdapter
类,便于将来的维护,以避免代码重复;为LockRegistry
接口添加新的重载executeLocked()
方法,以遵循最佳实践以及JdbcTemplate
、RestTemplate
和JmsTemplate
类中人们所熟知的模式;支持DefaultSftpSessionFactory
类的自定义实例。有关该版本的更多详情,请参阅发布说明。
Spring Batch 5.1.0 的第三个里程碑版本提供了缺陷修复、文档改进和新特性,比如,使用@EnableBatchProcessing
注解和DefaultBatchConfiguration
自动配置JobRegistryBeanPostProcessor
类,以改进JobRegistry
接口的 job 注册;通过@EnableBatchProcessing
注解中的新参数指定数据库类型;在JdbcJobInstanceDao
类中提供自定义JobKeyGenerator
接口。有关该版本的更多详情,请参阅发布说明。
Spring Cloud Dataflow 2.11.0 的发布提供了缺陷修复、依赖性升级并支持基于 Spring Boot 3.x 的流式应用、基于 Spring Cloud Task 3.x 的任务应用以及基于 Spring Batch 5.x 的批处理应用。此外,还升级了 Kubernetes batch/v1
cron job,这样开发人员就可以使用 Kubernetes 1.25.0 及以上版本。关于该版本的更多详情,请参阅发布说明。
Spring Security的 6.2.0-M1、6.1.4、6.0.7 和 5.8.7 版本发布,修复了 CVE-2023-34042,对spring-security.xsd错误的授权(Incorrect Permission Assignment for spring-security.xsd),在该漏洞中,spring-security-config
JAR 压缩包中的spring-security.xsd
文件是随意可写的,这可能会导致漏洞。建议开发人员升级到这些版本。有关这些版本的更多信息,请参阅6.2.0-M1版本、6.1.4版本、6.0.7版本和5.8.7版本的发布说明。
Spring for GraphQL的 1.2.3、1.1.6 和 1.0.5 版本发布,提供了缺陷修复、文档改进、依赖性升级和新特性,包括使用ConnectionTypeDefinitionConfigurer
类访问访问对象类型扩展(以补充对象类型);当 Java Principal
接口的实例不存在且未声明为Optional
时,会触发 Spring Security AuthenticationCredentialsNotFoundException
,以要求进行身份验证;增强 GraphQL 请求体检查以防止出现HTTP 500
Internal Server Error。这些版本分别可以与 Spring Boot 3.1.4、3.0.11 和 2.7.16 版本协同使用。关于这些版本的更多详情,请参阅1.2.3版本、1.1.6版本和1.0.5版本的发布说明。
Spring Authorization Server 1.2.0 的第一个里程碑版本包含了缺陷修复、依赖性升级和新特性,例如,注入自定义元数据以改善客户端注册功能;为 OIDC 提供者配置响应新提供了代码质询方法(code challenge method);使用CodeVerifierAuthenticator
类改善了日志功能。关于该版本的更多详情,请参阅发布说明。
Spring for Apache Pulsar 1.0.0 的第二个里程碑版本包含了如下值得关注的变更:能够为PulsarAdministration
、DefaultPulsarConsumerFactory
、DefaultPulsarReaderFactory
和DefaultReactivePulsarSenderFactory
类添加多个 customizer;将缓存提供者模块的源文件从默认的spring.pulsar.core
包移至具有特定模块名称的包中,以避免与 Java 模块系统发生混淆。关于该版本的更多详情,请参阅发布说明。
Spring Modulith的 1.1.0-M1 和 1.0.1 版本发布,提供了缺陷修复、文档改善、依赖性升级和新特性,例如,支持通过注册@ApplicationEventListener
将领域事件外部化到消息中间件中(Kafka、AMQP、JMS 等);新的 Neo4j 事件发布仓库;新的CompletedEventPublications
、IncompleteEventPublications
和EventPublicationRepository
接口,用于改善对已完成和未完成事件发布的处理。关于这些版本的更多详情,请参阅1.1.0-M1版本和1.0.1版本的发布说明。
Quarkus
Quarkus 3.4.1 发布了对 Redis 7.2 的支持,以及对Flyway扩展支持的更改,其中包括:通过将quarkus.flyway.enabled
属性设置为false
,可以禁用 Flyway 扩展的自动配置;通过将quarkus.flyway.active
和quarkus.flyway.<datasourceName>.active
属性分别设置为false
,可以将特定数据源和某个名称的数据源设置为非活跃状态。关于该版本的更多详情,请参阅更新日志。
Open Liberty
IBM发布了Open Liberty 23.0.0.9 版本,该版本提供了对以下内容的支持:需要 Jakarta EE 10 的 Spring Boot 3.0、Spring Security 6.x 以及名为springBoot3
的新服务器模板;支持使用 OpenID Connect 令牌端点的私钥 JWT 认证,以及将 LTPA 或 JWT cookie 路径设置为应用程序上下文根的能力,以便于为不同的应用程序提供不同的LTPA
和JWT
令牌。
Micronaut
Micronaut 基金会发布了Micronaut的 4.1.2 版本,其中包括Micronaut Core 4.1.6以及对Micronaut Data模块的更新。关于该版本更多的详情,请参阅发布说明。
Hibernate
Hibernate ORM的 6.3.1.Final 和 6.2.9.Final 版本发布,其中包含已知缺陷的修正以及查询方法和查找器(finder)方法的改善。关于这些版本的更多详情,请参阅6.3.1.Final版本和6.2.9.Final版本的发布说明。
Eclipse 基金会
在 OmniFishEE推出后不久,Eclipse Epicyro 3.0 作为Jakarta Authentication 3.0规范的独立实现正式发布。这个新项目会为认证机制定义一个通用的底层 SPI,即与调用者和容器环境交互以获取调用者凭证的控制器,并将经过认证的身份标识(比如名称和组)传递给容器。
Apache 软件基金会
实时分布式 OLAP 数据存储Apache Pinot 1.0.0 版本发布,提供了缺陷修复、功能增强和新特性,例如,在OVER()
子句中使用ORDER BY
子句实现 Window Functions查询运行时的初步支持;如果使用LIMIT
子句,SortOperator
类的执行将提前终止;对基于分区的叶子阶段处理的支持。关于该版本的更多详情,请参阅发布说明。InfoQ 将继续跟进,以提供更详细的新闻报道。
OpenXava
OpenXava 7.1.6发布了一些值得注意的功能修复,比如,改进了@ElementCollection
和@DescriptionsList
注解之间的交互;如果列表中包含baseCondition
参数和IFilter
接口的实例,则使用@Tab
注解对列表进行过滤或排序后的分组将会失败;如果应用程序位于代理背后,则IForwardAction
接口的实例将无效。关于该版本的更多详情,请参阅发布说明。
Gradle
Gradle 8.4 的第一个发布候选版本提供了如下功能:鉴于 Kotlin 尚不支持 JDK 21,因此仅在编译、测试和运行 Gradle 项目时提供了对 JDK 21 的初步支持;改进了在 Windows 操作系统上的编译;简化了使用ConfigurationContainer
接口创建以角色为中心的Configuration
接口实例的方法;改进了对Kotlin DSL的支持。关于该版本的更多详情,请参阅发布说明。
原文链接:
Java News Roundup: JDK 21, GraalVM for JDK 21, Apache Pinot 1.0, Eclipse Epicyro 3.0
评论