2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Spring 团队谈 AOT 缓存处理、空值安全性和支持政策

作者:Karsten Silz

  • 2025-06-03
    北京
  • 本文字数:2319 字

    阅读完需:约 8 分钟

大小:1.11M时长:06:28
Spring团队谈AOT缓存处理、空值安全性和支持政策

Broadcom 最近发布了 Spring Boot 3.5多个 Spring 项目,并正在开发 Spring Framework 7.0 和 Spring Boot 4.0,计划于 2025 年 11 月发布。


Java 中的空值安全性正日益受到广泛关注。JEP Draft 8303099(非空受限和可空类型 (预览))目前仍在推进中,尚未成为即将发布的 JDK 版本的候选特性。与此同时,由谷歌(主导)、Spring、JetBrains 等成员组织共同参与的 JSpecify 计划为 Java 静态分析提供了标准注解。

InfoQ 采访了 Broadcom 的 Spring Framework 核心提交者 Sébastien Deleuze 和 Spring 团队开源支持总监 Michael Minella。他们回答了与处理 Java AOT 缓存、寻找支持 JSpecify 的库以及近期 Spring 支持政策变化相关的问题。


InfoQ:用户通常将 Spring Boot 应用程序作为存储在注册表中的容器镜像进行部署。然而,为了使用 Project Leyden 的 JEP 483 更快地启动应用程序,用户还必须为每个容器镜像存储和分发至少一个预编译(AOT)缓存文件。在这方面有哪些最佳实践?


Sébastien Deleuze: Spring Boot 在这方面非常灵活,它提供了一个 extract 命令来解包可执行 JAR 文件,可以与 Class Data Sharing (CDS) 或 AOT 缓存一起使用。


AOT 缓存很快将支持 JEP 515(提前方法分析)和 JEP Draft(提前代码编译)。为了生成有效的 AOT 缓存,分析数据应从具有实际工作负载的实例中获取,这些实例可能来自生产环境。AOT 缓存不一定需要包含在容器镜像中,这种集成很可能会发生在平台级别。例如,我们正在将 AOT 缓存与 Spring AOT 集成到 Tanzu PlatformTanzu Spring 中,实现 Spring 应用程序的自动优化。


在容器镜像中分发缓存方面,Spring Boot 使用开源的 Buildpacks 来创建容器镜像。它们可以自动使用 CDS 执行训练,并将生成的缓存文件包含在容器镜像中。AOT 缓存也可以通过这种方式进行分发。值得注意的是,与 OpenJDK Project CRaC 不同,CDS 和 AOT 缓存不会转储原始 Java 进程内存,从而有效避免了泄露敏感信息或密码的风险。一个推荐的最佳实践是使用一个专门的顶层容器层来存储 AOT 缓存,确保从应用层及以下都能充分利用缓存的优势。


InfoQ:JSpecify 计划定义了 Java 中空值安全性的语义,并标准化了 @Nullable@NonNull 等注解。从 Spring Boot 4.0 开始,所有 Spring 组合项目最终将使用 JSpecify。但是 Spring 开发者如何知道哪些非 Spring 库使用了 JSpecify?


Deleuze: 目前还没有一个权威的渠道来列出所有使用了 JSpecify 的库。不过,这确实是一个很有意义的想法,我们会将这个建议反馈给相关的工作组。在 Spring 之外,我们已经看到谷歌、Gradle 和 GraphQL 在他们的库中添加了 JSpecify 注解。


关于 JSpecify 的采用,有三个关键点:


首先,JSpecify 定义了三种空值类型:可空(@Nullable 注解)、非空(@NonNull 注解)和未指定(Java 默认行为)。Java 的默认行为适用于那些未明确声明其 API 空值语义的库。当混合使用空值安全(null-safe)和空值不安全(null-unsafe)代码时效果很好,尤其是当空值安全的 API 使用空值不安全的库时。


其次,粒度可以比整个库更具体。通常在包级别使用 @NullMarked 注解来声明默认采用非空类型,然后使用 @Nullable 明确标记可空类型。库可以用这种方式逐步增加空值安全性,甚至可以细化到类或方法级别


最后,JSpecify 正在努力更全面地定义 JDK 本身的空值语义,因为目前只有其 API 的一个子集指定了空值相关的信息。


InfoQ:Spring Boot 每个大版本的最后一个版本为长期支持(LTS)版本。2022 年 5 月发布的 Spring Boot 2.7 获得了 18 个月的免费更新(“开源支持”)和超过 4.5 年的付费更新(通过企业付费支持)。Spring Boot 3.5 将只获得 13 个月的免费更新,但付费更新将超过 7 年。这是出于何种考虑呢?


