Java 近期新闻:Helidon 4.0、Eclipse Serializer 1.0 和 JDK 22 JEP
在经过评审之后,JEP 456(未命名变量与模式)从 Proposed to Target 进入到 Targeted(JDK 22)状态。这个 JEP 提议在经过前一轮预览之后确定这个特性:在 JDK 21 中发布的 JEP 443(未命名变量与模式 (预览))。这个特性将“通过增加未命名模式和未命名变量来增强语言,未命名模式可以匹配记录组件而无需声明组件的名称或类型,未命名变量是指被初始化但不被使用的变量。”这两者都以下划线字符表示,如r instanceof _(int x, int y)
和r instanceof _
。
JEP 460(Vector API (第七轮孵化))已经从 Candidate 进入到 Proposed to Target(JDK 22)状态。这个 JEP 属于 Project Panama,在前六轮孵化的反馈基础上进行了增强:在 JDK 21 GA 版本中发布的 JEP 448(Vector API (第六轮孵化));在 JDK 20 中发布的 JEP 438(Vector API (第五轮孵化));在 JDK 19 中发布的 JEP 426(Vector API (第四轮孵化);在 JDK 18 中发布的 JEP 417(Vector API (第三轮孵化));在 JDK 17 中发布的 JEP 414(Vector API (第二轮孵化) 和在 JDK 16 中作为 孵化模块 发布的 JEP 338(Vector API (孵化器))。自 JEP 448 以来最重要的变化包括对 JVM 编译器接口 (JVMCI) 的增强和支持 Vector API 值。评审工作于 2023 年 11 月 3 日结束。
JEP 462(结构化并发 (第二轮预览)),已经从 JEP Draft 8317302 进入到 Candidate 状态。这个 JEP 没有发生变化,建议在 JDK 22 中继续预览 API,以便获得更多来自上一轮预览的反馈:在 JDK 21 中发布的 JEP 453(结构化并发 (预览))。这个特性通过引入结构化并发来简化并发编程,将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观察性。
JEP 461(Stream Gatherers (预览))已经从 JEP Draft 8317955 进入到 Candidate 状态。这个 JEP 提议让 Stream API 支持自定义中间操作。“这将允许流式管道以现有内置中间操作不容易实现的方式来转换数据。”更多有关这个 JEP 的细节可以在 Oracle Java 平台组软件架构师 Viktor Klang 编写的 原始设计文档 中找到。
JDK 22 的 Build 21 已经可用,包含了来自 Build 20 的更新,包括对各种 问题 的修复。关于此版本的更多详细信息可以在版本说明中找到。
对于 JDK 22,开发者可以通过 Java Bug Database 报告错误。
Jakarta Data 1.0.0 的第一个里程碑版本提供了以下内容:一个用于执行实体基本操作的新接口 BasicRepository 接口;CrudRepository 接口添加新的方法insert()
和update()
,用于扩展针对实体的基本操作能力,包括插入和更新操作;用于 CRUD 操作的新注解,Insert、Update、Delete 和 Save。关于该版本的更多详细信息可以在版本说明中找到。
Oracle Labs 发布 GraalVM for JDK 21 Community 21.0.1,包含了根据 Oracle 关键补丁更新进行的修复,这些修复包括:一个新的 CEntryPointErrors 类,用于在无法确定堆栈边界时返回错误;在取消未使用的内存分配时发生进程崩溃;以及在 macOS 上使用ProcessBuilder
类时偶发崩溃。关于该版本的更多详细信息可以在版本说明中找到。
Spring Framework 6.1 的第二个发行候选版本带来了问题修复、文档改进、依赖项升级和新特性,如:支持在 @SpringJUnitConfig 和 @SpringJUnitWebConfig 注解中配置 ContextLoader,保持与 @ContextConfiguration 注解兼容;改进 ControlFlowPointcut 类的可扩展性,支持方法名称模式匹配;在 TestContext 接口中添加新注解 DisabledInAotMode,用于跳过 AOT 处理。关于该版本的更多详细信息可以在版本说明中找到。
Spring Modulith 1.1.0 的第一个发行候选版本和服务版本 1.0.2 带来了问题修复、依赖项升级和改进,如:不再支持 Google Suppliers 类的memoize()
方法,而是支持 Spring SingletonSupplier 类的of()
方法;在参考文档中添加了一个任务说明。1.1.0-RC1 的新特性包括:在org.springframework.modulith.events
包中新增 @ApplicationModuleListener 注解,对应的原始org.springframework.modulith
包中的注解被标记为已弃用;重构 @Modulith 注解,用于定义遵循 Modulith 结构约定的 Spring Boot 应用程序。关于这些版本的更多详细信息可以在 1.1.0-RC1 的版本说明和 1.0.2 的版本说明中找到。
Spring Vault 3.1.0 的第一个发行候选版本带来了文档改进、依赖项升级和新特性,如:VaultTokenRequest 类支持role_name
和entity_alias
参数;支持 Transit Secrets Engine API 类的prehashed
属性;为 VaultTransitOperations 接口和 VaultTransitTemplate 类添加了rewrap()
方法。关于该版本的更多详细信息可以在版本说明中找到。
在 Helidon 4.0.0-ALPHA1 发布一年多时间之后,Oracle 发布了 Helidon 4.0.0,带来了新的 Helidon Níma 服务器、对 MicroProfile 6.0 的支持,以及从异步 API 到阻塞 API 的转变。Helidon Níma 服务器是从头开始设计和构建的,充分利用了虚拟线程(这是 JDK 21 的特性之一)。关于该版本的更多详细信息可以在版本说明中找到,InfoQ 将会发布更详细的报道。
Helidon 的服务版本 3.2.3 和 2.6.4 都带来了显著的变化,如:HttpSignProvider 类中定义的tarketKeys
变量现在返回 Java 类 ConcurrentHashMap 的实例,而不是之前的HashMap
类;max-payload-size
属性现在被解析为Long
类型,与 Helidon 4.0 保持一致,并移除了在值大于Integer.MAX_VALUE
时抛出IllegalArgumentException
;为 NonTransactionalEntityManager 和 ExtendedEntityManager 类添加了无参数非私有构造函数。关于这些版本的更多详细信息可以在 3.2.3 和 2.6.4 的变更日志中找到。
Eclipse 基金会发布 Eclipse Serializer 1.0,这是一个专为处理具有复杂对象结构和高度安全性的 Java 对象而设计的项目。该项目就是以前的 MicroStream Serializer,它让开发者能够序列化任意的 Java 对象,但与传统的 Java 序列化不同,无需实现 Serializeable 接口,也不需要使用特定的接口、超类或注解。
Red Hat 发布 Quarkus 3.5.0,带来了问题修复、文档和性能改进,以及一些重要的变化,如:支持 JDK 21;改进了 OIDC 令牌传播过滤器,可以自定义交换状态并提供客户端名称;允许并行执行阻塞健康检查。关于该版本的更多详细信息可以在变更日志中找到。
BellSoft 发布了 JDK 11.0.10、17.0.9 和 21.0.1 的 Liberica Native Image Kit 版本 22.3.4、23.0.2 和 23.1.1,作为上述关键补丁更新发布周期的一部分,解决了以下这些问题:CVE-2023-22025,允许未经身份验证的攻击者通过多种协议访问网络攻击 Oracle Java SE、Oracle GraalVM 企业版和 Oracle GraalVM for JDK,从而未经授权地更新、插入或删除可访问数据;CVE-2023-22067,允许未经身份验证的攻击者通过 CORBA 访问网络攻击 Oracle Java SE,从而未经授权地更新、插入或删除某些可访问的 Oracle Java SE 数据;CVE-2023-22081,允许未经身份验证的攻击者通过 HTTPS 访问网络攻击 Oracle Java SE 和 Oracle GraalVM for JDK,从而未经授权地导致 Oracle Java SE 和 Oracle GraalVM for JDK 部分拒绝服务。
Hibernate ORM 6.4.0 的第一个候选版本提供了以下功能:新的@SoftDelete
注解,用于支持软删除,可以将值标记为已删除 / 未删除,而不是活动 / 非活动;实现了在 HQL 和 Criteria 查询中处理数组的其余功能;支持在 JDK Flight Recorder 中编写特定于 Hibernate 的事件。
Hibernate Search 7.0.0 的第一个候选版本包含了以下功能:问题修复;与 Hibernate ORM基于鉴别器的多租户、Elasticsearch 8.10 和 OpenSearch 2.10/2.11 的兼容性;依赖项升级到 Hibernate ORM 6.3.1.Final 和 Apache Lucene 9.8;因为迁移到 Jakarta Batch 规范,为保持一致,将一些与 JSR-352(Java 平台的批处理应用程序)相关的 Maven 构件进行了重命名。
Apache Maven 4.0.0 发布第八个 alpha 版本,带来了一些重要的变化,如:不再支持 Plexus XML,而是改为使用 StAX/Woodstox 进行 XML 解析;引入了用于未来 Maven 版本的 4.1.0 POM 模型;在构建 POM 中附加了一个build
分类器,用于简化构建 / 使用者实现。有关该版本的更多详细信息可以在 版本说明 中找到。
Apache Camel 4.0.2 发布,带来了问题修复、依赖项升级和新特性 / 改进,如:可以使用旧的 Micrometer 计量名称或遵循新的 Micrometer 命名约定;Dev 控制台支持子文件夹上传;对 EndpointHelper 类中定义的matchEndpoint()
方法进行了优化,避免使用端点正则表达式。有关该版本的更多详细信息可以在版本说明中找到。
为了保持与 Quarkus 的一致性,Camel Quarkus 发布了版本 3.5.0,解决了一些问题,如:由于未初始化时区信息而导致的 CamelOracleJdbcTest 执行失败;在配置了 SSL 的情况下 Kafka 容器启动失败;与 FastCamelContext 类相关的UnsupportedOperationException
。有关该版本的更多详细信息可以在版本说明中找到。
JHipster Lite 0.46.0 已经发布,带来了文档方面的改进、依赖项升级和增强特性,如:使用更通用的脚本 shebang 行,修复与 NixOS 的兼容性问题;在 Landscape MiniMap 中添加了交互功能,如悬停和选择。有关该版本的更多详细信息可以在版本说明中找到。
在摩洛哥 Devoxx 大会上,Azul 首席工程师 Gerrit Grunwald 介绍了一款新的 macOS 桌面小部件 JDKMonitor,用于显示距离下一个 OpenJDK 发布 / 更新的天数。这个小部件还可以显示最近四个长期支持版本的最新版本的特性,可以将它们作为 JDK 或 JRE 下载,还可以选择是否捆绑 JavaFX。这个小部件需要 macOS Sonoma 才能运行,并可以从 App Store 下载。
原文链接:
https://www.infoq.com/news/2023/10/java-news-roundup-oct23-2023/
声明:本文由 InfoQ 翻译,未经许可禁止转载。
点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!
微信扫码关注该文公众号作者