
本报告汇总了 InfoQ Java 编辑团队目前对 Java 领域内技术采用和新兴趋势的看法。我们重点关注 Java 语言、Java 相关语言(如 Kotlin 和 Scala)、Java 虚拟机(JVM)以及基于 Java 的框架和实用工具。我们讨论了核心 Java 的发展趋势,包括 Java 新版本的采用,以及Spring Framework、Jakarta EE、Quarkus、Micronaut、Helidon和MicroProfile等框架的演变。
本报告主要有两个目标:
1.帮助技术领导者做中长期技术投资决策。
2.帮助个体开发人员选择将宝贵的时间和资源投入到何种知识的学习和技能的开发。
这是我们发布的第 7 份 Java 趋势报告。不过,由于我们自 2006 年以来一直在内部跟踪 Java 和 JVM 的发展趋势,所以这一话题已经得到了广泛的新闻报道。
为了帮助 InfoQ 和 QCon 把握当前和未来的趋势,我们采用了Geoffrey Moore在其同名著作中首创的 “跨越鸿沟 ”技术成功心理模型。我们试图找出 Moore 所说的早期市场: “客户群由技术爱好者和有远见的人组成,他们希望抓住机遇或解决迫在眉睫的问题。“
与2024年、2023年、2022年、2021年、2020年和2019年的 Java 趋势报告一样,我们将首先呈现 2025 年的内部主题图:
方便起见,下面是 2024 年的内部主题图:
创新者
Embabel Agent Framework 和 Koog(分别由 Rod Johnson 和 JetBrains 创建)是面向 JVM 的新型开源代理平台,于 2025 年第二季度引入 Java 社区。这些框架旨在帮助开发人员构建并运行 AI 代理。
2025 年,Leyden 项目中的前三个功能随着 Java 24 和 Java 25 的发布而交付。第四个功能将作为即将发布的 Java 26 功能集的一部分。
备受期待的 Spring Boot 4.0 和 Spring Framework 7.0 GA 版本于 2025 年 11 月发布,提供 API 版本控制、弹性和来自JSpecify的空安全注解。
Jakarta EE 12 的开发工作于 2025 年初启动,远早于 Jakarta EE 11 的最终发布,涵盖了 24 项规范的制定与计划评审。生态系统新增了四项规范,其中 Jakarta Query 已获准纳入平台与 Web Profile。Jakarta EE 12 预计将于 2026 年 7 月发布。
早期采用者
随着包括 Open Liberty、WildFly、Payara 和 GlassFish 在内的许多 Java 项目被认证为兼容实现,Jakarta EE 11 上升到这一类别。
OpenRewrite 首次出现在这一类别中,因为许多项目已经使用这项技术进行了现代化。OpenRewrite 有两项值得注意的用途是迁移 javax 到 jakarta 命名空间,以及升级过时的 Jakarta EE 技术兼容性套件(TCK)。
随着GraalVM for JDK 23的发布,GraalPy 和 GraalWasm 正式被认定为稳定版本,适用于生产工作负载,因此进入了该类别。这些项目此前是作为 GraalVM 的实验性功能,于 2024 年首次亮相于创新者类别。
MCP Java SDK于 2024 年 12 月推出,是首次出现在这一类别中,因为它使 Java 应用程序能够通过支持同步和异步通信模式的标准化接口与 AI 模型和工具进行交互。
2025 年 5 月交付的 Spring AI 1.0 加入了其他生成式 AI 技术的行列。其核心功能包括:支持二十种 AI 模型的ChatClient接口,可处理多模态输入并生成结构化响应;作为拦截器链的 Advisors API,允许开发人员通过注入检索数据和对话记忆来修改输入提示;全面支持模型上下文协议(MCP)。
下面是几位 InfoQ Java Queue 编辑和 Java Champion 针对各种主题的讨论的简单汇总:
Michael Redlich:Java Champion | Garden State Java 用户组负责人 | Payara 合约开发大使和技术撰稿人 | InfoQ Java Queue 主编 | 埃克森美孚技术与工程公司退休高级研究技术员
Erik Coslow:Azul 产品管理高级总监 | InfoQ Java Queue 编辑
Karsten Silz:高级全栈 Java 开发人员 | InfoQ Java Queue 编辑
Trisha Gee:Java Champion | Gradle 开发大使
Marit van Dijk:Java Champion | JetBrains 开发大使
Richard Fichtner:Java Champion | XDEV Software 首席执行官 | JUG Oberpfalz 创始人 | JCON 联合组织者
Bert Jan Schrijver:Java Champion | OpenValue 首席技术官 | NLJUG JUG 负责人
我们还要感谢为我们更新 2025 年“跨越鸿沟”模型提供输入的 Java Queue 编辑:
Daniel Bryant:Java Champion | Syntasso 平台工程与产品营销 | InfoQ 新闻经理
Olimpiu Pop:技术咨询师 | InfoQ Java Queue 编辑
对于我们在内部主题图中对某些技术所做的归类,上述内容提供了更多的背景信息。
Java 和人工智能
Van Dijk:人们对使用 Java 进行 AI 开发的关注度越来越高,新工具也在不断涌现。Langchain4j 不断演进。今年,我们还见证了 Embabel 的问世——这是由 Spring Framework 创始人 Rod Johnson 打造的一个全新 JVM 代理平台。另外还有一项成果是Koog,这是一个基于 Kotlin 的框架,专为完全采用 Kotlin 惯用语法构建和运行 AI 代理而设计。看到在 JVM 平台上运用 AI 的选项越来越多,实在是件令人欣喜的事。
随着 AI 工具在软件开发中的使用,我们似乎正在重新发现软件工程实践。伴随规格驱动开发的发展,我们将良好的软件开发实践融入到了使用 AI 开发软件的过程中。
随着越来越多的代码由 AI 生成,而不是由开发人员编写,代码的可读性依然至关重要。正因如此,当我们看到 Java 语言及其工具仍然以使代码更易于阅读和理解的方式不断演进时,会觉得令人欣慰。
Fichtner:AI 不再只是一个流行词,它已经成为一个现实。我们看到,人们以两种截然不同的方式使用它。
一方面是基于 AI 的开发工具。这些工具不会取代开发人员,但在熟练的专业人员手中,它们可以加快代码编写速度,提高代码质量和团队效率。
另一方面是将 AI 内置到应用程序中。这是 Java 大放异彩的地方。多年来,人们一直以为 AI 需要 Python。但是,当涉及到运行大规模的业务关键应用程序时,越来越多的团队转向了 Java。他们看重的是 Java 的强类型、可靠性和成熟的生态系统。当需要部署、集成和扩展时,像 LangChain4j、Spring AI 等 Java 框架使得人们在将 AI 投入生产应用时变得很有信心。
简而言之,Python 可能开启了这个故事,但 Java 使许许多多的 AI 应用程序真正地焕发了生机。
Silz:四十年来,我都是手写代码。但我现在不这么做了,因为 AI 可以帮我编码。AI 还能解释未知项目,编写规格说明和文档,修复损坏的构建,并优化生产系统。即使把 AI 犯的所有错误考虑进来,我仍然比没有 AI 时更有生产力。
我在工作中做的一个假设是,AI 可以提高所有开发人员的生产力,这引发了两个问题。第一个问题涉及未来两到三年的自动化:是较少的开发人员产出相同数量的代码,还是相同数量的开发人员创建更多的代码,亦或是更多的开发人员编写更多的代码?第二个问题是一个原则问题:当 AI 足够好,不需要开发人员告诉它做什么,而只需要业务分析师告诉它做什么时,会发生什么?
Java 25 及其它
Gee:Java 25 于 2025 年 9 月发布,是当前的长期支持版本。我喜欢现在这样,六个月发布一次已成常态。每个版本都会带来有趣的特性,Java 社区已经习惯了在可预测的日期获得高质量的版本。
Van Dijk:作为最新的 LTS,Java 25 的发布为这门语言带来了很多改进。像Compact Source Files和Instance Main Methods这样的更改,不仅使初学者更容易掌握 Java,也使经验丰富的程序员能够更快速地实现创意原型。在每一种情况下,代码均能够随着知识的积累和需求的变化灵活扩展。
其他更改使得这门语言更具表现力,使 Java 代码更容易编写和阅读。例如,结构化并发(仍处于预览阶段)使并发代码的编写和理解变得更加轻松。模式匹配改进(如模式中的基本类型、instanceof和switch语句,同样仍处于预览阶段)则有助于快速理解代码。
除了语言特性外,Java 25的性能和性能洞察能力也有所提高。即使你不为了使用最新的语言特性更新代码,更新 JDK 也会让你立即从中受益。我建议你这样做,这样可以受益于新语言特性带来的好处。
看到各种框架和库正在支持甚至要求支持更新的 Java 版本,这是一件令人高兴的事。Java 17 似乎成了一个新基线,因为 Spring、JUnit、Gradle 9 和即将推出的 Maven 4 都需要 Java 17 或更高版本才能运行。Spring 团队现在也推荐使用 Java 21 中引入的虚拟线程。很高兴看到像 Spring 和 JUnit 这样的项目采用了JSpecify注释。很高兴看到语言和生态系统的同步发展。
Schrijver:好吧,JDK 24 和 25 已经发布,Stream Gatherers的功能已经最终确定,Scoped Values已经交付,模式匹配现在可以在 switch 和 instanceof 语句中处理原始类型,Compact Source Files 和 Instance Main Methods 也已经引入。
Redlich:虽然起步的时候比较慢,但Leyden项目最终提供了旨在改善 Java 程序启动时间、峰值性能和空间占用的特性。第一个特性Ahead-of-Time Class Loading & Linking随 Java 24 的发布而交付。这个特性似乎打开了传说中的闸门,因为Ahead-of-Time Method Profiling和Ahead-of-Time Command-Line Ergonomics两个特性在 Java 25 中交付,而到目前为止,第四个特性Ahead-of-Time Object Caching with Any GC已准备在 JDK 26 中交付。第五个特性Ahead-of-Time Code Compilation目前仍处于草案状态。
遗留 Java 应用程序的现代化
Fichtner:我们看到,对 Java 应用程序进行现代化改造的需求有明显增长。许多团队正在将那些比较旧的应用程序,例如基于 Swing 的应用程序,使用像 Vaadin 这样的现代框架迁移到 Web 浏览器中。其他人则正在处理多年累积的技术债务。框架升级变得越来越复杂,而在如今高度重视供应链安全的情况下,组织正在密切关注其软件栈中的漏洞。
另一个主要的驱动因素是 Java 版本的现代化。有太多的团队仍在运行 Java 8 之前的版本。他们想要向前迈进,但他们需要一个符合现实的可靠路径来实现这一点。
这是像 OpenRewrite 这样的工具真正发挥作用的地方。它们使升级过程具有确定性,不仅适用于迁移到 Java 的新版本,还适用于保持 Spring Boot、Quarkus、Micronaut 等框架始终处于最新状态。
这种组合——解决技术债务、加强安全性和对平台进行现代化改造,已成为过去一年中的主要发展趋势,并且正在加速。
Costlow:我不想讨论具体的技术库,我感受到的变化更多的在于 Java 及其主要库的发展节奏。各方都在积极推进技术更新:既要与 JDK 保持同步,也要与库保持同步。如今已发展到主要库都要求使用相对较新的技术。
Jakarta EE
Redlich:备受期待的 Jakarta EE 11 版本终于发布了!原始路线图上的发布日期是 2024 年 7 月,但它决定升级过时的技术兼容性工具包(TCK),其中包括从 Ant 迁移到 Maven 和使用 OpenRewrite 从 Test Harness 迁移到 Arquillian。
这项升级的结果是分阶段发布:Core Profile 在 2024 年 12 月发布,Web Profile 在 2025 年 4 月发布,而平台则在 2025 年 6 月发布。这一努力应该会使 Jakarta EE 12 及以后的发布过程更加高效。
Java 社区怎么说?
对于 Java 社区中其他开发人员可能对 Java 现状持有什么样的看法,我们的参与者提供了他们的见解。
Gee:当然,每个人都在谈论 AI,而在 Java 社区中,过去几年有人担心,当人们想到 AI 就会自动想到像 Python 这样的语言时,Java 如何保持相关性。然而今年,我看到有越来越多的库和框架致力于简化在 Java 程序中使用 AI 功能,并且是用一种有效的、符合 Java 开发人员习惯的方式。由于绝大多数人都将编写包含 AI 特性的企业级应用程序,这种方法对我们来说非常有用。
Van Dijk:我们不断听到这样的讨论,AI 如何帮助开发人员以及这种帮助对开发实践意味着什么。当然,人们是在谈论语言和生态系统会如何继续向前发展。最近,JUnit 6 发布了。Spring Boot 4 / Spring Framework 7 在 11 月发布。看起来,经过多年的工作之后,Maven 4 也可能会在今年发布。
很高兴看到 Java 语言和生态系统继续向前发展,使软件开发变得越来越容易,很高兴听到人们分享他们最喜欢的工具和实践。
Fichtner:如今,在聆听 Java 社区的声音时,我注意到最大的转变是关于云的对话。
几年前,所有的讨论都是围绕迁移到云和云原生。但现在风向肯定已经变了。这些天,我听到更多的是企业要迁回本地,或者选择欧洲云提供商和数据中心,而不是完全依赖于全球性的大型平台。
这种转变不仅仅是关于技术,还涉及到主权和合规性,特别是在欧洲。数据隐私、监管要求和对基础设施的控制正在推动团队变革部署和运行 Java 工作负载的方式。
所以,我在社区中听到的讨论最热烈的一个话题就是这一点:重新思考云策略,更加重视本地和区域解决方案。
Schrijver:我听到其他人主要在谈论 Java 如何通过像 Langchain4j 这样的框架进入 AI 世界,但也涉及到 Java 在 RAG 工具和 MCP 服务器中的应用。在 Devoxx 比利时大会上,Rod Johnson 阐释了为什么我们都应该在 JVM 上构建 AI 代理,以及像 Embabel 这样的框架已经表明 Java 实际上非常适合构建代理 AI 解决方案。尽管目前在 AI 领域,像 Python 这样的语言比 Java 有先发优势,但我认为,鉴于当前使用 Java 构建 AI 解决方案的发展状况,离 Java 成为这个领域的强劲竞争者已经不远了。这真是令人兴奋!
Costlow:有关现代化的讨论,我都是有选择性地听听。我听到的很多内容都是关于企业如何确定管理应用程序的方式,包括运行、构建、维护以及退役。最终,这些管理工作很多都归结为上市时间、投资回报和成本管理等商业概念。这些对话并不是从 Java 社区开始的;它们来自那些人们需要不断决定 Java 是正确选择的对话。在这类讨论中,对话通常从这样一个话题开始,借助 Java,你可以持续利用并增值十多年前对 Java 的投入,而且多年以后你仍能以同样的方式获益。
有什么令人感到意外和兴奋的新趋势吗?
关于 Java 生态系统中令人愉快和意外的新事物,我们的参与者谈了他们的看法。
Gee:我试过紧凑型源文件和实例主方法。看到“Hello World”示例的样板代码少了很多,这真的很好,尽管这对专业开发人员的日常工作影响不大,但它确实对新手开始学习这门语言有很大的帮助,因为它去掉了他们不需要知道的很多噪音。我不知道这是否“令人兴奋”,但可以说早就该这样了!但我也喜欢这个特性的添加方式,经验丰富的开发人员也不会觉得不自然。我觉得,鉴于 Java 对向后兼容性的承诺,这不会改变任何现有的功能。
Schrijver:没想到,我可以写一个只有 void main() { IO.println("hi!"); }的 Java 源文件,并且可以随时用 java test.java 运行它,然而它真的实现了!
尽管这个增强看起来很小,而且对于企业级 Java Web 应用程序领域来说并不特别相关,我仍然认为这是一个了不起的发展,它使得初学者更容易进入 Java 领域,也更便于 Java 在教育领域中的使用。
Costlow:我目睹了许多老旧的应用程序被实质性地复活。所谓老旧,是指人们从 Java 7 升级,因为他们在做出替换/淘汰决策时,选择了继续沿用 Java 应用程序。
Silz:生成式 AI 软件开发已实现产品市场契合:拥有海量训练数据,完善的验证机制确保 AI 正确性(代码编译通过、代码检查通过、测试通过),而且高薪开发群体成为推动自动化的动力。当前,我们开发人员正享受着生产力提升的红利,但长远来看未必如此。
Redlich:没想到,我们会看到一个小型开源项目专注于碳感知任务处理。这成为 2025 年 7 月 JobRunr 8.0 版本发布的一大亮点。JobRunr 通过调用欧盟能源供应商ENTSO-E的数据,为开发人员提供优化后的碳足迹方案。目前,碳感知任务处理功能尚未在美国地区开放。
在 Java 领域,最令你感到激动的是什么?
我们问了参与者这个问题,目的是希望他们描述下他们眼中 Java 生态系统最让其感到兴奋的地方。
Gee:今年我没有太多时间写 Java 代码,但我渴望使用 Loom 项目和结构化并发的各种特性。有能帮助我们以更容易理解的方式编写并发和/或并行代码的特性,对于编写安全和可扩展的应用程序至关重要。
Van Dijk:就我个人而言,所有使 Java 语言更容易学习和使用的改变都让我感到兴奋,还有可以帮助我们理解代码的工具。这些将使代码更容易维护,减少 Bug,使开发人员的生活更轻松。随着生成的代码变得比以往任何时候都多,将有更多的代码需要维护。
随着语言和生态系统的发展,总有新东西要学习,这很令人兴奋,虽然有时也可能令人不知所措。对我来说,最令人兴奋的是成为更广泛社区的一部分,并能够分享知识,不管是在会议上还是以其他方式。一起学习更有趣,成为这个社区的一部分真的很棒。
Fichtner:目前,在 Java 领域,让我真正感到兴奋的是社区,感觉它比以往任何时候都更有活力。
在德国,我们正在指导和支持组建新的 Java 用户组(JUG)。看到如此多的人渴望组建本地团体,重启线下聚会,在疫情之后重新建立面对面的联系,这令人深受鼓舞。正是这种真实的人际互动,构成了 Java 独特魅力的核心所在。
我对 JCON Europe 大会也感到非常兴奋,这是我们在科隆举办的一场社区会议。与 Java 社区共度时光,交流想法,和有着同样激情的人闲逛,总是一件很让人高兴的事。
今年,我们第一次将 JCON 带到美国。2025 年 10 月,我们与 IBM 携手合作,展示了其对 Java 生态系统的卓越贡献,甚至在 IBM TechXchange 上举办了一次特别的 JCON。
对我来说,正是本地 Java 用户组(JUG)的活力和全球合作的结合让现在的 Java 社区如此令人兴奋。
Schrijver:我一直对 GraalVM 带来的惊人可能性印象深刻。在 Devoxx 比利时大会上,Fabio Niephaus 向我展示了他如何使用 GraalVM 将 Java 应用程序编译成 WebAssembly,实现了在 Web 浏览器中运行 Spring Boot 应用程序。如果你不相信我,可以亲自看看这个Spring Shell for WebAssembly Web 应用程序。
Costlow:自动化的现代化工具确实令人兴奋。以前,升级 Java、主要框架和库是件苦差事。乏味的工作占用了开发人员大量的时间,他们要更改代码,进行测试,完成一个历时数月的项目,最终得到的功能与之前的系统完全相同。现在,那些优秀的工程师几乎可以自动化所有这些工作,把精力用在开发炫酷的新功能上。就 Java 而言,它使开发人员能够像处理当前正在开发的现代化项目那样,继续维护旧版应用程序。
这种现代化对于新开发人员来说尤其令人兴奋,因为他们了解当今的技术;他们在大学里没有学习 Spring 1.x。现代化使现有开发人员的工作体验更加愉悦,但对初级开发人员尤为友好。
Silz:没什么让人兴奋的。这不是 Java 的问题,是我自己的问题:新版本的语言或框架最多只能让我的效率提升百分之十,而 AI 至少能让我的效率提升百分之五十。所以,我选择把时间投入到 AI 上,而不是语言或框架上。
Redlich:我很愿意进一步了解全新的 Jakarta EE 规范——Jakarta Query,它在 2025 年初创建并通过了计划审查,现已投票纳入 Jakarta EE 12 平台及 Web Profile。该规范的加入实现了所有数据相关规范的统一,原有的 Jakarta Persistence Query Language 和比较新的 Jakarta Data Query Language 将统一归属于 Jakarta Query 规范体系之下。
小结
请注意,我们的参与者所表达的观点仅呈现了部分事实。在 Java 生态系统中,不同的群体、细分领域和地区可能存在差异化的实践经验。2025 年的 Java 趋势报告应被视为有关行业发展讨论的起点而非定论,这是一份关于行业未来发展方向的公开讨论邀请函。
原文链接:







评论