Java周刊2026W35 | JDK 28 值类、Spring Boot 4.1.1、Spring AI 2.0.1、Quarkus 3.39.1、GraalVM 25.3.4.1
本周 JVM 生态密集发布:JDK 28 值类与 TLSHandshake JFR 后量子追踪就绪,Spring 全家桶连发安全补丁——Boot 4.1.1(98 项修复)、AI 2.0.1(8 个 CVE)、Cloud 2025.1.3、Batch 6.0.5/6.1.0-M1、Modulith 2.2 M1;Quarkus 3.39.1 与 GraalVM 25.3.4.1 同步加固。
🌱 Spring生态
A Bootiful Podcast:JRuby 负责人 Charles Nutter
一位同为 Java Champion 的人执掌 JRuby 已超过十年,把一门动态语言打造成生产级的 JVM 重器,而非一时好奇。Ruby 灵活、轻线程的模型与 JVM 的线程和性能机制迎头相撞,这种张力大多数多语言运行时都没能干净地解决。这场与 Charles Nutter 的对话深入 Invoke Dynamic、Project Loom、Panama 和 Valhalla,揭示 JVM 上的动态语言下一步将走向何方。
Spring Boot 4.1.1 现已发布
Spring Boot 4.1.1 一次维护性更新就带来了 98 个 bug 修复,距离 4.1 这条线亮相仅数周之遥。像这样的补丁发布,正是团队在不等待下一次大版本跃升的情况下,悄悄吸收全新主版本毛刺的地方。发行说明梳理了已上线的打包修复、文档打磨和依赖升级(均已在 Maven Central 提供),以及如何通过 spring-boot 标签参与贡献或寻求帮助。
Spring AI 2.0.1 现已发布
Spring AI 2.0.1 悄悄发布,修复了八个安全 CVE——包括一个可让攻击者替换本地 ONNX 模型的可预测缓存路径,以及一个破坏了语义缓存租户隔离的 SHA-256 截断漏洞。这是 2.0 GA 之后的首个维护性发布,还打包了 80 多项修复和高频请求的能力,全部由在迁往生产时踩到边界情况的真实团队推动。文章梳理了升级说明、新特性,以及现已修补的完整漏洞清单。
Spring Cloud 2025.1.3(代号 Oakwood)已发布
Spring Cloud 2025.1.3(Oakwood)在 Commons 和 Config Server 上修复了四个 CVE,包括 SVN 支撑的配置服务器中的 TOCTOU 攻击缺陷,以及一个未做校验的 webhook 监控端点。依赖 Spring actuator 和配置服务器的云原生团队,若这些安全缺口在生产中未打补丁,将面临真实暴露风险。发行说明拆解了每一项显著变更,从断路器默认配置微调到 Bouncycastle BOM 升级,方便你规划一次安全、低风险的依赖升级。
Spring Batch 6.0.5 与 6.1.0-M1 现已发布
Spring Batch 在 2026 年 8 月 20 日一次性发布两个版本——生产级的 6.0.5 补丁和首个 6.1.0 里程碑——二者都附带安全修复和依赖升级,而非新功能。批处理作业往往栖身于长生命周期的生产流水线,未打补丁的 CVE 和陈旧库会在两次升级之间悄悄累积风险。公告指向 6.0.5 和 6.1.0-M1 的完整 GitHub 发行说明,便于团队在规划下一步之前权衡安全和依赖变化。
Spring Modulith 2.2 M1、2.1.1、2.0.8 与 1.4.13 已发布
Spring Modulith 的 2.2 M1 落在 Spring 技术栈的最前沿——基于 Spring Boot 4.2 M1 和 Spring Framework 7.1 M1 构建,而这些版本距离正式可用还有数月。关注模块化单体模式的团队必须决定:是骑上这条不稳定的前沿,还是留在以升级依赖为主的 2.1.1/2.0.8/1.4.13 修复线上。变更日志详述了该里程碑的 Namastack Outbox 集成修复、自动配置注册改进,以及哪些被回移植到了稳定分支。
📦 版本发布
GraalVM Community 25 Innovation 3(graal 25.3.4.1)
GraalVM Community 25.3.4.1 带来完整的 JDK 25,具备提前(AOT)Native Image 编译能力,还能在同一个运行时里与 Java 一并运行 Python、JavaScript 和 Node.js。多数 Java 团队仍默认使用标准 HotSpot 构建,错失了交付秒启动原生二进制、或在单一进程里混合多语言的机会。发行说明梳理了入门方式、平台相关下载,以及如何接入独立的 GraalPython 和 GraalJS 运行时。
Quarkus 3.39.1
Quarkus 3.39.1 悄悄修复了一个静默安全缺口:当使用 @PostAuthorize、@PreFilter 或 @PostFilter 注解时,quarkus-spring-security 不会让构建失败。3.38 的日期序列化回归,以及一个在字符串型 JSON-RPC id 上无限挂起的 Dev MCP 端点,显示“半修好”的集成多么容易溜进生产。该补丁集还覆盖了虚拟线程阻塞端点、Jackson Map 丢弃、Jib 推送日志和 MongoDB Panache 回滚。
Elasticsearch 9.5.2
Elasticsearch 9.5.2 作为一个例行补丁发布,没有重磅特性或破坏性变更——正是那种团队很容易跳过的安静维护更新。然而运行过时的次要版本,会让生产集群暴露于累积的 bug 修复和稳定性回退之中,后者会随时间悄然拖垮搜索性能。发行说明详述了每一个已修复的 bug 和改进的组件,方便运维快速评估已解决的问题并规划一次低风险的升级。
Grails 7.2.3
Grails 7.2.3 悄悄带来一个可复现性修复,让你的构建在机器间可复现——这类正确性保证多数团队以为本就存在,却很少验证。随着依赖漂移和非确定性构建产出不断破坏 CI 流水线和供应链审计,哪怕是小小的点发布如今也承载着信任的分量。发行说明梳理了回移植的可复现补丁、Forge 中新增的 MongoDB 测试支持,以及最新的 Spring Boot 和依赖更新。
Micronaut Core 5.1.12
Micronaut Core 5.1.12 作为一个安静的补丁发布,悄悄加固了 HTTP 行为,而非新增特性。JVM 框架里的一个点发布通常意味着依赖升级,但这一版新增了 Sec-Fetch-* 请求头,并记录面向流式响应的管道流限制——这些小缺口会悄然弄坏基于 fetch 的客户端和流式代理。说明梳理了 Groovy 5.0.8 更新、新的请求头支持,以及升级前值得检查的流式响应注意事项。
Azul Payara Community 7.2026.8
Payara Community 7.2026.8 是首个与完整 Jakarta EE 11 和 MicroProfile 6.1 技术栈对齐的构建,却未带来新特性——只有围绕 OpenTelemetry 和容错性的 bug 修复与加固。在 Jakarta 11 基线上运行它的运维团队仍会撞上坏掉的 shell 命令、指标基数泄漏,以及从未启用时却初始化的遥测,侵蚀着可观测性的信任。发行说明梳理了每一项修复、OTel 属性卫生清理,以及让运行时安全停留在新规范线上的组件升级。
📖 文章与教程
把安全焊进 JVM:线上传输的十六个 Subject
一次标准的 TLS 握手只能证明持有套接字的是哪台机器——它并不能说明发起调用的人是谁,因此一个被中转的请求会让账本对真实权限视而不见,并埋下悄无声息冒用身份的隐患。JVM 通过在一个独立于 TLS、并行的 JERI 编组通道(0x02)上以带内方式携带用户身份来填补这一缺口,从而端到端地断言“人”的信任链。本文逐步拆解了线格式、接收方拒绝信任的内容,以及 subject 链如何跨越线程与事务边界而得以存活。
在小应用里写脚本:一个宏不需要动用容器
一段本应只跑几行脚本逻辑的 Java 宏,过去常常把一整个容器镜像都拖进来——直到 JSR-223 脚本引擎出现,你才发现其实很少需要它。把小型、单一用途的脚本包进完整的容器运行时,会带来构建、依赖和冷启动开销,这些开销远超脚本逻辑本身,而多数团队在毫无质疑的情况下继承了这份重量。本文逐步拆解了何时普通的 javax.script 或 Rhino/GraalVM 这类嵌入式引擎就已足够,以及如何在无损隔离性与可测试性的前提下甩掉容器。
第三代 GUI 构建器:一套工作区搞定所有表单
第三代 GUI 构建器把一个 Java 团队要维护的每一种表单类型——桌面、Web、移动端和嵌入式——收拢进同一套工作区,而不是一堆缠作一团、彼此割裂的工具。跨平台的表单蔓延迫使开发者为每个目标重新学习一种新的构建器,并手工重复布局工作,悄悄吞噬着交付速度。本文逐步拆解了统一环境如何在一套工作区里处理面向所有目标的同一个表单、从遗留构建器迁移的路径,以及团队真正能看到的效率提升。
值类仍需要编译器的体谅
JDK 28 中的值类实际上可能让你的 Java 代码更慢,而不是更快——“把所有类都值化”的炒作忽视了这样一个事实:扁平化表示在某些方法里占优,而在另一些方法里引用表示才占优。当这两类方法相互调用时,JVM 必须反复在两者之间转换,而这种开销可能把你拖到原本以为安全的普通类性能下限之下。本文通过三个具体示例展示了 JVM 真正的扁平化、标量替换和逃逸分析带来的收益,以及这些能力今天的边界在哪里咬人。
质量外联提醒——JDK 28:TLSHandshake JFR 事件中捕获命名组信息
JDK 28 让 jdk.TLSHandshake JFR 事件记录下密钥交换时协商的命名组——像 X25519MLKEM768 这类细节,此前对运行时追踪完全不可见。由于该事件在 default.jfc 和 profile.jfc 中默认仍禁用,团队必须通过 jfr configure 或一个 *jfc 文件显式开启,才能暴露这段后量子握手元数据。本文展示了启用它的确切命令,以及如何用 jfr print 检视被捕获的命名组。
Spring Boot 配置管理最佳实践
散布在 Spring Boot 代码库中的 @Value 注解,会悄悄把配置变成一处重构即引爆的雷区——属性名被到处复制,以至于无法发现、无法校验、也无法安全地改动。在同一份制品要跨开发、测试、生产运行时,硬编码凭据或跳过启动期校验只会进一步加深风险。本文列出了三类配置、何时该用 Environment 而非 @ConfigurationProperties,以及如何让默认值安全、让密钥远离代码。
第 67 期 “跟上 Java 发布列车” [I/O]
在 Java 采用半年发布节奏八年之后,一个根本性问题依然悬而未决:组织真的能跟上如此 relentless 的升级节奏吗?对许多团队而言,每个新版本都意味着痛苦的迁移周期、兼容性评审,以及对在安全和功能上永久掉队的恐惧。这期 Inside Java Podcast 的“Input/Output”节目,收录了 2026 年 JavaOne 大会上与 SIXT 的 Danish Nawab 的一场坦诚对话,讲述真实的工程团队究竟如何面对这列发布列车。
BoxLang 1.16.0 发布!
BoxLang 1.16.0 带来了 HTTP 客户端生命周期可观测性与一个 MiniServer,把这门兼容 CFML、基于 JVM 的脚本语言从 JVM 之内扩展到了多语言运行时领域。仍苦于把命令式、基于标签的旧代码现代化为云原生、可观测服务的 ColdFusion legacy 团队,无需昂贵的重写。发行说明梳理了新的可观测性钩子、MiniServer 配置,以及让既有 BoxLang 代码保持不动即可获得运行时洞察和轻量服务 footprint 的迁移要点。
宣布 Oracle Jipher 10.37:面向 Java 的 FIPS 140-3 加密
Oracle Jipher 10.37 把一个通过 FIPS 140-3 验证的 OpenSSL 加密模块直接带入标准 Java 加密架构,团队从此不必再外挂独立的合规库。处理受监管数据的 Java 团队,长期以来难以在不重写加密代码或丢失 JCA 可移植性的前提下满足 FIPS 要求。该发布说明了 Jipher 如何通过熟悉的 JCA API 暴露已验证算法,让你在满足审计要求的同时保留既有 Java 加密代码。
Netflix Conductor:下一章
Netflix 早在 2016 年就把 Conductor 开源了,本文追溯它演进为一台成熟编排引擎的历程——以及如今有了专职维护团队和焕新的路线图之后,这个项目将走向何方。对任何在大规模运行工作流编排的人来说,都是不错的背景材料。
又快又硬的代码
LLM 已悄悄让编程语言的选择近乎无关紧要——智能体不再需要人类熟悉某种语法就能交付生产代码。这翻转了延续数十年的权衡:“硬”系统语言如 Rust 和 Zig 曾因陡峭的学习曲线而被回避,如今却正因为 AI 消除了这道摩擦、同时无情地为速度优化而崛起。文章追溯 AI 编程智能体与自动研究如何把即便对 AI 持怀疑态度的社区,也推向又快、又小、又硬的语言项目。
你的第一台虚拟机:给自己写个编译器,第四部分
一台解释二进制 IR 的虚拟机,能表达出你的源语言此刻还产生不了的程序——字节码指令集跑在了喂给它的编译器前面。构建它的代价,是把源层级的复杂性换成一段基于栈、推操作数、弹结果的循环,但后缀表示法和极简的派发在没有心智模型时显得陌生。本文逐步拆解了一台 30 行的 Go 虚拟机:指令指针循环、操作数栈,以及为何后缀表示法在执行时胜过中缀。
按提交信息文本查找 Git 提交
只为了引用一个提交就背提交 SHA 或摆弄 git log,实在繁琐——然而 git 有个内置捷径,多数日常用户从未学会。:/text 语法让你通过正则匹配提交信息来定位提交,例如 git show :/fix typo 就是找最近那次“fix typo”提交,省去在 log 与命令之间来回折返。文章梳理了这段修订语法、为何它胜过 SHA 或相对位置,以及读文档带来的回报。
关于 KPI 的这个事实可能会让你意外
真正写软件或干实事的人,从未被任何一个 KPI 帮到过——以白眼计,提起它的次数约等于听到它的人里一半的耳朵数。张力在于客户仍要求用简单指标来管理测试工作,然而把技艺降格为数字游戏,是与卓越格格不入的。文章主张靠倾听来管理、观察工作、尊重人,而非追逐虚荣指标。
为什么智能体 AI 始于遗留现代化(Suzanne Angell)
智能体 AI 的能力上限,取决于它所连接的遗留系统,然而许多组织仍跑在数十年前设计的技术资产上。真正的障碍不是老化的硬件,而是“运营债务”——系统与流程和规章耦合得如此之紧,以至于无法适应,留给智能体的便是脆弱、不完整的数据。文章论证了为何现代化遗留资产必须先于智能体采纳,以及如何务实地清偿这笔债务。
两个 Flink 自动伸缩器的故事
Netflix 运行着超过 30,000 个 Flink 作业,却刻意在生产里同时运行两个自动伸缩器——一个自研、一个开源——恰好比它想要的多了“一个”。在那里,伸缩并非免费:每次扩缩都意味着一次 savepoint、优雅停止和重启,对大型有状态作业可能耗时数分钟,因此过度与欠配资都带着真实成本和滞后风险。文章分享了关于指标、成本,以及维护你本可改用的基础设施之真实代价的硬核教训,正值 Netflix 向社区自动伸缩器收敛之际。
与 AI 共处一年后的若干反思
一个把 AI 助手当作精力充沛的结对伙伴、而非炒作指令的团队,发现业内的“AI 垃圾”与倦怠叙事莫名地陌生。当同行淹没在 token 最大化与未经评审的 PR 里时,Snabble 那种无压力、务实的采纳——每月互换技巧、对所有生成代码彻底签字——让编程保持有趣、评审负担持平。文章反思了真正有用的东西:启动被拖延的任务、卸下无聊杂活,以及智能体在上下文上仍力有不逮之处。
用 Robocopy、SMB 多通道与意外性能陷阱把群晖 NAS 迁到 UniFi UNAS Pro 8
一条十年前的 Robocopy 贴士——加上 /Z 以支持续传——结果恰恰是让一次 10Gb NAS 迁移“巨慢”的那个设置,这堂课把传统的文件拷贝常识翻了个底朝天。本应只是一次无聊的 SMB 到 SMB 迁移,却演成充满 Windows 错误 665 文件系统限制、以及 Explorer 悄悄 choking 掉的文件名的一夜。文章梳理了这些陷阱、修复方式,以及 SMB 多通道最终如何交付了预期的吞吐。
一个关于数据泄露声明、核验与 Carhartt 的警世故事
一起声称窃取了 50 GB Carhartt 数据的泄露,产出 24,876,077 个唯一邮箱——然而转述这一数字的行业分析人士,恰恰在核验本应开始的地方停下了深挖。把黑客声明或吸睛标题照单全收,风险在于用伪造记录污染泄露数据库,误导数百万查询自身是否暴露的人。文章梳理了 Troy Hunt 的 HIBP 核验流程,展示更深的交叉核验如何揭穿被夸大的数字,以及为何严格验证胜过夺人眼球的恐慌。
☕ JVM周报
本周要点
余下故事:八月版——JVM Weekly 第 189 期 订阅 登录 余下故事:八月版——JVM Weekly 第 189 期 Groovy 在 JDK 之前就把结构化并发带给了 Java,Amber 承认穷尽性 switch 的保证比我们以为的要少,而两家毫无共同之处的公司同时认定语言服务器就是产品本身了。Artur Skowronski 2026 年 8 月 27 日 5 分享 Tw
往期精选
- Java周刊2026W34 | JEP 540 瞄准 JDK 28、A2A Java SDK 1.2.0、LangChain4j 1.19.0、Stubborn Contract 0.1.0
- Java周刊2026W33 | IntelliJ IDEA 开放 LSP、Spring Boot 4.1 支持 gRPC、Elasticsearch 9.5.0 发布、Java 转高频安全更新
- Java周刊2026W32 | JDK 28 jlink插件、Spring AI 2.0、Hibernate 7.4、Quarkus 3.37.4、GraalVM 25.2
- PHP周刊2026W34 | PHP 8.6弃用投票落定、Laravel 13.25发布、NativePHP v4原生UI、Symfony 8.2合并173 PR
- 用 Rust 重写 Bun
- 2026年8月编程语言排行榜|MATLAB 首次跌出前20
扫码关注「右耳朵猫AI」

浙公网安备 33010602011771号