Michael Minella: 我们尽可能简化小版本升级,但由于大版本升级需要更大的投入,因此我们通常会给予更长的时间支持。例如,2022 年 5 月发布的 Spring Boot 2.7 提供了 18 个月的开源支持和15 个月企业支持。相比之下,Spring Framework 5.3,Spring Boot 2.7 的主要依赖项,提供了 50 个月的开源支持和24 个月企业支持。我们的政策在产品组合中没有保持一致,我们希望在这方面可以做得更好。


因此,我们在 2025 年 2 月更新了支持政策,做出两项重大调整。首先,所有支持时间线现在都与 Spring Boot 保持一致。在以往,产品组合中的支持时间线取决于发布日期——不同项目有不同的支持日期。在未来,用户只需要知道 Spring Boot 的支持日期:开源支持是在与之对应的 Spring Boot 发布之后的 13 个月,企业支持是在之后的 12 个月(都四舍五入到月底)。这一调整在整个产品组合中统一了支持期限,简化为两个支持时间线日期:6 月 30 日和 12 月 31 日。我们目前正在更新网站,使其更加清晰。


其次,我们制定了一个统一的 LTS 政策,而不是像以往那样每个项目各自为政:每个主要版本的最后一个次要版本(如 3.5)在 13 个月的开源支持和一年常规企业支持的基础上,额外获得五年的企业支持。这为用户提供了超过七年的总支持时间线,这是我们迄今为止提供的最长支持时间。


多年来,我们的社区一直明确表示,他们需要更多时间来进行大版本升级。通过提供更多的支持和简化流程,我们以最可持续的方式满足了社区的需求。根据到目前为止的反馈,社区对此表示认同。


开发者可以在这篇 InfoQ 新闻报道中了解有关空值限制和可空类型的更多信息,在这篇 InfoQ 新闻报道中了解 JSpecify 1.0.0。这篇 InfoQ 新闻报道描述了 JEP 483(提前类加载与链接),这是 Project Leyden 的第一个交付成果。


【声明:本文由 InfoQ 翻译,未经许可禁止转载。】


查看英文原文https://www.infoq.com/news/2025/05/spring-aot-jspecify-support/

2025-06-03 18:006362

评论

发布
暂无评论

碳实践|企业组织碳排放因子宝典

AMT企源

数字化转型 双碳 碳管理 碳核算 碳排放

独特DJ混音创作软件DJ Mix Pads 2 - Remix Version

Rose

mac office 365 商业专业版破解

Rose

Autodesk AutoCAD 2025中文版详细图文安装教程

Rose

精彩回顾!安全智能体的前沿技术研究与实践

云起无垠

在鸿蒙系统中处理ETS层与C++层之间的数组传递

彭康佳

c android 鸿蒙 native

解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展

汀丶人工智能

大模型 思维链

2024最新多端社交圈子系统源码 | 陌生人社交 | 即时聊天通信 | 小程序+H5+PC+APP等多端

DUOKE七七

php 开源 源码 uniapp 交友软件开发

sublime text代码编辑器 中文设置教程

Rose

Permute 3全能媒体格式转换器 mac Permute 3中文版下载

Rose

【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常

YashanDB

数据库 yashandb 崖山数据库

实现智能化生产车间的MES管理系统

万界星空科技

智能制造 mes 万界星空科技 数字化车间 车间管理

Parallels Desktop 18 for mac(兼容Intel和M系列虚拟机)v18.3.2永久激活版

Rose

潞晨训推一体机,画出大模型到企业的一条龙路线图

脑极体

AI

油猴Safari浏览器辅助插件Tampermonkey 中文版下载

Rose

大模型应用之路:从提示词到通用人工智能(AGI)

京东科技开发者

TDengine 3.3.0.0 引入图形化管理工具、复合主键等 13 项关键更新

TDengine

数据库 tdengine 时序数据库

Invisor for Mac 媒体文件信息查看软件

Rose

优秀的电子书生成工具Vellum for Mac v3.7.4激活版

Rose

中国LED显示屏产业的挑战与机遇

Dylan

产业 LED显示屏 全彩LED显示屏 led显示屏厂家 市场

PHP正版交友系统交友平台源码+支持H5小程序+带安装说明+可封装APP 交友程序网站源码+安装说明

DUOKE七七

php 开源 源码 uniapp 交友

机器学习:人工智能的子领域之一

天津汇柏科技有限公司

机器学习 #人工智能

Spring团队谈AOT缓存处理、空值安全性和支持政策_后端_InfoQ精选文章