OpenJDK
在审查结束后,JEP 473,流聚合器(Stream Gatherers,第二次预览),已经从 JDK 23 的 Proposed to Target 状态提升为 Targeted 状态。该 JEP 是对上一次预览,即 JEP 461,流聚合器(Stream Gatherers,预览版),在 JDK 22 中交付,进行的第二次预览。这将允许有更多的时间进行反馈,并使用该功能获得更多的体验,而不会对 JEP 461 进行面向用户的更改。该特性旨在增强 Stream API,以支持自定义的中间操作,这些操作将“允许流管道以现有内置中间操作无法轻松实现的方式转换数据”。有关该 JEP 的更多详细信息,请参阅原始设计文档和InfoQ新闻报道。
同样,JEP 469,向量API(Vector API,第八轮孵化),也已从 JDK 23 的 Proposed to Target 状态提升为 Targeted 状态。该 JEP 整合了对前七轮孵化反馈的增强功能:JEP 460,向量API(第七轮孵化),在 JDK 22 中交付;JEP 448,向量API(第六轮孵化),在 JDK 21 中交付;JEP 438,向量API(第五轮孵化),在 JDK 20 中交付;JEP 426,向量API(第四轮孵化),在 JDK 19 中交付;JEP 417,向量API(第三轮孵化),在 JDK 18 中交付;JEP 414,向量API(第二轮孵化),在 JDK 17 中交付;以及 JEP 338,向量API(孵化版本),作为 JDK 16 中的孵化器模块交付。最初计划通过重复使用原始 Incubator 状态进行重新孵化,但最终决定继续枚举。向量 API 将继续孵化,直到Valhalla项目的必要功能可作为预览功能提供。届时,向量 API 团队将对向量 API 及其实现进行调整以使用它们,并将向量 API 从 Incubator 推进到 Preview。
JEP 476,模块导入声明(Module Import Declarations,预览版),已从其 JEP Draft 8315129提升为 Candidate 状态。该预览功能旨在增强 Java 编程语言,使其能够简洁地导入模块暴露出来的所有包,其目的是简化模块库的重用,而不需要导入模块自身内的代码。
微软高级软件工程经理George Adams和微软首席项目(PM)经理 Bruno Borges已经提交了 JEP Draft 8330623,删除Windows 32位x86移植,该草案建议对在 JDK 21 中提供的 JEP 449,弃用Windows 32位x86移植以进行删除,中所描述的 Windows 32 位 x86 移植在被弃用后进行完全删除。其目标是:删除代码库中仅适用于 Windows 32 位的所有代码路径;停止针对 Windows 32 位平台的所有测试和开发工作;并简化 OpenJDK 的构建和测试基础设施,与当前的计算标准保持一致。
JDK 23
JDK 23早期访问构建版本的Build 19于上周发布,该版本是对 Build 18 的更新,其中包括对各种问题的修复。有关该版本的更多详细信息,请参阅发布说明。
GlassFish
GlassFish 8.0.0-M5 是第五个里程碑版本,它提供了依赖项升级和一些显著的更改,例如:改进了 JmacHttpsTest
类的证书身份验证;以及在ConnectionPool类中添加了锁和 notifyWaitingThreads()
方法,以改进最大池化的大小逻辑。有关该版本的更多详细信息,请参阅发布说明。
GraalVM
Oracle 实验室发布的GraalVM for JDK 22社区版 22.0.1 基于 2024 年 4 月的 Oracle关键补丁更新(Critical Patch Update)进行了修复。这些解决方案包括:在调试请求本地变量表时,Java调试线协议(Java Debug Wire Protocol,JDWP)中的 NullPointerException
;以及来自 IsolateAwareTruffleCompiler
类中定义的 tearDownIsolateOnShutdown()
方法的死锁。有关该版本的更多详细信息,请参阅发布说明。
Jakarta EE
Eclipse 基金会的 Jakarta EE 开发人员倡导者Ivar Grimstad在其每周一次的 Hashtag Jakarta EE博客中宣布,Java 社区已经可以使用 Jakarta EE 11 的第二个里程碑版本。
有四个规范的审查已经完成,两个正在进行中,六个已经准备好进行各自的审查。在 2024 年 7 月 GA 发布之前,总共计划发布四个里程碑版本。每个配置文件的详细信息可以查阅Jakarta EE Platform 11-M2、Jakarta EE Web Profile 11-M2和Jakarta EE Core 11-M2。
IBM 高级杰出工程师、Hibernate 的创建者Gavin King撰写了一个关于Jakarta Data的系列文章(第一部分和第二部分),这是 Jakarta EE 11 中的一个新规范。
BellSoft
在 Oracle 2024 年 4 月发布关键补丁更新(CPU)同时,BellSoft 发布了Liberica JDK的 21.0.2.0.1、17.0.10.0.1、11.0.22.0.1、8u411 版本的 CPU 补丁,这些版本是其 OpenJDK 的下游发行版,以解决此CVE列表。此外,还发布了补丁集更新(PSU)的 22.0.1、21.0.3、17.0.11、11.0.23 和 8u412 版本,其中包含 CPU 和非关键修复程序。
Spring 框架
Spring Boot 3.3.0 的第一个候选版本提供了缺陷修复、文档改进、依赖项升级和新特性,例如:使用 Spring Framework ManagedClassNameFilter
接口的自定义实现来配置 JpaBaseConfiguration
类;以及通过新的自动配置属性改进了对 Spring for Apache Pulsar 事务的支持。有关该版本的更多详细信息,请参阅发布说明。
同样,Spring Boot 3.2.5和3.1.11也发布了,在文档、依赖项升级和值得注意的缺陷修复方面进行了改进,例如: @ServletComponentScan
注解不会在模拟 Web 环境中注册 servlet 组件;并且 BindValidationFailureAnalyzer
类使用了错误的目标。有关这些版本的更多详细信息,请参阅版本3.2.5和版本3.1.11的发布说明。
Spring Security 6.3.0 的第一个候选版本提供了缺陷修复、依赖项升级和新特性,例如:支持证书绑定的 JWT 访问令牌验证;并使用 AuthenticationWebFilter
类改进了日志记录。有关该版本的更多详细信息,请参阅发布说明。
同样,Spring Security 的 6.2.4、6.1.9 和 5.8.12 版本也已发布,包括依赖项升级和一些值得注意的缺陷修复,例如:与导入 MethodInvocationResult
类的AuthorizationObservationConvention
类纠缠的包;并且 @Transactional
注解的使用打破了对原生图像的提前编译。有关这些版本的更多详细信息,请参阅版本6.2.4、版本6.1.9和版本5.8.12的发布说明。
Spring for GraphQL 1.3.0 的第一个候选版本提供了一个缺陷修复、依赖项升级和新特性,例如:支持在模式接口类型上使用 @SchemaMapping
和 @BatchMapping
注解;以及在 GraphQlWebSocketHandler
类中支持保持活动心跳(keep-alive ping)。有关该版本的更多详细信息,请参阅发布说明。
Spring Authorization Server的 1.3.0-RC1、1.2.4 和 1.1.7 版本已经发布,其中包括了对 Spring Framework 和 Spring Security 的依赖项升级。版本 1.3.0-RC1 的新特性包括:添加了双向 TLS(Mutual-TLS)客户端证书绑定的访问令牌;并在何时显示同意页面方面提供更大的灵活性。有关该版本的更多详细信息,请参阅版本1.3.0-RC1、版本1.2.4和版本1.1.7的发布说明。
Spring Modulith 1.2.0 的第一个候选版本提供了依赖项升级和改进,例如:避免在 Spring Boot 重新打包的 JAR 中包含启动器;以及在文档中添加了一个关于如何从应用程序模块检测中排除包的新章节。有关该版本的更多详细信息,请参阅发布说明。
Spring for Apache Pulsar 1.1.0 的第一个候选版本提供了依赖项升级、文档改进和以下改进:对事务的支持;以及将 PulserTestContainerSupport
接口中定义的 stopContainer2()
方法重命名为 stopContainer()
。有关该版本的更多详细信息,请参阅发布说明。
同样,Spring for Apache Pulsar 1.0.5 版本也已经发布,以提供依赖项升级。有关该版本的更多详细信息,请参阅发布说明。
Spring for Apache Kafka的 3.2.0-RC1、3.1.4 和 3.0.16 版本已经发布,其中包括缺陷修复和依赖项升级。版本 3.2.0-RC1 的新特性包括:支持 TopicPartitionOffset.SeekPosition
枚举类上的 @PartitionOffset
注解;在 KafkaListenerEndpointRegistry
类中添加了一个新的 getListenerContainersMatchingId()
方法,用于在特定时间启动和停止监听器。有关这些版本的更多详细信息,请参阅版本3.2.0-RC1、版本3.1.4和版本3.0.16的发布说明。
Quarkus
Quarkus 3.9.4 是第三个维护版本(跳过了版本 3.9.0),提供了依赖项升级和一些值得注意的缺陷修复,例如:用 @Startup
注解注释生产者方法时会在编译过程中发出警告,同时仍能按预期创建 bean;并且与热重新加载( quarkus:dev
)的不起作用以及 Flatten Maven插件的使用相冲突。有关该版本的更多详细信息,请参阅变更日志。
同样,Quarkus 3.8.4 版本的发布也提供了依赖项升级和一些值得注意的缺陷修复,例如:如果 SmallRye Multi
接口的实现为空,则 RestMulti
类的实例不发送头信息;以及移除了过时的MetricBuildItem SPI。有关该版本的更多详细信息,请参阅变更日志。
最后,Quarkus 3.2.12.Final发布了一些小错误修复,并改进了文档。有关该版本的更多详细信息,请参阅发布说明。
Micronaut
Micronaut 基金会发布了Micronaut Framework 4.4.0 版本,其中包括:对Micronaut Core的改进;与OpenSearch集成的新模块Micronaut OpenSearch;依赖项升级到Kotlin 1.9.23;并更新了许多 Micronaut 模块。有关该版本的更多详细信息,请参阅发布说明。
Hibernate
Hibernate ORM 7.0.0 的第一个alpha版本提供了:向Jakarta Persistence 3.2规范的迁移,最新版本将在 Jakarta EE 11 中交付;JDK 17 的基线;一个新的 XSD
文件,该文件表示编织在 Hibernate 特定映射特性中的 Jakarta Persistence orm.XSD
文件的扩展;以及从Hibernate Commons Annotations(HCANN)迁移到新的Hibernate Models项目,用于应用程序域模型的低级别处理。
Hazelcast
Hazelcast Platform 5.4 的发布提供了以下新特性:分层存储(Tiered Storage),这是一种确保频繁访问(高命中率)数据保持在快速内存中,而不太频繁访问(低命中率)的数据存储在更便宜的磁盘上的技术;在 Hazelcast CP子系统中添加了新的CPMap数据结构,用于改进数据一致性;以及用于客户端和集群成员的Thread-Per-Core架构,以提高系统性能。有关该版本的更多详细信息,请参阅最新动态页面。请注意,这些新特性适用于 Hazelcast 的企业版。
Infinispan
Infinispan的 15.0.2 和 14.0.28 版本进行了显著的更改,例如:在 ThrowableExternalizer
类中没有正确封送时抛出 OutdatedTopologyException
; QueryEngine
类的实例为执行的每个查询记录 DEBUG
消息;以及从 Java ElementScanner8
到 ElementScanner14
的迁移,因为前者无法在ComponentAnnotationProcessor
类中进行编译。有关这些版本的更多详细信息,请参阅版本15.0.2和版本14.0.28的发布说明。
阿帕奇软件基金会
Apache TomEE 9.1.3 的发布提供了依赖项升级,修复了TomEE Embedded Maven插件不注册 Microprofile 文件端点的缺陷,以及引入了占位符替换的新特性,使Simple MDB激活属性更加可定制。有关该版本的更多详细信息,请参阅发布说明。
Apache Tomcat的11.0.0-M19和9.0.88版本进行了显著的更改,例如:增强了 cookie 头的生成;以及在重新加载 TLS 配置和文件时的回归解决方案。版本 11.0.0-M19 还在即将发布的 akarta EE 11 中完成了对规范的更新。有关这些版本的更多详细信息,请参阅版本11.0.0-M19和版本9.0.88的发布说明。
Apache Struts 6.4.0 的发布提供了缺陷修复、依赖项升级和一些显著的改进,例如:对SecurityMemberAccess
类进行了可扩展更改,并提供了原型 bean,允许应用程序轻松扩展其功能并改进配置加载;并用推荐的 getInjectionTargetFactory()
方法替换了 Jakarta CDI BeanManager
接口中定义的已弃用的 createInjectionTarget()
方法。有关该版本的更多详细信息,请参阅发布说明。
OpenXava
OpenXava 7.3 的发布提供了缺陷修复、文档改进、依赖项升级和一些显著的新特性,如:遵守开放式Web应用程序安全项目(Open Web Application Security Project,OWASP),以提高 OpenXava 项目的安全性;增强的用户体验和用户界面;以及对 Calendar
类的改进。有关该版本的更多详细信息,请参阅发布说明。
LangChain4j
LangChain for Java (LangChain4j)0.30.0 版本提供了缺陷修复和一些显著的更改,例如:添加了 getter 方法,并将 AnthropicCreateMessageRequest
类中的属性范围从 protected
更改为 public
;并支持在方法参数中使用带 @UserMessage annotation
注解的模板变量。有关该版本的更多详细信息,请参阅发布说明。
JHipster Lite
JHipster Lite 1.7.0 版本的发布提供了缺陷修复、依赖项升级和新特性/增强,例如:为 Gradle 和 Maven 创建不可知的 Java 构建属性;并在GradleCommandHandler类中提供了AddJavaBuildProfile
命令的实现。有关该版本的更多详细信息,请参阅发布说明。
JDKUpdater
JDKUpdater发布了 14.0.39+67 和 14.0.39+65 版本,这是一个新的实用程序,为开发人员提供了跟踪与 OpenJDK 和 GraalVM 构建相关更新的能力。这些版本由 Azul 的首席工程师Gerrit Grunwald于 3 月中旬推出,包括:支持由Jabba维护的 OpenJDK 构建版本;在“设置”视图的开关中添加了维护图标;并解决了与剩余天数显示相关的小问题。有关该版本的更多详细信息,请参阅发布说明。
JDK Operator SDK
Java Operator SDK 4.8.3 的发布对依赖项进行了升级,并进行了一些显著的更改,例如:允许在 EventProcessor
类的实例启动时接收事件的解决方案;以及对 Controller
类中定义的 changeNamespaces()
方法进行更改以启动事件处理器,但仍然需要处理命名空间的更改。有关该版本的更多详细信息,请参阅发布说明。
Jox
Jox 0.2.0 已经发布,它是一个虚拟线程库,在 Java 中实现了一个高效的 Channel
数据结构,旨在与虚拟线程一起使用,其特点是将以 …safe()
结尾的方法(如 sendSafe()
)重命名为 …orClosed()
(如 sendOrClosed()
),相应的灵感来自于这篇与 Kotlin 协程相关的论文。有关该版本的更多详细信息,请参阅发布说明。
原文链接:
https://www.infoq.com/news/2024/04/java-news-roundup-apr15-2024/
评论