OpenJDK
JEP 430、模板字符串(预览)从 JEP 草稿 8273943 提为候选状态。在 Amber
项目的支持下,该预览版本 JEP 提议通过模板字符串增强 Java
编程语言,通过在字符串字面量包含嵌入式表达式,并在运行时对解释、评估和验证嵌入式表达式。
JDK
19
Oracle 在这周发布了 19 版本的 Java 编程语言和虚拟机,上线了七个 JEP 的最后一块拼图。更多详情请见 InfoQ
新闻。
亚马逊 Corretto
亚马逊发布了亚马逊 Corretto 19,是其
OpenJDK 19 的下游发行版,可用于 Linux、Windows 和 macOS 平台,开发者可从官方网站下载最新版本。
Liberica JDK
同样,BellSoft 也发布了它们 JDK 19
的下游版本,LibericaJDK 19,开发者可从官方网站下载最新版本。
JDK 20
JDK 20 的抢先试用版本,Build 16 也于上周发布,重点针对
Build 15 更新了各种问题的修复更新。关于该版本更多细节,可参见版本说明。欢迎各位开发者通过 Java Bug 数据库报告关于 JDK 20 的错误。
Jakarta EE
Jakarta EE 工作组发布了 Jakarta EE 10,这是自
Oracle 于 2017 年将 Java EE 8 捐献给 Eclipse 基金会以来的第三个主要版本。该版本更新了为超过 20 个组件提供了新功能,更有对已有 Platform 和 Web
配置兼容实现的核心配置文件。InfoQ 将后续发布更详细的跟踪报道。
Spring 框架
Spring
团队在这周做了不少事,不仅有多个项目的单点和里程碑版本发布,还更新了一个公共漏洞和暴露(CVE)。Spring Data REST 团队发布了 CVE-2022-31679:Spring Data REST
的资源暴露导致潜在非预期数据暴露。在该漏洞中,攻击者可以通过伪造的 HTTP 请求暴露应用程序中的隐藏实体属性,从而允许 HTTP PATCH 访问由 Spring Data REST 暴露的资源。
Spring Boot 的 2.7.4 和 2.6.12 版本都已在 Java 社区内可用。这两个版本均支持 JDK 19,并带来了一系列故障修复,如:Spring Framework 5.3.23, Hibernate
5.6.11.Final, Netty 4.1.82.Final, Rector 2020.0.23, Groovy 3.0.13, Dropwizard Metrics 4.2.12 和 Postgresql
42.3.7。关于每个版本的更多细节可参见 2.7.4 版和 2.6.12 版的版本说明。
在 Spring Boot 3.0 发布之前,第五个里程碑式版本已经更新,其中新特性重点包括:优化了运行前编译处理和原生图像支持;优化了 actuator 端点的健康处理;在修复了 common-core 模块的问题后恢复对
Eclipse Jersey 的支持。关于该版本的更多细节可参考版本说明。
Spring Data 的 2022.0.0-M6、2021.2.3 和 2021.1.7 版本已经发布,这些版本对 Spring Data 子项目的相应版本进行了错误修复和依赖性升级,例如:Spring Data
REST、Spring Data JPA、Spring Data MongoDB、Spring Data for Apache Cassandra、Spring Data Neo4j 和 Spring Data
KeyValue。这些版本同样包括前文中提到的 CVE-2022-31679 漏洞修补。
Spring Security 的 6.0.0-M7 和 5.8.0-M3 版本已经发布。6.0.0-M7 版的新特性包括:在 @PreAuthorize 注解中支持
native-image;HttpSessionRequestCache 类的性能增强;从 WebSecurity 类中删除 FilterSecurityInterceptor 类(现已废弃),改用
AuthorizationFilter 类。5.8.0-M3 版的新特性包括:用于 CSRF 请求处理的新接口;AspectJ 对 @EnableMethodSecurity 注解的支持;以及支持通过
LazyCsrfTokenRepository 类对 CsrfToken 接口的实现进行懒惰读取,以补充现有的对令牌的懒保存。值得注意的是,6.0.0-M7 版本有一些突破性的变化。关于这些版本的更多细节可以在
6.0.0-M7 版本和 5.8.0-M3 版本的发行说明中找到。
Spring Cloud Dataflow 2.10.0 的第二个里程碑版本已经发布,重点对 Spring Boot 2.7.3、Spring Framework 5.3.22 和 Spring Cloud 2021.0.3
进行了依赖升级。曾在 Spring Cloud Dataflow 2.10.0-M1 中被暂时删除,该版本中又恢复了对使用 MariaDB JDBC 驱动程序的 MySQL 5.7+
的支持。关于该版本的更多细节可参考版本说明。
Spring Batch 的 5.0.0-M6 和 4.3.7 版本已经发布。4.3.7 版本提供了故障修复、文档改进和依赖性升级,如:Spring Framework 5.3.23、Spring Data
2.5.12、Spring Integration 5.5.15,以及 Spring Kafka 2.7.14。5.0.0-M6 版本则提供了一些新特性,如:在
AbstractJobRepositoryFactoryBean 类中支持原生图片;在 SimpleJobOperator 和 SimpleJobExplorer 类中支持事务管理器配置;用
@EnableBatchProcessing 注释重新审视基础设施 Bean 的配置。关于该版本的更多细节可参考 5.0.0-M6 和 4.3.7 的版本说明。
Spring Authorization Server 1.0.0 的第二个里程碑版本合并了 0.4.x 版本的增强功能,以及对 Spring Framework 6.0.0-M6、Spring Security
6.0.0-M7、mockito-core 4.8.0、jackson-bom 2.13.4 和 nimbus-jose-jwt 9.24.4 的依赖升级。关于该版本的更多细节可参考版本说明。
Spring Session 2022.0.0 的第三个里程碑版本已经发布,其中包括对子项目的更新:Spring Session Core 3.0.0-M4、Spring Session Data Redis
3.0.0-M4、Spring Session JDBC 3.0.0-M4 以及 Spring Session Hazelcast 3.0.0-M4。
同样,Spring Authorization Server 0.4.0 的第二个里程碑版本也提供了一些新特性,如:可添加 AuthenticationProvider 和 AuthenticationConverter
接口的实现,以替代覆盖默认接口;在 ClientSecretAuthenticationProvider 类中检查验证客户端秘密是否已经过期。关于该版本的更多细节可参考版本说明。
Spring Integration 的 6.0.0-M5 和 5.5.15 版本已经发布。5.5.15 版特性是修复了关键故障并解决了上有依赖关系的弃用问题。6.0.0-M5 版中值得关注的变化包括:支持 Spring
AOT、GraphQL 和 Apache Camel;删除了远程方法调用(RMI)模块以支持更安全的协议;新增 PostgresSubscribableChannel 类,可依赖本地 PostgreSQL 进行通知推送;新增
ClientManager 接口,允许为不同通道适配器共享同一个 MQTT 客户端。建议开发者阅读这份迁移指南,以获得关于突发变更和更多细节的信息。
实验性 Spring 项目 Spring for Apache Pulsar 的 0.1.0-M1 版本已经发布,该版本以 JDK 17、Spring Boot 3.0.0-M5 和 Spring Framework
6.0.0-M5 为基础。关于该版本的更多细节可参考版本说明。
Spring for GraphQL 1.0.2 已经发布,具备以下新特性:支持 JavaMap 接口的 @Arguments 注解;支持重定向到 GraphiQL
路径的路径变量;新增启动时内省(introspect)控制器方法,以确定是否需要验证。关于该版本的更多细节可参考版本说明。
Spring for GraphQL 1.1 的第一个里程碑版本已经发布,支持 JDK 17、Jakarta EE 和 Spring Framework 6.0 基线。此外,还包括 GraphQL 的 Java 实现
GraphQL Java 到 19.x 版本的升级,以及新的 Micrometer 上下文传播库,取代了他们内部开发的上下文传播机制。