Java周刊2026W32 | JDK 28 jlink插件、Spring AI 2.0、Hibernate 7.4、Quarkus 3.37.4、GraalVM 25.2

本周 Java 生态动态密集:JDK 28 新增 jlink cacerts 插件精简信任库,Hibernate 7.4 将逆向工程并入核心仓库,Spring AI 2.0 发力企业级 AI;Quarkus 3.37.4、GraalVM 25.2、Zuul 4.1.3、Micronaut Core 5.0.7 接连发布维护版,另有虚拟线程池化、AI 凭证安全与 MCP 开发等深度话题。

🌱 Spring生态

A Bootiful Podcast:Java 开发者倡导者 Billy Korando 谈 Java 27 及更远的未来

Spring Office Hours 播客:S5E19——Docker、Compose、Testcontainers,天哪!

📦 版本发布

Quarkus 3.37.4

一条命令就能把 Quarkus 应用从 2.x 一路升级到 3.37。仍停留在旧版本上的团队一直在错过累积的 bug 修复,而跨大版本迁移恰恰是 Java 代码库可能面临的风险最高的升级。这个新的维护版本捆绑了 quarkus update 工作流、迁移指南中要求的调整,以及完整的 3.37.4 变更日志,帮助你安全地赶上进度。

GraalVM Community 25 Innovation 2

GraalVM Community 25 Innovation 2 基于 JDK 25.0.4 发布,内置提前编译(ahead-of-time)的 Native Image——Java 工作负载启动只需毫秒级,堆内存占用只有通常的一小部分。原生二进制长期以来一直是 Java 应对冷启动和内存压力的答案,但它们要求额外的一步构建时编译,打破了熟悉的编译-重载 IDE 循环。发布说明详细介绍了 25.2 的新内容,以及适用于多语言工作负载的 Docker 镜像和独立的 Python、JavaScript、Node.js 运行时。

Zuul 4.1.3

Zuul 4.1.3 作为一个修正补丁发布,唯一的改动是回退到之前的 parsePath 逻辑。早先的 v4.1.2 重构显然破坏了 URL 路径解析——对于在 Netflix 规模下为每个 API 请求把关的网关来说,这是一个高风险故障。发布说明介绍了 jguerra 在 PR #2202 中的一行回退,恢复了久经考验的解析行为,同时让代码库其余部分保持原样。

Micronaut Core 5.0.7

📖 文章与教程

自构建 Agent:一次 LangChain4j 实验

把 LangChain4j 文档交给 LLM,让它自行设计一个 Agent,这是对典型 Agent 教程的一次有趣反转。有点“元”,但值得一读。

虚拟线程:缓存还是不缓存

Quarkus 团队对比测试了池化虚拟线程是否划算——数据证实了 Loom 官方的建议:不要。复用虚拟线程的朴素理由看起来很诱人,因为每个虚拟线程都会分配一个 Thread 对象、一个线程本地 HashMap 以及内部调度结构。但在典型的企业 HTTP 工作负载下(事件循环把阻塞 I/O 交给虚拟线程),真正的原因比“它们已经足够便宜”更深层。文章详细介绍了基准测试——一个 Netty 服务器在 8 核上处理 10,000 个并发连接、每次 30ms 阻塞调用——以及 Loom 的调度行为揭示了为什么池化实际上是有害的。

为 Java MCP 工具开发配对进程内与托管 Embedding

Model Context Protocol 标准化了工具契约,但它返回的评分仍受制于 embedding 模型:每个 .dnet scorer 文件只适用于它训练时所用的精确 embedding 表示。在 JavaOne 2026 展示的 AI 分诊管线中,这种配对决定了患者投诉的紧急度评分是否可信,而即使调用方看到的是相同的稳定 MCP 接口,切换模型也会悄悄使已训练的 scorer 失效。文章详细介绍了 urgency-mcp 的设计决策,从训练管线到进程内与托管 embedding 的配对,让团队能够在不损失评分保真度的前提下,将消费者与服务特定的 API 解耦。

Java 新增季度间安全更新:CSPU 对你的发布管线意味着什么

使用 Hibernate 7.4 和 IntelliJ IDEA 进行逆向工程

