Azul 的《2025 年Java 现状调查与报告》内容涵盖组织使用的发行版和版本、Java 在云中的使用以及人工智能的发展。三位 Java 专家共同针对调查结果展开讨论,并对 Java 的未来做出了一些预测。
Azul 的《2025 年 Java 现状调查与报告》是一项针对 2,000 多名 Java 专业人士开展的研究,收集了有关组织如何使用 Java 的信息。研究参与者回答了有关 Java 版本、Java 在云中的使用以及人工智能发展的问题。Expedia Group 的杰出负责人 Freddy Guime、evolutionnext 网站的所有者兼 Java Champion 称号获得者 Daniel Hinojosa 和 Azul 开发者关系副总裁 Pratik Patel 受邀于 2025 年 2 月共同讨论和分析了本次研究的结果。
为简洁起见,以下采访记录已经过编辑。您可前往 azul.com 观看完整的采访视频。
新旧 Java 版本使用广泛
近一半的调查参与者使用最新的长期支持 (LTS) Java 版本 Java 21 或之前的 LTS 版本 Java 17(或两者兼用)。同时,19% 的人使用分别于 2006 年和 2011 年发布的 Java 6 或 7(或两者兼用)。
Pratik:让我印象深刻的是 Java 的稳定性和向后兼容性,以及 Java 生态系统或 Java 虚拟机的所有优点。
Daniel:我们已经使用 Java 8 很久了,但我认为 Spring 已在一定程度上将人们引向未来。我认为这也是件好事。我现在看到更多人在使用 JDK 17。
Pratik:下面我来为观众快速讲解一下。Daniel 指的是 Spring Boot 的 Spring 框架。Spring Boot 的 3.2 版本必须使用 Java 17 或更高版本才能运行。因此,如果您目前在使用 Spring 2.x,除非将所使用的Java 升级到 Java 17 或更高版本,否则将无法使用 Spring 3.2。对吗?你指的就是这个吧。
Freddy:企业环境中通常是新旧版本共存,但我认为较新的 JDK 版本明显更受欢迎。现在所看到的小部分旧版系统基本上都是很难改变的系统,因为它们的影响根深蒂固,就像opera。这在金融领域更为常见,要迁移这种代码库很难……这些系统通常是隔离运行的,因为……你不想让它们有任何数据暴露风险。
Java 未获使用的云计算能力尚可接受
在调查中,71% 的 Java 开发公司有超过 20% 未得到使用的云计算能力。三位专家一致认为这是可以接受的水平。
Daniel:20% 其实没问题。也许我们可以做到 10%。
Freddy:当公司发展到规模足够大的时候,我认为公司应该考虑找一个专门从事这种优化工作的人员。据很多文献指出,例如 Netflix 已经在使用预测合作伙伴来预先进行自动扩展。
Pratik:过去没有这样的流程。在 2020 年代初的高速发展时期,我们都不得不困在家里,所有的软件技术都在迎来爆发式发展,因为一切都要为在线化而扩展,成本也随之增加。购买所需的所有东西,或者尽可能租用更多服务器。购买能买到的最大数据库,等等。所有其他业务软件和计算本质上都是一种周期性业务。我们在两三年前达到了顶峰。现在回过头来想,也许我们在云平台上投入的成本太多了。你们公司内部有所谓的 FinOps 组织吗?
Freddy:“一旦开始对云平台进行大量投资,最好设立一个部门来帮助管理成本,这很有必要。
人工智能
在调查中,50% 的 Java 用户使用 Java 开发 AI 功能,这个比例超过任何其他编程语言。
Daniel:我通常会先从说明目标开始。这是我需要做的全部事情。这个方法在这方面的效果非常好。
Freddy:如果完全按自己心意而大量使用 ChatGPT 会涉及到法律问题。一旦你在那里粘贴代码,除非你有某种许可的保护,否则他们就会认为“我们可以随便拿你的东西来重新训练我们的模型”。
Pratik:等一下。这是相反的方向吧?因为很多人都担心,如果我使用某个 AI 代码助手,让它为我生成代码,然后我将这些代码放到我的代码库里,我会想 AI 是否是从 GPL 或其他来源获取这些代码片段?但你说的是相反的方向,如果将公司的一些专有代码放到 ChatGPT 中,它将来会用这些代码来训练自己的模型。
Freddy:我认为这将改变软件工程师的定义。如果你是一名工程师……你就需要提升自己的知识水平,不仅要让自己成为编码者,更多是要成为系统设计师和企业架构师。因为这些将是 AI 无法做到的事,因为 AI 可能无法发现这些工作所需的权衡,这其中需要你有自己的观点,你要去输入自己的想法。
Daniel:我从去年就开始尝试让初级程序员参与进来,今年依然如此。不要用 AI 取代他们。你需要他们,因为他们对你的业务非常了解。计算机科学知识能让一个人获得更长远的发展。
但令人遗憾的是,很多刚走出校门的年轻开发者的这些知识储备还远远不够。你必须将计算机科学知识与另一个领域结合起来才能发挥作用,无论是运输还是旅游等。我认为这将成为现实,很多东西都可以在工作中进行学习。这就是初级开发者的作用。他们会学习你的领域,并精通于此。
还有一点就是数据。科学家们喜欢 Python,比如机器学习科学家。他们喜欢 Jupyter Lab 或 Jupyter Notebook,并且对那套工具无比精通。我们能做的顶多是构建嵌入式模型。换句话说,就是 Java 应用程序所在的 Pod,或者对机器学习模型提供所谓的“服务”,让模型作为主机、RESTful 端点,对其输入内容。我们将等待向量、API、Java 和外部函数内存模型 FFM 等内容,并学习如何将其结合起来,更深入了解一些。因此,我们希望通过良好的迁移,使用这些内容在 Java 中开展机器学习。
Pratik:这将构建出函数、内存 API,使 Java 开发者能够编写库,并能够做很多 Python 库可以做的事……但具有讽刺意味的是,对于 Torch 和 NumPy 等 Python 库,以及所有其他用于构建 AI 模型的东西,Python 代码实际上只是对低级 C 库的一些“包装”。开发者们在这方面已经有领先优势,而且多年来一直在开发这些库。
您可前往 azul.com 观看采访视频。立即观看未剪辑的完整采访。
2025 年《Java 现状调查与报告》现在也可在 azul.com 上获取。立即阅读完整报告。
