软件
java编程(2025 年 InfoQ 趋势报告:Java 篇)

译者 | 平川

本报告汇总了 InfoQ Java 编辑团队目前对 Java 领域内技术采用和新兴趋势的看法。我们重点关注 Java 语言、Java 相关语言(如 Kotlin 和 Scala)、Java 虚拟机(JVM)以及基于 Java 的框架和实用工具。我们讨论了核心 Java 的发展趋势,包括 Java 新版本的采用,以及 Spring framework、Jakarta EE、Quarkus、Micronaut、Helidon 和 MicroProfile 等框架的演变。

帮助技术领导者做中长期技术投资决策。

  • 这是我们发布的第 7 份 Java 趋势报告。不过,由于我们自 2006 年以来一直在内部跟踪 Java 和 JVM 的发展趋势,所以这一话题已经得到了广泛的新闻报道。

    与 2024 年、2023 年、2022 年、2021 年、2020 年和 2019 年的 Java 趋势报告一样,我们将首先呈现 2025 年的内部主题图:

    创新者

    2025 年,Leyden 项目中的前三个功能随着 Java 24 和 Java 25 的发布而交付。第四个功能将作为即将发布的 Java 26 功能集的一部分。

    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 上升到这一类别。

    随着 GraalVM for JDK 23 的发布,GraalPy 和 GraalWasm 正式被认定为稳定版本,适用于生产工作负载,因此进入了该类别。这些项目此前是作为 GraalVM 的实验性功能,于 2024 年首次亮相于创新者类别。

    2025 年 5 月交付的 Spring AI 1.0 加入了其他生成式 AI 技术的行列。其核心功能包括:支持二十种 AI 模型的 ChatClient 接口,可处理多模态输入并生成结构化响应;作为拦截器链的 Advisors API,允许开发人员通过注入检索数据和对话记忆来修改输入提示;全面支持模型上下文协议(MCP)。

    Michael Redlich:Java Champion | Garden State Java 用户组负责人 | Payara 合约开发大使和技术撰稿人 | InfoQ Java Queue 主编 | 埃克森美孚技术与工程公司退休高级研究技术员

  • Karsten Silz:高级全栈 Java 开发人员 | InfoQ Java Queue 编辑

  • Marit van Dijk:Java Champion | JetBrains 开发大使

  • Bert Jan Schrijver:Java Champion | OpenValue 首席技术官 | NLJUG JUG 负责人

  • Daniel Bryant:Java Champion | Syntasso 平台工程与产品营销 | InfoQ 新闻经理

  • 对于我们在内部主题图中对某些技术所做的归类,上述内容提供了更多的背景信息。

    Van Dijk:人们对使用 Java 进行 AI 开发的关注度越来越高,新工具也在不断涌现。Langchain4j 不断演进。今年,我们还见证了 Embabel 的问世——这是由 Spring framework 创始人 Rod Johnson 打造的一个全新 JVM 代理平台。另外还有一项成果是 Koog,这是一个基于 Kotlin 的框架,专为完全采用 Kotlin 惯用语法构建和运行 AI 代理而设计。看到在 JVM 平台上运用 AI 的选项越来越多,实在是件令人欣喜的事。

    随着越来越多的代码由 AI 生成,而不是由开发人员编写,代码的可读性依然至关重要。正因如此,当我们看到 Java 语言及其工具仍然以使代码更易于阅读和理解的方式不断演进时,会觉得令人欣慰。

    一方面是基于 AI 的开发工具。这些工具不会取代开发人员,但在熟练的专业人员手中,它们可以加快代码编写速度,提高代码质量和团队效率。

    简而言之,Python 可能开启了这个故事,但 Java 使许许多多的 AI 应用程序真正地焕发了生机。

    我在工作中做的一个假设是,AI 可以提高所有开发人员的生产力,这引发了两个问题。第一个问题涉及未来两到三年的自动化:是较少的开发人员产出相同数量的代码,还是相同数量的开发人员创建更多的代码,亦或是更多的开发人员编写更多的代码?第二个问题是一个原则问题:当 AI 足够好,不需要开发人员告诉它做什么,而只需要业务分析师告诉它做什么时,会发生什么?

    Gee:Java 25 于 2025 年 9 月发布,是当前的长期支持版本。我喜欢现在这样,六个月发布一次已成常态。每个版本都会带来有趣的特性,Java 社区已经习惯了在可预测的日期获得高质量的版本。

    其他更改使得这门语言更具表现力,使 Java 代码更容易编写和阅读。例如,结构化并发(仍处于预览阶段)使并发代码的编写和理解变得更加轻松。模式匹配改进(如 模式中的基本类型、instanceof 和 switch 语句,同样仍处于预览阶段)则有助于快速理解代码。

    看到各种框架和库正在支持甚至要求支持更新的 Java 版本,这是一件令人高兴的事。Java 17 似乎成了一个新基线,因为 Spring、JUnit、Gradle 9 和即将推出的 Maven 4 都需要 Java 17 或更高版本才能运行。Spring 团队现在也推荐使用 Java 21 中引入的虚拟线程。很高兴看到像 Spring 和 JUnit 这样的项目采用了 JSpecify 注释。很高兴看到语言和生态系统的同步发展。

    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 目前仍处于草案状态。

    Fichtner:我们看到,对 Java 应用程序进行现代化改造的需求有明显增长。许多团队正在将那些比较旧的应用程序,例如基于 Swing 的应用程序,使用像 Vaadin 这样的现代框架迁移到 Web 浏览器中。其他人则正在处理多年累积的技术债务。框架升级变得越来越复杂,而在如今高度重视供应链安全的情况下,组织正在密切关注其软件栈中的漏洞。

    这是像 OpenRewrite 这样的工具真正发挥作用的地方。它们使升级过程具有确定性,不仅适用于迁移到 Java 的新版本,还适用于保持 Spring Boot、Quarkus、Micronaut 等框架始终处于最新状态。

    Costlow:我不想讨论具体的技术库,我感受到的变化更多的在于 Java 及其主要库的发展节奏。各方都在积极推进技术更新:既要与 JDK 保持同步,也要与库保持同步。如今已发展到主要库都要求使用相对较新的技术。

    Redlich:备受期待的 Jakarta EE 11 版本终于发布了!原始路线图上的发布日期是 2024 年 7 月,但它决定升级过时的技术兼容性工具包(TCK),其中包括从 Ant 迁移到 Maven 和使用 OpenRewrite 从 Test Harness 迁移到 Arquillian。

    Java 社区怎么说?

    Gee:当然,每个人都在谈论 AI,而在 Java 社区中,过去几年有人担心,当人们想到 AI 就会自动想到像 Python 这样的语言时,Java 如何保持相关性。然而今年,我看到有越来越多的库和框架致力于简化在 Java 程序中使用 AI 功能,并且是用一种有效的、符合 Java 开发人员习惯的方式。由于绝大多数人都将编写包含 AI 特性的企业级应用程序,这种方法对我们来说非常有用。

    很高兴看到 Java 语言和生态系统继续向前发展,使软件开发变得越来越容易,很高兴听到人们分享他们最喜欢的工具和实践。

    几年前,所有的讨论都是围绕迁移到云和云原生。但现在风向肯定已经变了。这些天,我听到更多的是企业要迁回本地,或者选择欧洲云提供商和数据中心,而不是完全依赖于全球性的大型平台。

    所以,我在社区中听到的讨论最热烈的一个话题就是这一点:重新思考云策略,更加重视本地和区域解决方案。

    Costlow:有关现代化的讨论,我都是有选择性地听听。我听到的很多内容都是关于企业如何确定管理应用程序的方式,包括运行、构建、维护以及退役。最终,这些管理工作很多都归结为上市时间、投资回报和成本管理等商业概念。这些对话并不是从 Java 社区开始的;它们来自那些人们需要不断决定 Java 是正确选择的对话。在这类讨论中,对话通常从这样一个话题开始,借助 Java,你可以持续利用并增值十多年前对 Java 的投入,而且多年以后你仍能以同样的方式获益。

    意外和兴奋的新趋势吗?

    Gee:我试过 紧凑型源文件和实例主方法。看到“Hello World”示例的样板代码少了很多,这真的很好,尽管这对专业开发人员的日常工作影响不大,但它确实对新手开始学习这门语言有很大的帮助,因为它去掉了他们不需要知道的很多噪音。我不知道这是否“令人兴奋”,但可以说早就该这样了!但我也喜欢这个特性的添加方式,经验丰富的开发人员也不会觉得不自然。我觉得,鉴于 Java 对向后兼容性的承诺,这不会改变任何现有的功能。

    尽管这个增强看起来很小,而且对于企业级 Java Web 应用程序领域来说并不特别相关,我仍然认为这是一个了不起的发展,它使得初学者更容易进入 Java 领域,也更便于 Java 在教育领域中的使用。

    Silz:生成式 AI 软件开发已实现产品市场契合:拥有海量训练数据,完善的验证机制确保 AI 正确性(代码编译通过、代码检查通过、测试通过),而且高薪开发群体成为推动自动化的动力。当前,我们开发人员正享受着生产力提升的红利,但长远来看未必如此。

    在 Java 领域,

    我们问了参与者这个问题,目的是希望他们描述下他们眼中 Java 生态系统最让其感到兴奋的地方。

    Van Dijk:就我个人而言,所有使 Java 语言更容易学习和使用的改变都让我感到兴奋,还有可以帮助我们理解代码的工具。这些将使代码更容易维护,减少 Bug,使开发人员的生活更轻松。随着生成的代码变得比以往任何时候都多,将有更多的代码需要维护。

    Fichtner:目前,在 Java 领域,让我真正感到兴奋的是社区,感觉它比以往任何时候都更有活力。

    我对 JCON Europe 大会也感到非常兴奋,这是我们在科隆举办的一场社区会议。与 Java 社区共度时光,交流想法,和有着同样激情的人闲逛,总是一件很让人高兴的事。

    对我来说,正是本地 Java 用户组(JUG)的活力和全球合作的结合让现在的 Java 社区如此令人兴奋。

    Costlow:自动化的现代化工具确实令人兴奋。以前,升级 Java、主要框架和库是件苦差事。乏味的工作占用了开发人员大量的时间,他们要更改代码,进行测试,完成一个历时数月的项目,最终得到的功能与之前的系统完全相同。现在,那些优秀的工程师几乎可以自动化所有这些工作,把精力用在开发炫酷的新功能上。就 Java 而言,它使开发人员能够像处理当前正在开发的现代化项目那样,继续维护旧版应用程序。

    Silz:没什么让人兴奋的。这不是 Java 的问题,是我自己的问题:新版本的语言或框架最多只能让我的效率提升百分之十,而 AI 至少能让我的效率提升百分之五十。所以,我选择把时间投入到 AI 上,而不是语言或框架上。

    小 结

    原文链接:

    声明:本文为 InfoQ 翻译,未经许可禁止转载。

    今日好文推荐


    顶一下()     踩一下()
  • 热门推荐

    发表评论
    0评