JDK 28 JEP 401 值类与 TLSHandshake JFR 预览Spring Boot 4.1.1 修复 98 项Spring Cloud 2025.1.3 修补端点安全问题Quarkus 3.39.1、Jipher 10.37 等版本更新并讨论 Agent 治理、Flink 扩缩容与遗留系统现代化。 Spring生态A Bootiful PodcastJRuby 负责人 Charles NutterRuby 这门与 JVM 毫无渊源的语言不只是被移植到 Java 虚拟机上而是在那里成了生产级运行时——JRuby 负责人 Charles Nutter 花了许多年把 JVM 掰向动态语言。这项工作径直穿过平台自身的演进invokedynamic、Project Loom 的虚拟线程、Panama 与 Valhalla 都在重塑 Ruby 在 JVM 上的执行方式而 Ruby 的线程与性能需求又不断反向施压。听众将听到身为 Java Champion 与长期 JRuby 负责人的 Nutter 讲述 Ruby 与 JVM 如何走到一起、速度从何而来以及动态语言为何在那里依然重要。Spring Boot 4.1.1 现已发布Spring Boot 4.1.1 带着 98 个 bug 修复到来——一个比多数小版本装的东西还多的补丁版。点版本本该是小型安全网如此大的修复量说明 4.1.0 之后有相当多待清理项而已经押在新基线上的团队现在必须做出决定。读者将看到本次发布范围、从哪里获取以及如何参与贡献或提问。Spring Cloud 2025.1.3又名 Oakwood已发布Spring Cloud 的可写 env actuator 端点在完全没有 allow list 的情况下就发布了CVE-2026-59284而 Config Server 的 monitor 端点接受 webhook 请求时不做任何校验CVE-2026-47837。两者都位于运行中服务与其配置之间的路径上因此一个宽松的端点等于把触碰运行时属性的能力交给了不受信任的调用方——这种失效模式不会让任何东西崩溃也不会触发任何测试。读者将看到 2025.1.3 的其余说明Spring Boot 4.0.8 基线、Bouncycastle 1.85.2 及新的 BOM、配置重置与 bean 重绑定修复以及供自查部署的 issue 编号。Spring Batch 6.0.5 与 6.1.0-M1 现已发布Spring Batch 在同一天发布了一个维护补丁版与下一个小版本的里程碑——6.0.5 与 6.1.0-M1——且两者都包含安全修复因此正在评估 6.1 线的团队与钉在 6.0 上的团队一样需要立刻重新拉取。公告没有点名任何 CVE也没有说明升级了哪些依赖这让在生产环境跑批处理作业的任何人只能去翻两份独立的 GitHub 发布说明来判断自身真实暴露面。读者将看到发布指向、详细说明的所在位置以及每条线各自要求的升级决策。Spring Modulith 2.2 M1、2.1.1、2.0.8 与 1.4.13 已发布Spring Modulith 2.2 M1 建立在 Spring Boot 4.2 M1 与 Spring Framework 7.1 M1 之上——都是里程碑而非正式发布——于是这个以强制架构边界为职责的工具包如今却立在预发布地基上。三条旧线2.1.1、2.0.8、1.4.13同日发布带来依赖升级与回移的 Outbox、自动配置修复让团队去权衡是追 2.2 还是留在只会收到回移的分支上。读者将看到该里程碑的基线变动、具体修复项以及用于判断自身升级路径的 changelog 索引。 版本发布GraalVM Community 25 Innovation 3 (graal 25.3.4.1)无法为该内容生成摘要——拒绝。原因**提供的内容不是 25.3.4.1 的发布说明而是 GraalVM 每次发布都附带的通用项目模板文案“GraalVM is an advanced JDK with ahead-of-time Native Image compilation…” 官网外链 graalpython/graaljs 独立发行版链接 JDK base 下载表表格在 2000 字符处截断于graalvm-community-jdk-25。整个片段零本版本实际变更说明——模板文案、下载链接与文档外链不构成版本变更信息任何 HookConflictBenefit 摘要都只能凭空编造新特性/修复项。标题也不构成可用的兜底纯版本号/发行名标题“GraalVM Community 25 Innovation 3 (graal 25.3.4.1)”不带硬量化结果或能力主张无法独立支撑一个不依赖正文的实质断言故不适用「正文零捕获但标题可用」的正面边界。建议**用 GitHub releases API 取完整发布说明后再生成——https://api.github.com/repos/graalvm/graalvm-ce-builds/releases/tags/graal-25.3.4.1取body字段或直接提供 graalvm.org 的 25.3 release notes 正文。Quarkus 3.39.1Quarkus 3.39.1 修复了一个场景PostAuthorize、PreFilter 与 PostFilter 可以在不使构建失败的情况下被使用——这些 Spring 式方法安全注解看起来生效实则可能从未执行过。围绕它的是一个充满静默失败的补丁版无反射的 Jackson 序列化器把一个 Map 子类当作 bean 处理并丢掉每个条目Dev UI 的 MCP 端点在 JSON-RPC id 为字符串时会永久挂起而 database dev services 早在 3.22 起就不再被复用。读者将看到带 issue 与 PR 编号的完整 changelog用以核对自己的构建、序列化或开发模式配置是否受影响。Elasticsearch 9.5.2Grails 7.2.3Grails 7.2.3 把仅有的三处改动之一花在了多数补丁版会跳过的事情上把可复现构建修复#16090反向移植进一条已发布的版本线使相同源码产出逐字节一致的产物。不可复现的产物会打破供应链审计所依赖的唯一保证——已发布的 jar 可被独立重建并与源码比对——此版本还引入了 grails-quartz#16185。读者将看到 Forge 中的 MongoDB 测试支持#15339、Spring Boot 与依赖更新以及可供核对自身升级的每一个 issue 与 PR 编号。Micronaut Core 5.1.12Micronaut 5.1.12 把 changelog 的一部分用来记录一条限制而不是发布一个新特性piped stream 是返回流式响应最直觉的写法却带着大多数开发者从未见过书面说明的限制。流式正是你无需把大负载整个缓冲进内存就能返回它的方式因此这个缺口往往只在有负载或大文件时才浮现而且浮现时是静默的。读者将看到这些被文档化的限制以及补丁的其余部分用于服务端 fetch-metadata 决策的 Sec-Fetch-* 请求头、Groovy 5.0.6 到 5.0.8 的升级以及供核对自身构建的 PR 编号。Azul Payara Community 7.2026.8即使无人显式启用OpenTelemetry 也会在 Payara 内部自行启动于是你以为关掉了追踪的服务器其实一直在为此付费。7.2026.8 还修好了 JAX-RS Client、JAX-WS 与 IIOP 路径上那些从不结束的 span并清理了属性卫生问题——临时拼凑的键与 EXCEPTION_TYPE 的误用会抬高指标基数。读者将看到完整 changelog跨 JAX-WS HA 持久化、Fault Tolerance 指标缓存与基数的 bug 修复以及失效的 OSGi GoGo shell改进包括访问日志 URI 的正则过滤、MP 与 OTel 指标分离以及移除已弃用的 Traced 注解外加 MicroProfile OpenAPI API 升级——每一条都标注了对应的 FISH issue 与 PR 编号。 文章与教程安全内建于 JVM线路上的十六个 Subject当 Alice 的订单服务代表她调用账本服务时无论原样转发她的持有者令牌还是直接丢弃都行不通账本要么分不清她与中继服务的区别要么只看到一台机器而没有任何人类发起这条调用链的记录。因此 JERI 的 0x02 编组协议把用户 Subject 承载在一条独立于 TLS 的通道上——TLS 只证明套接字握在哪台机器手里而 0x02 承载的是那台机器对调用背后人类身份的断言——并且限额16 个 Subject、每个 Subject 64 个 principal在接收端强制执行而非由线路格式规定。读者将看到数据块布局、接收方拒绝相信什么以及这条链如何跨线程边界与分布式事务存活。在小型应用中引入脚本一条宏用不着容器给用户提供为小型 Java 应用编写脚本的能力并不意味着要起一个容器或内嵌多语言运行时——一条宏需要的机制远少于此。为应用添加脚本的常规选项总把人引向重量级的可嵌入引擎与沙箱拖入依赖、启动开销以及相较于寥寥几条用户自定义宏而言极不成比例的安全面。读者将用五分钟走查这些常规选项以及一条更轻量、无需容器却已覆盖小型应用实际所需的路径。第三代 GUI 构建器一个工作区适配所有表单第三次重建 GUI 构建器时Codename One 最大的收获不是更流畅的拖拽界面而是删掉了按表单打开的编辑器进程。Maven 迁移之后表单、Java 与 CSS 散落在不同目录而为每个生成的表单单独启动一个编辑器进程让导航成了可视化工具里最慢的一环。新的mvn cn1:guibuilder工作区会扫描每一个.gui文件保持受引导的LayeredLayout原样不变在实时预览旁编辑真实的theme.css并把手写事件处理器与重新生成的代码隔离开来。文章讲解了 Maven 目标、基于名称的布局引导以及生成代码与用户代码如今如何共享同一个可检视的工作区。值类仍需编译器的体恤值类可能让你的代码比普通类更慢——扁平化表示在某些方法里更快引用表示在另一些方法里更快而当这些方法相遇时JVM 必须为两者之间的转换付出代价。JEP 401 已作为预览特性落地 JDK 28放弃 identity 确实为运行时换来真实自由扁平化以避开指针追逐、把字段标量进寄存器或栈上、逃逸分析变得近乎平凡。但流行的“给所有类都加上值语义”的读法错在假定普通类是一层性能地板、值类只会把你抬到它之上。读者将看到三个实测案例分别展示 JVM 在何处扁平化、在何处编译出零分配的变换以及泛型虚调用在何处迫使代价高昂的实体化。质量外联预告——JDK 28TLSHandshake JFR 事件记录命名组信息JDK 28 能精确告诉你每一次成功的 TLS 握手最终协商出哪个密钥交换组——细到后量子混合组 X25519MLKEM768——但记录它的 jdk.TLSHandshake JFR 事件在随 JDK 分发的 default.jfc 与 profile.jfc 两个配置里默认关闭因此大多数录制静默地什么都抓不到。正在推广后量子密钥交换的团队否则无从获得运行时证据来判断哪些对端真的协商了混合组、哪些悄悄回落到经典曲线。读者将得到启用它的确切 jfr configure 与 -XX:StartFlightRecording 参数以及确认所协商 namedGroup 与协议版本、密码套件并排显示的 jfr print 输出。Spring Boot 配置管理最佳实践散落各处的 Value 注解会让属性名变得无法被发现、校验或重构——正因如此Spring 自己的指南把它们留给孤立的值而把相关设置推进类型化的 ConfigurationProperties 类。这个区分之所以重要是因为同一份产物必须在每个环境里都正确运行默认值必须在任何环境下都安全数据库 URL 与凭据绝不能硬编码而任何没有安全默认值的必需项都应在启动期快速失败。读者将得到在 Environment、Value 与 ConfigurationProperties 之间取舍的具体规则以及一个把第三方 API 设置分组的实操模式。第 67 期“跟上 Java 发布列车”[I/O]Java 转向六个月发布节奏已过去八年组织能否真正跟上仍是一个悬而未决的问题。OpenJDK 的发货节奏与真实生产系统可吸收的速度之间这道落差——依赖更迭、测试、迁移风险——正是这个新的 Input/Output 系列去采访 OpenJDK 之外人士的原因。读者将听到 SIXT 高级工程师 Danish Nawab 从实践者一侧讲述跟上发布列车究竟是什么样子。BoxLang 1.16.0 发布BoxLang 1.16.0 把全新的一等 HTTP 客户端放在 changelog 头条——一门本就运行在 JDK 之上的 JVM 语言选择自研网络层而不是沿用 Java 的那一套。在 JVM 上编写集成脚本的开发者长期在冗长的 Java HTTP API、依赖臃肿的第三方客户端以及 Java 与动态语言调用点之间不一致的行为之间来回折腾。本篇发布说明将走查这个新的 HTTP 客户端、它的用法以及 1.16.0 的其余变更。Oracle Jipher 10.37 发布面向 Java 的 FIPS 140-3 加密通过 FIPS 140-3 验证的加密通常意味着要放弃标准 Java API——Oracle Jipher 10 反其道而行它打包了一个通过验证的 OpenSSL 密码模块并通过普通的 JCA 框架提供服务因此已有的加密代码可以继续调用同一套接口。政府、金融与医疗领域的受监管负载经常被要求运行在经认证的模块上而手工满足该要求意味着要么写厂商专属调用要么干等 JDK 自己的 FIPS 方案两者都塞不进已经写好的代码。读者将看到 FIPS 140-3 验证覆盖了什么、Jipher 如何接入 JCA以及指向详细文章的指针。Netflix Conductor下一章Netflix 早在 2016 年就把 Conductor 开源本文追溯了它演进为成熟编排引擎的过程以及在这个项目有了专门维护团队与更新后的路线图之后的下一步走向。对任何在规模化运行工作流编排的人来说都是不错的背景资料。快速而硬核的代码你的第一个虚拟机动手写编译器第四部分虚拟机从技术上说仍然是个解释器——区别在于它执行的是二进制 IR 而非源码文本而且它的指令集已经能表达你的源语言尚无法生成的程序。这道落差正是关键一台跑后缀字节码的栈式机器不需要优先级规则或括号只需要一个指令指针循环不断压入与弹出操作数。读者将看到剥离到最简的 Go 主循环、每条指令的操作数栈走查以及为什么在这里后缀优于中缀。面向 Agent 的人工介入授权模式一个在高风险动作前问一句“这样可以吗”的 agent仍然是在给自己当警察——插件、子 agent 或被注入的提示都能绕过 harness而且即便在获得批准之后agent 执行的也可能与它展示给用户的并不相同。企业级的人工介入要求更高策略必须要求一名被授权主体——有时并非 agent 所代表的那个人——就这一确切动作给出批准执行点才放行并且没有任何协议天生符合 SOX 合规。读者将看到两种 HitL 模型的实战拆解、一套严肃授权系统必须满足的评判标准以及现有模式与规范草案相对这些标准的对照。按提交信息文本查找 Git 提交Git 允许你用提交信息而非 SHA 来命名一次提交——git show :/fix typo会解析为提交信息匹配该正则的最近一次提交。任何串联 git 命令的人都感受过那种摩擦在 git log 里翻找哈希、复制它然后再跑你真正想跑的命令因为 SHA 难记而 HEAD~3 这类相对引用在历史一动就漂移。读者将得到:/text语法、正则优于哈希或相对位置的时机以及一个提醒一个每天用几十次的工具仍然藏着你没读过的招。关于 KPI 的这个事实可能会让你意外真正做产品的人没有一个在乎 KPI——James Bach 在一家中型软件公司的流程改进需求会议上统计到这个词的提及次数为零整场讨论始终停留在真实问题与解法上。这种缺席正是重点一位要求给出管理测试工作 KPI 的潜在客户被告知一个都不该有因为把组织降格为一场简陋指标游戏与卓越背道而驰。读者将得到他给出的替代方案——听人说话、观察实际工作、奖励诚实以及雇佣你尊重的人并尊重他们。为什么 agentic AI 要从遗留系统现代化开始Suzanne Angell系统之所以成为遗留与年龄几乎无关——不少几十年前建成的平台至今每天都在毫无差错地处理支付与公民记录真正的标记是无法适应。Agentic AI 抬高了赌注agent 只能基于它真正够得到的信息与系统做推理和行动然而许多组织正把自治 agent 接到几十年前建成的技术资产上——脆弱的集成、不全的文档以及集中在少数人手中的知识让变更风险陡增。读者将看到一份坦率的论述为什么技术债只是问题最小的一部分——运营债、流程债与组织债影响更大——以及现代化必须先交付什么agent 才能创造真实价值。两个 Flink 自动扩缩器的故事Netflix 自建了 Flink 自动扩缩器在超过 30,000 个流处理作业上跑了数年如今正有意识地让它退休、转而采用 Apache Flink 社区的版本——一个自动扩缩器就已经比他们想要的多了。在那个规模上按峰值配置浪费钱、按均值配置产生延迟而每一次扩缩动作都要在持有 TB 级状态的有状态作业上花掉数分钟的保存点与重启。读者将看到这次迁移背后的惨痛教训指标、成本与维护这几笔账揭示了在什么时候自建基础设施胜过直接采纳。使用 AI 一年后的一些反思摘要已生成112 词。已将这个新的实例类型追加到摘要质量记忆中。用 Robocopy、SMB Multichannel 把 Synology NAS 迁移到 UniFi UNAS Pro 8以及那些出人意料的性能陷阱那个让 Robocopy 在 2007 年不稳定连接上变得安全的开关恰是在 10 千兆局域网上毁掉它的那个/Z 可重启模式把一场本该平淡的 Synology 到 UNAS Pro 8 文件迁移拖成了龟速。资源管理器中途以“文件系统限制”错误退出Robocopy 走得更远些却在 92% 处死在 Windows error 665 上出错文件是 05 Wires.m4p——一个毫无特别之处的名字——于是特殊字符与文件系统宽容度差异这些常规嫌疑人全都解释不了。读者将看到完整迁移走查该删掉和该加上哪些 Robocopy 开关、SMB Multichannel 在高速链路上的表现以及藏在这场本该平淡无奇的拷贝里的性能陷阱。一个关于数据泄露宣称、核验与 Carhartt 的警示故事ShinyHunters 抛出的 Carhartt 语料里掉出近 2500 万个唯一邮箱地址——按 Have I Been Pwned 自己的提取器算是 24,876,077 个——而这个头条数字最终没能经受住核验。泄露计数具有欺骗性犯罪分子会夸大宣称而一旦有服务公布某个数字其他分析师便停止核验、直接复述虚高数字正是这样在整个行业里扩散开来。读者将看到 Troy Hunt 端到端的核验工作流——提取计数、与新闻及行业评论交叉比对、以及 AI 辅助分析——外加在通知数百万人之前应当怀疑任何泄露宣称的教训。☕ JVM周报本周要点往期精选Java周刊2026W35 | JDK 28 值类、Spring Boot 4.1.1、Spring AI 2.0.1、Quarkus 3.39.1、GraalVM 25.3.4.1Java周刊2026W34 | JEP 540 瞄准 JDK 28、A2A Java SDK 1.2.0、LangChain4j 1.19.0、Stubborn Contract 0.1.0Java周刊2026W33 | IntelliJ IDEA 开放 LSP、Spring Boot 4.1 支持 gRPC、Elasticsearch 9.5.0 发布、Java 转高频安全更新PHP周刊2026W35 | PHP 8.6.0 Beta 1发布、Laravel 13.25全局暂停队列、NativePHP v4原生UI、Symfony 8.2密集冲刺Go周刊2026W36 | Go 1.27.1 发布、TinyGo 0.42、HTTP/2 原生迁入 net/http、quic-go 0.62Rust周刊2026W36 | rustup 1.29.1 更名 target tuple、Wasmi 2.0 提速 2.2 倍、Box map 稳定化、aarch64 FFI 传参修复、Cargo feature 元数据阅读原文
