本周主线是 Java 生态的安全修补与性能提速。JDK 27 让 Curve25519 域运算最高提速 54%,Micronaut Core 5.1.14 一口气修补三个安全公告,Elasticsearch 9.5.3 也修掉多处危险边界。工具链方面,Spring Tools 5.4.0 以 Claude Code 插件形式发布。
🌱 Spring生态
Bootiful 播客:BellSoft 的 Catherine Edelveis 谈加固运行时镜像、容器安全等
用手写的 Dockerfile 发布 Spring Boot 应用,会悄然留下大多数团队从未审计过的安全缺口。这种"随手写个 Dockerfile"的习惯会把臃肿的基础镜像、默认 root 权限和过期的 CVE 一并打包进去,迫使工程师在部署之后再临时补救,而不是从一开始就加固。BellSoft 的 Catherine Edelweiss 解释了构建包与预加固运行时镜像是如何翻转这一默认状态的,以更少的 YAML 带来更强的安全性和更干净的配置。本期节目剖析了容器加固的权衡、合理的 JRE 默认值,以及适合想要更安全镜像又不想重写流水线的 Spring 团队的实用构建包工作流。
Spring Tools 5.4.0 发布
Spring Tools 5.4.0 现以 Claude Code 插件的形式发布------这是一个 AI 编码智能体,与 Eclipse、VS Code、Cursor 和 Theia 并列成为一等的 IDE 目标。企业级 Java 工具链正在 AI 原生编辑器之间分化,迫使 IDE 厂商前往开发者如今工作的地方与之会合,而不是假定存在一个标准编辑器。该版本涵盖针对 @ApplicationModuleListener、@SpringJUnitConfig、@RestController 和 @Scope 注解的新校验与快速修复,一项可呈现项目逻辑结构的 Claude Code/MCP 增强,快速修复与仓库版本校验的显著提速,更可靠的源码索引,以及升级到 Eclipse 2026-09。
📦 版本发布
Jetty 12.1.13
一个在 45% 的 CI 构建中失败的不稳定测试终于被修复。Jetty 12.1.13 直面维护成熟 Java 服务器的朴素现实:连接失败处理、multiPart 合规性、FCGI 查询解析,以及容易引发 NPE 的符号链接检查------其中任何一个被忽视的边缘情况都可能波及生产环境。本次发布汇总了认证与安全修复(SignInWithEthereum、会话持久化、CIDR 大小写不敏感)、HashLoginService 与 HttpClient 配置新增项、依赖清理以及社区贡献的补丁------一份清晰的变更清单与升级理由。
W3C 启动支持开源项目计划的首个试点
Elasticsearch 9.5.3
此前一次索引压力拒绝就可能让整个批量分片请求失败------Elasticsearch 9.5.3 终结了这一点。这个补丁版本对抗的是一长串危险的边缘情况:极端的 min_hash 设置触发整数溢出和内存溢出错误、列式模式下错误的 MV_MIN 和 MV_PERCENTILE 结果、节点关闭时的 translog 资源泄漏,以及 _field_names 词项上失效的字段级安全过滤。它还加快了索引合并期间的向量量化校准,并为审计记录原始 protobuf 请求体。发布说明为升级的运维人员详述了每一项增强和修复。
Micronaut Core 5.1.14
Micronaut Core 5.1.14 一口气修补了三个安全公告,其中两个是拒绝服务缺陷。碎片化的 WebSocket 消息可能触发无界内存增长,而通过无界 gzip/deflate 解码发起的 HTTP 请求解压炸弹可能耗尽服务器内存;另外,默认的错误响应会泄露原始异常消息且没有抑制选项,将内部信息暴露给攻击者。任何在生产环境运行 Micronaut 的人都面临真实的可用性和信息泄露风险。发布说明涵盖了每一项公告、受影响的组件,以及从 5.1.13 升级到 5.1.14 即可获得的修复。
📖 文章与教程
从规范驱动开发到 Java 项目中的活规范
一篇聚焦 Java 的有趣文章,探讨一种更持久的模式:让规范更贴近代码,从而在系统演进过程中始终保持可用、可测试、鲜活有效。
用 Java 软件与内建函数加速 Curve25519 域运算
仅通过扩大 Curve25519 内部域数据结构,JDK 27 的 X25519 吞吐量就提升了最高 54%------无需改动算法。这些运算支撑着密钥协商、Ed25519 签名以及 TLS 1.3 的 X25519MLKEM768 后量子混合组,而在后量子迁移加速的背景下,握手的每一毫秒开销都至关重要。JDK 28 随后在此基础上叠加针对 x86_64 和 AArch64 的架构专属内建函数,再提升最高 20%。文章详述了各算法的具体收益、受影响的 JCE 与 JSSE API,以及哪些构建版本会提供这些改进。
在不破坏 Spring Security 的前提下调试 HTTP 403
你在 Spring 控制器里设的断点永远不会触发------403 会在你的代码运行之前就终止请求。授权可能取决于多个 SecurityFilterChain bean、匹配器顺序、激活的 profile 以及条件注册的配置,因此只阅读你能找到的 SecurityConfig 类,并不总能揭示运行中应用的实际要求。IntelliJ IDEA 的安全内联提示会显示任意端点的实时角色要求,将自定义 AuthorizationManager 规则标记为未知,并直接链接到真正的配置代码。读者将了解这些内联提示的工作原理、如何检查运行时安全配置,以及如何在不重启、不关闭任何东西的情况下调整端点授权。
针对缺失的可选依赖测试你的自动配置
一个与 spring-web 毫无关系的 bean,在 spring-web 缺失的那一刻就会在启动时崩溃------然而 Spring Boot 自带的 FilteredClassLoader 测试工具却无法复现这一故障。罪魁祸首是 Class.getDeclaredMethods():当 OnBeanCondition 检查单个方法的返回类型时,JVM 会解析该类中的所有签名,因此一个无法解析的返回类型会在这个无关 bean 中触发 NoClassDefFoundError,而 @ConditionalOnClass 也救不了你。文章解释了 FilteredClassLoader 为何会漏掉这一点,并提供了一个小巧的 HidingClassLoader,可忠实复现缺失可选依赖的场景。
未发现数据库操作:编写 Spring Boot 分析器让我对 Spring 的领悟
一个用于追踪 Spring Boot 端点的静态分析器自信地报告说,某个端点没有触碰数据库、没有开启事务、也没有发布消息------而实际上它这三件事全做了。工具失败的原因在于:Spring 会执行源码中任何可见调用都没有触及的代码,而像读 pull request 那样沿着 handler 到被调用者的路径去阅读代码库,会完全错过这一点。在 Spring PetClinic REST 上测试时,它暴露了 10 个控制器和 528 个方法,却只检测出单个端点------一个 Swagger 重定向------而实际路由大约有 36 条,因为映射注解位于接口上。文章剖析了这些"自信的缺失"类 bug,以及 Spring 的隐式装配究竟做了什么。
在不妨碍分析的前提下对 JVM 线程转储做脱敏
把生产环境的 JVM 线程转储上传到第三方分析器,往往是被政策禁止,而非个人偏好。难点在于你不能简单地剥离一切:包名、类名、方法名和源文件名共同构成了一幅可用的代码库地图,而像 sync-tenant-acme-prod 这样的线程名会泄露租户和环境细节。文章介绍了 tm-anon,一个 MIT 许可的小型 CLI,它能在本地重写转储、同时保持分析结果完整,并阐述了在不破坏结构的前提下对结构进行匿名化的设计约束。
用 Firmata 将 Raspberry Pico 带入 Quarkus
Java 的名声是 API、数据库和云------然而一个新的 Quarkus 扩展如今让它能够在 Raspberry Pi Pico 上读取传感器并驱动电机。难处在于:传统上每一次引脚变更都迫使开发者重新编译并向微控制器上传新固件,让硬件迭代慢得令人痛苦。Quarkus Firmata 通过把 firmata4j 与 ConfigurableFirmata 配对绕开了这一点,让开发板运行通用固件,而主机通过 USB 串口发送配置命令。你将看到该扩展架构的导览、其 MVP 功能集------数字与模拟 I/O、PWM、串口通信------以及 Firmata 受 MIDI 启发的二进制协议如何让这一切运转起来。
React Router 8.4 减少重渲染
Java 内存管理原则
Java 被称为"内存吞噬者"的名声可能完全反了------其他语言因为用得内存太少,或许才是浪费的那一方。JDK 的垃圾收集器建立在一些有意的设计选择之上,这使它们与别处的收集器截然不同,而 RAM 与 CPU 之间的关系远没有大多数开发者以为的那样显而易见,它正悄然塑造着应用性能。JDK 的收集器为何这样设计、内存管理在实践中如何驱动性能,以及为何 RAM 与 CPU 必须始终放在一起权衡,为开发者提供了一个更清晰的思考框架来评估这些取舍。
Quarkus Insights #258:Quarkus 特性开关
Quarkus 如今提供了一等的特性开关扩展,零外部基础设施即可运行------无需开关管理服务器,也无需付费 SaaS 订阅。像 OpenFeature 和 Unleash 这样的现有方案会带来沉重的依赖,而团队仍然需要静态配置根本无法提供的运行时开关和增量发布能力。文章涵盖了统一 API、CDI 集成、数据库支撑的开关、安全身份上下文、Dev UI 编辑和 Qute 服务端渲染,以及近期由 CVE 驱动的补丁版本和即将到来的 Quarkus 4 alpha 预览。
Kotlin 2.4.20 发布
协程堆栈跟踪恢复功能终于在 Kotlin 2.4.20 中落地,同时捆绑了 Swift 导出特性以及为 SwiftPM 依赖自动生成的 Package.swift 文件。多平台开发者长期苦于难以理解的异步堆栈跟踪和繁琐的手动 Swift 集成,这些摩擦正悄然拖慢各团队对 Kotlin/Native 和 Wasm 的采用。发布说明逐一拆解了标准库、Kotlin/Native、Wasm、JS、Gradle 9.7 支持、构建工具 API 以及带有独立原生镜像的新 kotlinr 运行器中的每一项变更。
Kotlin Toolchain 0.12:多平台库发布、Wasm 应用等
Kotlin Toolchain 0.12 终于让你能用与纯 JVM 库完全相同的配置来发布多平台库。这一点很重要,因为此前多平台发布是碎片化的------公共 API、各平台产物、源码、模块元数据和 cinterop 绑定都必须分别处理,而 Sonatype 即将实施的 Maven Central 配额会抬高配置出错带来的代价。该版本还预览了 Wasm 应用支持,并新增了命令行 Compose 热重载;同时 klibs.io 目前已在生产环境于 JDK 21 和 Spring Boot 4 上运行该工具链------文章梳理了哪些功能已交付、如何工作,以及哪些仍未覆盖。
Quarkus 3.39.2、3.33.3.2 LTS、3.27.5.2 LTS------维护版本
三个 Quarkus 发布线------3.39.2,外加 3.33.3.2 和 3.27.5.2 LTS 分支------同时发布以修补安全 CVE。有意冻结版本号的长期支持用户,在漏洞出现时仍面临被迫升级,使维护版本成为稳定性与安全性之间反复出现的张力。文章详述了其中包含的缺陷修复和文档改进,确认该更新对现有 3.39 用户是安全的,并为计划升级的人指明了 CLI 更新路径、3.39 迁移指南以及完整的 GitHub 变更日志。
计算领域最古老的架构
Werner Vogels 从大脑中寻找有用的智能体记忆应如何运作的模型。一个引人入胜的论点:可信、自主智能体的下一次突破,可能来自研究我们所知最古老的计算架构。
Astra for Coding:我们为什么又做这件事?
Armin Ronacher 称 GPT 6 Astra 令人印象极其深刻,但同时承认他完全不知道如何真正用它来做软件工程。他把整个 AI 工程领域概括为"内卷",即投入越来越大的努力与竞争,却无法提升人均产出,留下的模型一味追逐基准测试,产出的却是"垃圾",而非可用的软件。在把一次完整的 ChatGPT token 重置额度烧在一个由自我管理的子智能体组成的周末"软件工厂"之后,文章分享了实际产出了什么代码,以及这揭示了与这类模型协作的哪些真相。
LLM 作裁判的生命周期:规模化地构建、对齐与监控
一个悄然漂移并开始批准有害输出的 LLM 裁判,在下游任何地方都不会触发警报。随着团队规模化地生成文本,人工审核变得不可能,于是 LLM-as-a-Judge 代替人类评审员------快速、廉价且易于部署,却引出一个更难的问题:谁来评估评估者?若不加锚定,它会无形地退化。文章以推荐解释为贯穿示例,描绘了裁判的四阶段生命周期------基于人工标签构建、与人类偏好和推理对齐、在人类设定的策略下运行,以及在数据和使用方式变化时持续监控------让团队能够长期保持其裁判的可信度。
你的 AI 智能体可曾运行过调试器?一个 JVM bug,两次智能体运行
大多数 AI 编码智能体从不运行调试器------它们读一下堆栈跟踪,然后猜测。这种猜测是有代价的:当一个 Kotlin 插件通过一次无保护的 java.nio.file 调用在 Windows 受保护的 C:\Config.Msi 目录上崩溃时,模型在从未执行过出错代码的情况下就提出了补丁,使根本原因未经验证。文章让一个真实的 JVM bug 走完两种智能体调试工作流并对比记录,展示仅靠推理会在哪里失败,以及实际执行如何捕捉到那些看似合理的补丁所遗漏的问题。
从零构建一个 AI 智能体
一位评审将这本 29 美元、315 页的 Manning 图书与《Kubernetes in Action》并列,视为少数几本真正重塑了他对某个领域思考的技术书之一。然而如今大多数工程师每天都在使用 AI 智能体,却并不理解底层的智能体循环、工具使用或 MCP,而且几乎没有人会从零构建一个。全书 10 章从基础的 ReAct 智能体一路讲到 RAG 知识库、记忆、规划与反思、代码执行和多智能体编排,同时指出智能体评估是薄弱环节,值得在未来的版本中加强。
潜在的力量
一个从亚马逊订购的廉价 CarPlay 加密狗,到货时搭载的 SoC 与宣传完全不同,却仍被破解以运行自定义固件。这些中国产的桥接设备没有文档、批次之间规格不一致,而且极易变砖,迫使作者逆向工程烧录流程,并借助 LLM 协助移植基于 Rust 的 CatPlay 协议。文章涵盖了识别意外硬件、为意料之外的 SoC 编译,以及在让原生 CarPlay 直通的同时运行你自己的代码。
JetBrains IDE 中 WSL 支持的演进
在 2026.2 版本中最终确定一个推荐的入口点之前,JetBrains 尝试了三种不同的 WSL 集成方案。多年来,IDE 的体验完全取决于你如何打开 WSL 项目,因为每个入口点都依赖不同的底层架构,导致性能和能力不一致。原生模式如今让 IDE 保持为 Windows 应用,同时由 WSL 内部的轻量级代理处理文件和进程,从而降低延迟。文章追溯了这一演进历程------从早期的 9P 传输协议、远程开发到 WSLg------然后审视原生模式如何为终端、调试和分析实现接近原生的速度。
Playwright 1.63
从 OpenTelemetry 到 DuckDB
如今只需一条 shell 管道,就能直接对生产遥测数据运行 SQL,无需中间文件,也无需导入步骤。可观测性平台迫使你在它们内部使用其自有查询语言和仪表盘进行分析,这对于你已经知道自己要问的问题尚可应付,但面对临时性问题就会力不从心,比如快速算个百分位数、按状态码做个透视,或者弄清到底是哪个服务在吞噬延迟预算。文章逐步演示了如何通过 OpenTelemetry 的 span、日志、指标和 trace 将进程内分析数据库 DuckDB 接入 Dash0 CLI,然后展示了一旦跑通后你能构建的黄金信号、延迟直方图和 Parquet 转换。
往期精选
- Java周刊2026W37 | Quarkus 三维护版齐发、Micronaut 三公告、Kotlin 2.4.20
- Java周刊2026W36 | JDK 28 值类预览、Spring Boot 4.1.1、Spring Cloud 2025.1.3、Quarkus 3.39.1
- Java周刊2026W35 | JDK 28 值类、Spring Boot 4.1.1、Spring AI 2.0.1、Quarkus 3.39.1、GraalVM 25.3.4.1
- 2026年9月编程语言排行榜|Julia 逼近前 20
- Rust周刊2026W37 | never 类型稳定、Rustls 十年零破坏、Allocator 逼近稳定
- Go周刊2026W37 | Ebitengine 纯 Go 化、simd 重写 TurboPFor、json/v2 落地