从 Hibernate 7.4 开始,数据库逆向工程离开了长期独立的 Hibernate Tools 项目,进入核心仓库,可以直接通过 Maven、Gradle 甚至 Ant 构建插件使用。这很重要,因为在数据库优先和遗留项目中,根据现有 schema 手写 JPA 实体和映射文件既慢又容易出错——而这正是这次整合要填补的缺口。文章演示了 Hibernate 7.4 基于 XML 的逆向工程工作流,包括 hibernate-reverse-engineering.xml 的自定义,并与 IntelliJ IDEA 内置生成器做了对比,以便你根据场景选择合适的工具。

编写一个 Thymeleaf 组件库

服务端 Thymeleaf 应用通常意味着为每个页面手写相同的 HTML 和 CSS——可复用的组件库可以改变这一点。Spring Boot 和 Thymeleaf 没有内置组件方案,因此团队只能复制粘贴视图标记,把时间花在处理 Spring/Thymeleaf 集成样板代码上,而不是构建 UI。这个系列展示了如何编写一个自动配置的 Thymeleaf 组件库,任何 Spring Boot 应用都可以用最少的配置直接接入,涵盖项目搭建、组件编写、插槽(slots)和 AlpineJS 交互。

JDK 28 允许你构建自定义运行时镜像,其信任库只包含你的应用实际需要的 CA 证书——精确到像 letsencryptisrgx1 这样的特定别名。默认运行时镜像捆绑了一个完整的 cacerts 密钥库,所以每个多余的根 CA 都是你的应用默默接受的信任边界;手工修剪 cacerts 一直既繁琐又容易出错,一旦弄错就会以难以调试的方式破坏 TLS。新的 jlink --cacerts 插件接受一个或多个以逗号分隔的密钥库别名,并为你的自定义运行时生成一个最小的、应用特定的信任库。

KotlinLLM 即将开源

LLM 通常只在开发期间提供协助——KotlinLLM 则在一个已编译的 Kotlin 应用中执行 LLM。如今的运行时 LLM 方案迫使你在每次请求都调用模型和运行独立 agent 之间做取舍,这也是为什么在运行时委托逻辑一直很少见。这个 JetBrains 研究原型现在以 Apache 2.0 协议开源,作为一个 IntelliJ IDEA 插件,引入了 Smart macros——纯 Kotlin 函数调用,其函数体是随每个新的运行时场景而演化的生成代码——在两个 Kotlin/JVM 项目上的测试表明,持续的运行时演化是可行的,文章也记录了它的局限。

RFC 9880 与 IoT 验证问题

五个 IoT 生态以五种互不兼容的方式描述同一个恒温器——而罪魁祸首并不是协议本身。CoAP、MQTT 和基于 TLS 的 HTTP 在拥有数千个异构终端的工厂里运行良好;真正的摩擦来自语义层面,LwM2M 和 OCF 传感器通过不兼容的数据模型报告相同的温度,而 Digital Twins 让这个鸿沟变得更糟。RFC 9880 的语义定义格式(SDF)用基于 JSON、与生态无关的设备描述来解决这个问题,文章梳理了 SDF 的起源、设计,以及一个把 SDF 验证当作编译问题来处理的验证器——其中最有价值的是中间格式,而不是引擎本身。

AI 找到了 Bug,谁来修补你的 EOL Java 代码?

保护你的 API:面向初学者的 OAuth2 与 JWT

API 是攻击者的首选目标,但在不牺牲可用性的前提下保护 API,仍然是 API 开发中最耗时的部分之一。两个常被视为竞争对手的流行词让事情更加混乱——OAuth 2.0 和 JWT 其实是互补的:一个负责委托授权,另一个以紧凑、可验证的令牌承载身份。这个入门教程剖析了认证与授权的区别,以及在 Spring Boot 后端中组合两者的最高效方式,Ktor 配套指南也即将推出。

第 63 期:用 Spring AI 2.0 构建 AI 解决方案 [I/O]

Spring AI 2.0 证明了 Java 不会在 AI 竞赛中退场——该框架 2026 年 6 月的发布在企业 AI 上加倍投入。虽然 Python 主导着 AI 研究,但大多数企业系统仍然运行在 Java 上,团队在炒作驱动的工具中努力构建确定性 agent 和可靠的 AI 集成。在本期 JavaOne 2026 的 Inside Java 全新“Input/Output”节目中,Spring 开发者倡导者 Dan Vega 分享了关于确定性 agent、MCP 服务器和技能以及提示工程的实用建议,并解释了 Java 在 AI 解决方案上的丰富性究竟从何而来。

