OpenJDK
在结束了评审之后,JEP 447(super()前置语句(预览)),已经从 Proposed to Target 进入到 Targeted( JDK 22)状态。这个 JEP 来自Project Amber,提议允许在构造函数的 this()
或 super()
之前出现不引用正在创建的实例的语句并保留构造函数现有的安全性和初始化保证。Oracle 技术顾问成员Gavin Bierman为 Java 社区提供了这个 JEP 的初始规范,供社区评审并提供反馈意见。
JEP 461(Stream Gatherers(预览))已经从 Candidate 计入到 Proposed to Target( JDK 22)阶段。这个 JEP 提议增强 Stream API,让其支持自定义中间操作。“流式管道操作将可以通过现有内置中间操作不易实现的方式转换数据。”更多关于该 JEP 的细节可在 Oracle Java 平台组软件架构师Viktor Klang撰写的原始设计文档中找到。评审于 2023 年 11 月 29 日结束。
JEP 462(结构化并发(第二次预览))已经从 Candidate 计入到 Proposed to Target( JDK 22)阶段。这个 JEP 建议在 JDK 22 中重新预览该 API,以获取自前一轮预览以来更多的反馈:JEP 453(结构化并发(预览),已在 JDK 21 中发布)。这个功能通过引入结构化并发来简化并发编程,“将不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观察性。”评审于 2023 年 12 月 1 日结束。
JEP 458(启动多文件源码程序)已经从 Candidate 计入到 Proposed to Target( JDK 22)阶段。这个 JEP 提议增强 Java Launcher,可以执行作为一个或多个 Java 源代码文件提供的应用程序,让小型应用可以在延迟完整项目设置的情况下逐渐过渡到大型应用。评审于 2023 年 12 月 1 日结束。
JDK 22
JDK 22 早期访问构建版本的Build 25已发布,其中包含来自 Build 24 的更新,修复了各种问题。有关此版本的更多详细信息,请参阅版本说明。
对于JDK 22,开发者可以通过Java Bug Database报告 Bug。
Spring Framework
Spring Boot 3.2.0发布,包含了 bug 修复、文档改进、依赖项升级和新特性,例如:支持Oracle Free,它是Oracle XE的替代品,包含了 Testcontainers 和 Docker Compose;修改了参数名发现的方式,通过解析字节码替代推断参数名;支持 Jetty 12;支持 Spring Framework 6.1 中引入的新RestClient接口。有关此版本的更多详细信息,请查看版本说明。
类似地,Spring Boot 3.1.6、3.0.13和2.7.18包含了 bug 修复、文档改进、依赖项升级,并新增了一个特性,即将默认的 Cloud Native Buildpacks(CNB)升级为Paketo Jammy,因为 Paketo Bionic Builder 被声明为不安全的。有关这些版本的更多详细信息,请查看3.1.6、3.0.13和2.7.18的版本说明。
Spring Framework 6.1.1发布,修复了 bug、改进了文档,并引入了新特性,例如:在StreamUtils类的copy(String)
方法中跳过不必要的缓冲区分配;解决了JDK 17中isReadable()
方法并发泄漏大量非堆内存的问题。有关此版本的更多详细信息,请查看版本说明。
Spring Security 6.2.0发布,包含了 bug 修复、依赖项升级和新特性:在AuthorizationManagerBeforeReactiveMethodInterceptor和AuthorizationManagerAfterReactiveMethodInterceptor类中支持 Kotlin 协程;简化了配置 OAuth2 客户端组件模型。有关此版本的更多详细信息,请查看版本说明和新特性页面。
Spring Authorization Server 1.2.0发布,包含了文档改进、依赖项升级和新特性,例如:允许在 Spring Security 的AuthorizationGrantType类中为AUTHORIZATION_CODE
和REFRESH_TOKEN
授权类型配置可配置的刷新令牌策略;引入了 Ahead-of-Time(AOT)优化或AOT提示,用于解决使用 GraalVM 生成原始镜像失败的问题。有关此版本的更多详细信息,请查看版本说明。
Spring for GraphQL 1.2.4发布,包含了 bug 修复、文档改进、依赖项升级和新特性,例如:改进了在ResponseMapGraphQlResponse类中解析 GraphQL SourceLocation类的line
和column
属性;在ArgumentValueValueExtractor类中使用isOmitted()
方法而不是ArgumentValue类的isPresent()
方法来实现null
参数验证。有关此版本的更多详细信息,请查看版本说明。
Spring Integration 6.2.0发布,包含了一些重要的变更,如:修复HazelcastMetadataStoreTests类中的竞态条件;FtpSession类中更健壮的readRaw()
和finalizeRaw()
方法,消除由于550 FTP Response错误引起的异常;由于 MacOS 上的未知延迟会导致测试失败,增加 FTP RotatingServersTests类的超时时间。有关此版本的更多详细信息,请查看版本说明和新特性页面。
Spring Session 3.2.0发布,包含了许多依赖项升级和一个新特性,即对于自定义实现CookieSerializer接口中未设置rememberMeRequestAttribute
属性的情况,改进了文档和日志记录。有关此版本的更多详细信息,请查看版本说明和新特性页面。
Spring Vault 3.1发布,改进了文档、升级了依赖项并新增了特性,例如:在VaultTokenRequest类支持 HashiCorp Vault role_name
和entity_alias
参数;新增了AuthenticationEventMulticaster接口,用于管理多个AuthenticationEvent和AuthenticationErrorEvent对象并向其发布事件。有关此版本的更多详细信息,请查看版本说明。
Spring for Apache Pulsar 1.0.0发布,带来了显著的变更,例如:PulsarAdministration类接受多个PulsarAdminBuilderCustomizer接口实例;避免 Spring Boot 依赖 Spring for Apache Pulsar 时的“鸡和蛋”问题。有关此版本的更多详细信息,请查看版本说明。
Spring for Apache Kafka和Spring for RabbitMQ 3.1.0发布,包含了 bug 修复、文档改进和依赖项升级。Spring for Apache Kafka 的新特性包括:删除EmbeddedKafkaKraftBroker类的brokerListProperty
属性设置,该设置可能导致在属性为null
时抛出异常;提供了一种定义与@KafkaListener注解关联的ContainerCustomizer Bean 名称的方式。更多详细信息,请参阅Apache Kafka和RabbitMQ的版本说明。
Spring Modulith 1.1.0 和 1.0.3发布,包含了 Bug 修复、依赖项升级和新特性,例如:使用 Spring Framework 的BeanFactoryInitializationAotProcessor接口而不是ApplicationModules类在原生镜像上初始化执行器端点;Spring Data MongoTemplate类中定义的updateFirst()
方法不支持排序操作,开发者应该使用findAndModify()
方法。有关此版本的更多详细信息,请查看1.1.0和1.0.3的版本说明。
Eclipse Store
Eclipse 基金会发布了EclipseStore 1.0.0,这是一个 Java 本地持久化库,从之前的MicroStream Storage 8.1.1迁移而来,新版本首次由 Eclipse 基金会发布。有关此发布的更多详细信息,请查看版本说明。
Quarkus
Red Hat 发布了Quarkus 3.5.3,其中包含了一些重要的变更,例如:MultipartFormDataOutput类的HashMap
切换到了LinkedHashMap,以保持用户的输入顺序;确保在 WebSocket 注入器之前对 GraphQL 进行身份验证和授权。有关此版本的更多详细信息,请查看更新日志。
类似地,Quarkus 3.2.9.Final 也已发布,包含了以下重要变更:解决了带有Throwable
参数的@ServerResponseFilter注解在 REST 资源抛出异常时未被调用的问题;处理了通过CacheResultInterceptor类缓存 REST 调用响应时发生的重复上下文混合问题。有关此版本的更多详细信息,请查看更新日志。
Hibernate
Hibernate ORM 6.4.0.Final发布,带来了一个新的@SoftDelete
注解,用于支持软删除,删除与非删除对应值 active/inactive;实现了在 HQL 和 Criteria 查询中处理数组的其余函数;支持在 JDK Flight Recorder 中编写 Hibernate 特定事件。
Hibernate Search 7.0.0 的第二个候选版本发布,包括:Bug 修复;与 Jakarta EE、Hibernate ORM 的基于鉴别器的多租户、Elasticsearch 8.11、OpenSearch 2.10 和 2.11 兼容;依赖项升级到 Hibernate ORM 6.4.0.Final 和 Apache Lucene 9.8。Hibernate Search 7.0.0.CR2 需要 JDK 最低版本为 11。
Infinispan
Infinispan 15.0.0.Dev05 已发布,其显著变化包括:在 Spring 测试中使用 Spring Framework 的@DirtiesContext注解来强制停止缓存管理器;改进了WriteSkewConsistencyTest类,解决了随机出现失败问题;将Jakarta JSON Processing的依赖从javax.*
命名空间迁移到jakarta.*
,以符合 WildFly Elytron 2.x 的要求。有关此版本的更多详细信息,请查看问题列表。
类似地,Infinispan 14.0.21.Final 也已发布,其显著变化包括:Java ConcurrentMap接口中的默认方法应确保在遇到错误时关闭迭代器;在实现虚拟线程方面的改进;创建用于测量节点之间延迟的指标。有关此版本的更多详细信息,请查看问题列表。
JHipster
JHipster Lite 0.49.0 已发布,包含了 Bug 修复、依赖项升级和特性增强:GraalVM 自动化构建;在Dummy特性中添加了package-info.java
文件。有关此版本的更多详细信息,请查看版本说明。
JBang
JBang 0.113.0 和 0.112.4 带来了一些显著变化,例如:命令行新的展开方式,可以解析表达式内的依赖项并用类路径替换它(请参见下面的示例);修复了通过--debug
命令行参数提供自定义端口时仍然使用默认端口 4004 的问题;更新了docker-compose
文件,修复测试代理需要身份验证的问题。有关这些版本的更多详细信息,请查看0.113.0和0.112.4的版本说明。
新的命令行展开特性允许开发者编写如下代码:
$ jbang sqlline@maxandersen -cp other args
OpenXava
OpenXava 7.2.0 包含了 Bug 修复、依赖项升级和新特性,例如:支持 JDK 21;改进日历,可以显示周或日;大量网络安全增强特性。有关此版本的更多详细信息,请查看版本说明。
Testcontainers for Java
Testcontainers for Java 1.19.3 已发布,包含了 Bug 修复,例如:使用ContainerDef类注册缺失的默认网络别名;由于使用了GenericContainer类中定义的setImage()
方法而导致的回归问题;以及在SQLScriptScanner中出现的大型字符串文本和 PostgreSQL 标识符的 Bug。
Gradle
Gradle 8.5.0 的第四个候选版本带来了一些新特性,例如:完全支持使用 JDK 21 进行编译、测试和运行;Kotlin DSL的改进,包括更快的初次使用和预编译 Kotlin 脚本插件的版本目录支持;改进的错误和警告报告。有关此版本的更多详细信息,请查看版本说明。
JCON World
JCON World 2023大会是由Java User Group Oberpfalz组织的国际在线 Java 社区大会,已于上周举行,来自 Java 社区的 100 多名演讲者在三天内做了主题演讲、组织了小时会和研讨会。
原文链接:
https://www.infoq.com/news/2023/11/java-news-roundup-nov20-2023/
评论