本周 Java 生态迎来重磅更新:Spring AI 2.0 正式发布,将工具调用提升为一等公民;Spring Boot 4.1 新增 gRPC 自动配置和 SSRF 防护;Hibernate 8.0 Beta1、Quarkus 3.37.0 等框架密集更新。此外,Project Valhalla 深入解析系列文章详细介绍了 JDK 28 中的值类模型。
🌱 Spring
Spring AI 2.0 中的工具调用:一种可组合、智能体的架构
Spring AI 2.0 本周发布(见下文),将工具调用提升为一等公民,使智能体循环更易于观察、组合和扩展。对于在 Spring 上构建智能体系统、且需要超越黑盒函数调用的开发者来说,这是一篇值得阅读的力作。
Java 微服务能像 Go 一样快吗?2026 基准测试更新
本文通过 2026 年的最新基准测试,深入探讨 Java 微服务在性能上能否与 Go 比肩,揭示关键优化点与实际差距。
Introducing Quarkus Data:统一的数据访问网关
Quarkus Data 作为统一的数据访问网关正式发布,旨在简化 Java 应用中多种数据源的访问和管理。
double、BigDecimal 还是定点数?
文章深入比较了 double、BigDecimal 和定点数三种数值类型在精度、性能和适用场景上的差异,帮助开发者在金融计算等高精度场景中做出正确选择。
Spring vs Quarkus vs Jooby vs Vert.x:如何选择下一个 Java 框架
对 Spring、Quarkus、Jooby 和 Vert.x 四大 Java 框架进行全面对比,从性能、生态、学习曲线等维度帮你做出明智的技术选型。
Oracle 的 OpenJDK 禁止生成式 AI 贡献,而 GraalVM 却允许
Oracle 在 OpenJDK 项目中明确禁止生成式 AI 提交的代码贡献,而其旗下的 GraalVM 项目则允许使用,这一双标政策引发了社区的广泛讨论。
智能体编码如何帮助您更快地迁移 Java 应用程序
本文探讨了如何利用智能体编码(Agentic Coding)技术加速 Java 应用程序的迁移过程,降低迁移成本和风险。
简化 ZGC 中的弱引用处理
文章介绍了 ZGC 垃圾回收器中弱引用处理机制的简化方案,旨在提升性能和代码可维护性。
使用 OpenTelemetry 和 Dash0 观测 Apache NetBeans
本文演示了如何通过 OpenTelemetry 和 Dash0 对 Apache NetBeans IDE 进行可观测性监控,获取性能指标和追踪数据。
Ask a Lille Dev:Java 开发者对质量、框架、社区和职业的真实看法
一项针对 Java 开发者的深度调研,揭示了他们对代码质量、框架选择、社区生态和职业发展的真实想法和偏好。
微服务与 AI 智能体的区别
文章深入剖析了微服务架构与 AI 智能体之间的本质区别,澄清常见混淆,帮助架构师理解两者的适用场景。
构建可靠的智能体 AI 系统
本文提供了构建可靠智能体 AI 系统的实践指南,涵盖可观测性、容错机制、状态管理等关键设计原则。
AI 是否永远打破了软件安全?
文章探讨了生成式 AI 对软件安全领域带来的颠覆性挑战,从代码生成漏洞到新型攻击面,分析安全防护的应对之道。
Ponytail?YAGNI!以及提示词基准测试的问题
本文以犀利的视角审视了软件工程中的过度设计倾向,并批判性地分析了当前 LLM 提示词基准测试的局限性。
什么才是好的技术转型
文章探讨了什么是真正成功的技术转型,从战略规划、团队协作到落地执行,提供了一套可借鉴的评估框架。
Foojay 播客 #98:JNI 之痛的终结——WebAssembly 如何悄然取代 Java 中的原生库
本期 Foojay 播客探讨了 WebAssembly 如何作为一种替代方案,逐步取代传统 JNI 在 Java 中调用原生库的角色,带来更安全、更跨平台的体验。
AWS 上无服务器 Java 的实用性能调优
本文为在 AWS Lambda 上运行无服务器 Java 应用提供了实用的性能调优技巧,涵盖冷启动优化、内存配置和依赖精简等方面。
Spring AI 2.0 正式发布!
Spring AI 2.0 正式版本现已可用,带来了以工具调用为核心的智能体架构升级。
Spring Tools 5.2.0 发布
Spring Tools 5.2.0 版本正式发布,带来了多项改进和 Bug 修复。
Spring AI 1.0.9 和 1.1.8 现已可用
Spring AI 1.0.9 和 1.1.8 维护版本现已发布,包含问题修复和稳定性提升。
Hibernate 8.0.0.Beta1 发布
Hibernate 8.0.0 首个 Beta 版本发布,标志着下一代 ORM 框架的重大演进。
Quarkus 3.37.0 发布
Quarkus 3.37.0 版本正式发布,包含新特性和性能优化。
Micronaut Core 5.1.1 发布
Micronaut Core 5.1.1 维护版本发布,修复了若干问题。
Helidon 4.5.0 发布
Helidon 4.5.0 版本正式发布,带来新功能和改进。
Grails 7.1.2 发布
Grails 7.1.2 维护版本发布,包含多项 Bug 修复。
Zuul 3.6.14 发布
Zuul 3.6.14 版本发布,包含稳定性改进和 Bug 修复。
A2A Jakarta 1.0.0.CR1 发布!
A2A Jakarta 1.0.0 首个候选发布版本正式推出,标志着智能体间通信协议规范迈出重要一步。
📖 JVM文章
2. 开端——2014 年、“六个博士”和五个原型
Project Valhalla 于 2014 年正式启动。James Gosling 当时将其描述为“六个博士纠缠成一个结”,这绝非夸张。有趣的是,这个想法比项目本身还要古老:Java 的创造者在 1995 年语言首个版本时就想要值类型,但当时他们放弃了。
3. 思想的演变——命名的过山车
如果你曾试图了解 Valhalla 却被一堆矛盾的术语劝退,这不是你的错。这里的命名经历了几次变更,而且不仅仅是表面改动:每次命名变更背后都代表着模型的变化。让我们追溯这个过程,因为它最能说明这个特性是如何被设计出来的。
5. 实际示例——一步步对比改造前后
让我们以最简单的例子进行追踪,即使不了解 JVM 内部原理也能清晰理解。Valhalla 之前:final class Point { final int x; final int y; } 创建包含一百万个 Point 对象的数组时,每个 Point 对象都需要单独的内存分配和指针追踪。
最后——我经常遇到的那些问题
- 值类就是 record 吗?不,它们是两个正交的决策。record 意味着“放弃独立的内部状态”(内容 = 组件)。value 意味着“放弃身份标识”。你可以有任意组合:普通类、record、值类和值 record。2. 可以用 == 比较值对象吗?可以。
📚 JVM教程
1. 引言——这究竟是怎么回事
Valhalla 项目从诞生之初就秉持的口号是:“代码像类一样写,运行像 int 一样快。” 这一句话概括了整个项目的核心目标:我们希望编写具有方法、构造器验证和合理字段名称的普通可读类,同时让 JVM 能够像处理基本类型一样高效地对待它们。
4. Valhalla 如今的运作方式——JDK 28 中的值类模型
让我们进入具体细节。以下是我们在 JDK 28 中得到的完整方案。声明:通过添加 value 修饰符创建值类:value class USDCurrency implements Comparable<USDCurrency> { private int cents; // 隐式 final }。
📝 JVM简讯
8. 总结
为什么我称这是平台历史上最大的变革之一?因为 Valhalla 并非在语言上再增加一个特性,而是动摇了其最深层的假设。自 1995 年以来,“每个对象都有身份”这一直是 Java 的真理,是一切的基础。允许程序员选择退出这一假设(决定哪些对象需要身份,哪些不需要)所带来的影响,甚至可能超过泛型。

2427

被折叠的 条评论
为什么被折叠?