Serverless 的整洁架构:可以随处携带的业务逻辑

编排者的税负

子 agent 的真正价值不在于速度或并行——而在于它把什么东西挡在编排者的上下文窗口之外。每多一个 agent 就会消耗 token,并增加一股需要调和的结果流,一次使用四个子 agent 的真实会话,比它正在重构的代码更难推理。这篇文章主张把子 agent 视为编排者工作记忆的守护,并给出了何时以及如何委托的明确规则。

AI Agent 的凭证代理模式(第一部分):别把钥匙交给 Agent

对 AI agent 来说最安全的凭证,是它从不持有的凭证——因为不记名令牌对任何接触到它的人都有效。提示注入、数据外泄,甚至 agent 乐呵呵地把自己的 API 密钥交出去,都是同一种失败:凭证字节离开了 agent,却仍然有效。文章审视了 CB4A 草案,解释了为什么代理模型是唯一适配当今不记名令牌 API 的方案,以及如何在 agentgateway 中构建它。

开放权重的崛起,以及商业 AI 的没落?

OpenAI 和 Anthropic 的收入增速超过了几乎任何此前的科技公司——但它们的统治地位如今正受到开放权重模型的威胁,其中多数来自中国。前沿实验室在闭源开发上投入了数十亿美元,但开放权重的对手可能会在它们充分回收这笔投资之前就削弱它们。文章追溯了从 OpenAI 创立到 GPT-1 的故事,解释了什么是开放权重模型,以及它们为什么可能掀翻商业 AI。

抛异常、返回 Result,还是两者都不用?

缺货请求不只是需要记录的错误——它是可以喂给缺货需求报告的业务数据,而被拒绝的付款可以触发另一个流程。然而大多数代码把每个失败都强制塞进抛出的异常或 Result 返回值之一,而返回类型只回答了半个问题。文章主张在事件溯源系统中采用第三种方案——把业务失败建模为可查询、可投影的事件——并给出了何时抛异常、何时返回 Result、何时把失败作为数据持久化的标准。

Codeberg 引发分歧

一个由社区运营的 Git 托管平台刚刚投票决定封禁“大部分”由生成式 AI 编写的项目——这条界线连作者本人也承认无法可靠地套用到自己最近的代码上。Codeberg 的民主程序产生了这条规则,但民主既不能保证包容性,也不能保证可预测性,一个没有明确章程的民主化平台可能比公司还不可靠。模糊的中间地带把执法权交给版主和社区规范,而它们可能比书面条款更严厉;作者主张要么干脆禁止 LLM 参与,要么制定明确的规则来打击仓库垃圾信息和资源滥用。

把就绪性左移:AI 能为组织就绪性做什么(又不能做什么)

大多数转型失败不是技术失败——组织失败不是因为选错了平台或供应商,而是因为上游原因,比如目标不清晰、责任分散、决策迟迟不做。就绪性通常被当作治理、资金和团队结构的检查清单,而这个假设与现实之间的差距,恰恰是 AI 真正能有所作为的地方。文章拆解了组织就绪性到底是什么、左移在实践中意味着什么、AI 真正有用在哪、哪里必须牢牢由人来判断,以及其中涉及的数据伦理。

☕ JVM周报

如何创建一个 Spring Boot 欺诈评分服务

2026 年的大多数 Java AI 内容都是包一层别人的 API 然后附上 token 账单——这个教程反其道而行,用 Deep Netts 在 Java 中原生训练欺诈检测模型。Java 团队通常为 ML 单独搭建一个 Python 服务,这意味着要买一套第二运行时、一条额外的部署管线、每次预测都要经过一次网络跳转,外加一个把重新训练变成别人工单的团队边界。文章演示了在 Kaggle 交易数据集上训练、把序列化模型加载进 Spring Boot bean 实现进程内微秒级预测,以及决定真实世界成败的运维细节:线程安全、有意的决策阈值、健康检查和模型版本管理。


往期精选


阅读原文


扫码关注「右耳朵猫AI」

扫码关注「右耳朵猫AI」

posted @ 2026-08-08 14:37  右耳朵猫AI  阅读(27)  评论(0)    收藏  举报