
本文要点

虽然 Java 17 是最常用的 JDK ,但它并没有占大多数。相反,根据 New Relic 2024 年 Java 生态系统现状的数据,Java 17-11-8 的比例分别为 35-33-29% 。
我们需要明确的是,根据 New Relic 的“快速采用”数据,Java 21 的采用率仅为 1.4%,但这仍然快于 Java 8 以来的任何 LTS,不过仍然只占很小的比例。
Java 平台现在已经摆脱了速度缓慢、受传统限制的名声,有了明显的创新动力。
2024 年的头几个月,人工智能的 “狂野西部 ”已经平静了下来,但仍然是一个热门话题。人们似乎有了一种更加清醒的态度,即人工智能并不一定是解决所有问题的 “锤子”。
Commonhaus 基金会是一个新成立的非营利组织,致力于开源库和框架的可持续发展,为自治开源项目提供继任规划和财政支持。
在 Java 领域,WebAssembly 终于获得了越来越多的关注,赶上了 Go 和 Rust 等生态系统。
本报告汇总了 InfoQ Java 编辑团队目前对 Java 领域的技术应用和新兴趋势的看法。我们重点关注 Java 语言、Java 相关语言(如 Kotlin 和 Scala )、Java 虚拟机(JVM)以及基于 Java 的框架和实用工具。我们讨论核心 Java 的趋势,如 Java 新版本的采用,以及 Spring Framework、Jakarta EE、Quarkus、Micronaut 、Helidon 、MicroProfile 和 EclipseStore( MicroStream 的前开源版本)等框架的演变。
欢迎收听由 Karakun 高级软件开发人员 Ixchel Ruiz 和 Decodable 软件工程师 Gunnar Morling 主持的 播客讨论。该讨论是对 2024 年 Java 趋势报告的一个补充。
本报告主要有两个目标:
帮助技术领导者做中长期技术投资决策。
帮助个体开发人员选择将宝贵的时间和资源投入到何种知识的学习和技能的开发。
这是我们发布的第 6 份 Java 趋势报告。不过,由于我们自 2006 年以来一直在内部跟踪 Java 和 JVM 的发展趋势,所以这一话题已经得到了广泛的新闻报道。
为了帮助 InfoQ 和 QCon 把握当前和未来的趋势,我们采用了 Geoffrey Moore 在其 同名著作 中首创的 “跨越鸿沟 ”技术成功心理模型。我们试图找出 Moore 所说的早期市场:“客户群由技术爱好者和有远见的人组成,他们希望抓住机遇或解决迫在眉睫的问题。“
与 2023 年、2022 年、2021 年、2020 年和 2019 年的 Java 趋势报告一样,我们将首先呈现 2024 年的内部主题图:

方便起见,下面是 2023 年的内部主题图:

Jakarta EE 11 计划于 2024 年 11 月发布 GA 版本,由于 16 个规范的积极开发,它进入了创新者(Innovators)类别。这些规范均已提交更新并于 2024 年早些时候通过了各自的审查。Jakarta EE 11-M4 于 2024 年 6 月发布,使得开发人员可以使用 Jakarta Security 4.0 、Jakarta Validation 3.1 和 Jakarta Data 1.0 等规范中新增的功能。因此,2022 年 9 月发布的 Jakarta EE 10、2020 年 12 月发布的 Jakarta EE 9 和 2019 年 9 月发布的 Jakarta EE 8 分别进入了早期采用者(Eerly Adapters)、早期多数(Early Majority)和后期多数(Late Majority)类别。
GraalPy 和 GraalWasm 也进入了创新者类别,因为随着 GraalVM for JDK 23 的发布,这两个由 GraalVM 赞助的项目现在都被认为是稳定的,适合用于生产工作负载。
随着 Spring 、Jakarta EE 和 Helidon 等越来越多的框架要求将 Java 21 作为基线,或支持 Java 21 并以 Java 17 为最低基线要求,Java 21 已转入早期采用者类别。因此,Java 17 被归入早期多数类别。
虚拟线程框架(Helidon Nima 和 Vert.x)也进入了早期采用者类别,因为 Helidon 和 Vert.x 等框架已在其最新版本中实现了虚拟线程服务器。
由于 Helidon 4.0 于 2023 年 10 月发布,支持虚拟线程,并采用了新的重新改造过的虚拟线程 Web 服务器,所以我们将 Helidon 移至早期多数类别。Helidon 3.0 和 2.0 版本序列仍支持其反应式服务器。
Scala 3 于 2021 年 5 月发布,由于 Scala 3 发布序列的开发缓慢,已被移至后期多数类别。
由于 Azul 和 BellSoft 已在各自的 OpenJDK 下游发行版中实现了检查点协调恢复(CRaC),所以 Fast JVM Startup (CRaC) 已被移至早期采用者类别。因此,Fast JVM Startup (GraalVM) 已转入早期多数类别。
以下是数位参与各种主题讨论的 InfoQ Java Queue 编辑和 Java Champions 的简单介绍:
Michael Redlich:Java Champion | Garden State Java 用户组总监 | Payara 合约开发人员大使和技术撰稿人 | InfoQ Java Queue 主编 | ExxonMobil 科技工程公司已退休高级研究技术员
Ben Evans:Java Champion | Red Hat Runtimes 可观测性负责人和高级首席软件工程师 | InfoQ Java Queue 编辑
A N M Bazlur Rahman:Java Champion | DNAstack 软件开发人员 | InfoQ Java Queue 编辑
Holly Cummins:Java Champion | 红帽公司高级首席软件工程师
Grace Jansen:Java Champion | IBM 开发人员大使
Emily Jiang:Java Champion | IBM 开发人员大使、云原生架构师、 MicroProfile 和 CDI 自由架构师
Ivar Grimstad:Java Champion | Eclipse 基金会 Jakarta EE 开发人员大使
Andrea Peruffo:红帽公司 Keycloak 云原生分发首席软件工程师
我们还要感谢 Java Queue 的编辑们,他们为我们更新 2024 年的 “跨越鸿沟 ”模型提供了宝贵的建议:
Erik Coslow:Azul 产品管理高级总监 | InfoQ Java Queue 编辑
Johan Janssen:ASML 软件架构师 | InfoQ Java Queue 编辑
Karsten Silz:Java 高级全栈开发人员 | InfoQ Java Queue 编辑
对于我们在内部主题图中对某些技术所做的归类,这份摘要提供了更多的背景信息。
人工智能和 Java
Grace Jansen/ Emily Jiang:毋庸置疑,AI 在去年发生了很大的变化,而且目前仍然是一个热门话题。现在,在应用程序开发过程中,Java 开发人员可以从各种工具和集成中获得的编码辅助越来越多。
Ivar Grimstad:AI 来了,并迅速成了大家的口头禅。2024 年头几个月的 “狂野西部 ”似乎已经稍稍平静了下来。高调的宣传依然存在,但我认为,我们已经看到了一种更加清醒的态度,即 AI 并不一定是可以解决一切问题的锤子。我们现在看到的是,Java 领域的工具、库和框架正在走向成熟。情况已经从 “哦,我必须换成 Python ”变成 “我仍然可以使用 Java 进行 AI 开发”。像 LangChain4j 这样的库无疑有助于改善开发体验。
Commonhaus 基金会
Commonhaus 基金会是一个新成立的非营利组织(在 Devnexus 2024 大会上被介绍给 Java 社区),致力于开源库和框架的可持续发展,为自治开源项目提供继任规划和财政支持。
他们的使命是:
赋能由开发人员、贡献者和用户组成的多元化社区,使他们能够创建、维护和开发开源库和框架,通过共享管理和社区协作来确保社区的长期发展与稳定。
Commonhaus 基金会的创始人包括红帽公司杰出工程师 Erin Schnabel、Lumigo OpenTelemetry 架构师 Ken Finnigan 和 GitLab 高级技术营销经理 Cesar Saavedra,他们分别担任基金会的主席、秘书和财务主管。
Holly Cummins: 开源出现了一些有趣的动向。Java 生态系统中的一些著名项目已经从开源转向商业开源许可。但是,我们也看到了一种相反的趋势,即更多的领域变得更加开放。Commonhaus 基金会是一个全新的多项目开源基金会,我们去年还没有这个基金会。
Bazlur Rahman: 作为 Hibernate、Jackson、OpenRewrite 和 JBang 的忠实用户,我很高兴看到这些项目在 Commonhaus 基金会找到了新家。我相信,基金会将确保这些项目的长期维护和可持续发展。对于这些重要工具的持续发展和对我们开发工作的支持,我们更有信心了。我希望基金会对透明度和社区协作的承诺会营造出一个环境,让像我这样的开发者和贡献者都能够茁壮地成长。
Ben Evans:CommonHaus 基金会为如何建立开源基金会提供了一种新的模式,同时也为企业提供了一种方法,使其可以通过一个不依赖于任何供应商的基金会直接资助对其至关重要的项目。而且,该基金会拥有项目的知识产权,并且不能对项目使用的开源代码进行再许可。CH 基金会是面向云时代的开源组织——它认识到一些基础项目的重要性以及许多项目在资金方面面临的挑战。
Spring Framework 6 和 Spring Boot 3
Bazlur Rahman: 我注意到,Spring 6 和 Spring Boot 3+ 的采用率很高。在我们公司,几乎所有的应用程序都迁移到了 Spring Boot 3+。我感觉 Spring Boot 和 Quarkus 正在成为云原生应用程序开发的首选框架。
Ben Evans:Quarkus 的崛起显然是不可阻挡的,它在继续夺取 Spring Boot 的市场份额,并巩固了自己在微服务框架领域的第二把交椅。
Java 17 及其它
Grace Jansen/ Emily Jiang: 在过去的一年中,人们更加关注如何改进 Java 以更好地满足现代应用程序的需求,包括提高云计算的性能和安全性。人们对检查点恢复技术(如 Liberty InstantOn、CRIU [Checkpoint Restore In Userspace] 和 CRaC)的兴趣与日俱增。这些技术有助于缩短 Java 的启动时间,使 Java 应用程序更适合云计算和无服务器计算。
此外,虚拟线程的引入为 Java 并发编程带来了令人兴奋的进步,但值得注意的是,这项工作仍在不断改进,在某些情况下仍面临着性能挑战。在安全性方面,我们很高兴地看到,有更多的 Java 加密模块通过了最新的 FIPS 140-3 标准认证,从而使 Java 能够更广泛地应用于受监管的行业。
此外,由于 Oracle JDK 17 的免费商业用途将于今年 9 月到期,客户必须转而订购 Oracle Java SE Universal 才能继续使用,而这无疑会影响成本。我们看到,人们对基于开源协作项目 OpenJDK 的 Java 替代品的兴趣和采用率都在不断提高。这方面的例子包括 IBM Semeru Runtimes for Java,它刚刚实现了最新的 FIPS 140-3 标准。事实上,Azul 已经表示,“ 70% 以上的受访者(在他们的 Java 现状调查中)正在考虑非 Oracle Java 替代方案”。对于这些许可变化将如何影响 Java 开源软件的持续发展和创新,我们将拭目以待。
Andrea Peruffo:Java 已经摆脱了缓慢和受遗留平台束缚的名声。在保持强大的向后兼容性和 Bug 修复能力的同时,Java 现在也有了明显的创新动力。人们不再怀有对破坏性更改的恐惧,因为现在已经有了一种均衡的方法,使得 Java 可以在不牺牲稳定性的情况下向前发展。此外,Java 正在增强与其他生态系统的兼容性,使其更容易与不同的语言和技术进行交互,从而提高了其灵活性和对开发人员的吸引力。
Bazlur Rahman: 尽管大多数公司仍在使用 Java 17,但 Java 21 的快速采用也是显而易见。不过,与前几年相比,现在似乎有更多的公司正在从较旧的 JDK 版本转向较新的版本。
Ben Evans:Java 17 不断取得突破,正在成为最受欢迎的 JDK ——越来越多的人将 Java 17 视为新基线。以前,项目开始时可能会将 Java 8 作为 “必须支持 ”的版本;现在,Java 17 越来越多地取代了这一角色。虚拟线程、新模式和后续功能正陆续到来(尽管这些目前还只是预览版)。
Jakarta EE
Bazlur Rahman: 在 Jakarta EE 领域,人们为采用 JDK 21 所做的努力不胜枚举。因此,人们对 Jakarta EE 11 也充满了期待。
Michael Redlich: 为了更新即将发布的 Jakarta EE 11 中的 16 个 Jakarta EE 规范,我们做了大量的工作,涉及众多升级和改进,其中包括:删除了对已过时类 SecurityManager
的引用,并增加了对 Java 记录的支持。
我期待着在 2024 年 7 月成立的 Jakarta EE 未来方向兴趣小组中代表花园州 Java 用户组,集思广益并开展相关研究,提出 “需要优先考虑的具体建议,及时提交给 Jakarta EE 和 MicroProfile 工作组,以把握市场的发展方向”。
Java 社区怎么说?
Holly Cummins: 与其他地方一样,AI 成了许多讨论的主角。在 Java 世界中,我们应该如何利用它?我们编写的 Java 代码有多少可以由 AI 编写?我也听到了很多关于 Leyden 项目的讨论,因为它的架构很有趣,有可能对性能产生很大的影响。
Ivar Grimstad: 显然,关于 AI 的讨论仍然很多,既有技术层面上的,也有对开发人员的具体影响。目前,讨论更多的是如何利用这些新工具和技术,而不是像年初那样担心失去工作。
Andrea Peruffo: 与其他科技行业一样,Java 社区也对 AI 充满了期待。Java 不断适应并在 AI 领域寻找新的机遇。为了弥补差距,各种令人兴奋的工具不断涌现,使得在 Java 应用程序中使用 AI 更容易。凭借数十年的经验,Java 已做好应对未来挑战的充分准备,并在各种情况下保持其价值。
Bazlur Rahman: 由于许多公司已开始采用 JDK 21,所以虚拟线程在社区中仍然是热门话题。有大量的用户分享他们的用例。虽然绝大多数反馈是积极的,但也发现了一些需要注意的事项。例如,Netflix 在使用虚拟线程时遇到了类似死锁的情况。
Ben Evans: 对于 OpenTelemetry 如何不断发展壮大,并继续巩固其作为 Java 可观测性技术领导者的地位,我听到了很多相关的信息。
Michael Redlich: 在过去的一年中,Java 社区出现了一些值得关注的趋势,但我尤其喜欢 Decodable 软件工程师 Gunnar Morling 发起的 “十亿行挑战”(One Billion Row Challenge)。这项挑战的目的是编写一个 Java 程序,从世界各地的气象站检索温度测量值,并计算每个气象站的最低、最高和平均温度。数据存储在一个 10 亿行的文本文件中。在 164 个参赛作品 中,由甲骨文公司软件开发副总裁、GraalVM 创始人 Thomas Wuerthinger 领导的团队用时最快,仅 1.5 秒多一点。
有什么令人感到意外和兴奋的新趋势吗?
Holly Cummins:LangChain4j 绝对令人兴奋。它意味着你不需要懂 Python 就能利用 AI,并且可以帮助每个 AI 提供商减少使用专有 API 所需的工作。
Grace Jansen/ Emily Jiang: 平台工程的兴起,以及 Java 开发人员开始使用内部开发平台(IDP)(如 Backstage 和 Red Hat Developer Hub),有助于简化应用程序的交付,并能通过减少认知负荷减轻开发人员的负担。我看到,有些项目还更进一步,为特定的运行时和框架提供 SaaS 项目,使交付过程变得更加简单,这真是令人兴奋。这有望减轻开发团队的压力,因为之前,软件开发生命周期中有越来越多的责任和任务压在了开发人员的肩上。
Ivar Grimstad:我认为,我们并没有预料到整个行业对 AI 的热情会如此高涨。突然之间,其他一切都不重要了。不过我相信,这种情况在今年下半年已经有所缓和。
Andrea Peruffo:Java 6 个月的发布周期比预期的要快很多,它打破了以往对变化的恐惧,引发了一股创新的浪潮。库和框架维护者摆脱了支持过时版本的义务,开始接受这种新模式并利用 Java 的新特性和改进。这在整个生态系统中建立起了更快的创新、反馈和前进的良性循环,同时也在必要时保持了稳定性。
Bazlur Rahman:虽然没有太多意料之外的发展,但我觉得,JDK 21 和虚拟线程的采用正在推动 Jakarta EE 社区更快地采用 JDK 21。
Ben Evans:JSpecify 1.0.0 将空值标记引入 Java 语言层,这是 Java 开发人员自古以来就一直要求的。我们终于可以完成始于 JSR 305(软件缺陷检测注解)的工作,并开始构建一条更好的、空值更安全的 Java 程序匝道。
OpenTelemetry Profiling 已进入实验阶段(尽管在细节上仍有许多问题)。
Redlich:这并不令人兴奋,但绝对出乎意料。许多开发人员似乎对 JEP 465(字符串模板,第三次预览)的突然撤消感到惊讶。在 JDK 21 和 JDK 22 中发布了两个预览版之后,JDK 23 对该特性的推进引发了很多讨论。但这也带来了意想不到的后果。感兴趣的话,可以在甲骨文公司 Java 开发人员大使 Nicolai Parlog 的 Java 内部新闻播报第 71 期中了解更多有关撤销该特性的原因。
在 Java 领域,最令你感到激动的是什么?
Holly Cummins:使 Java 更为云友好的驱动力与提高 IT 可持续性的需求之间存在很多重叠。多做前期工作,少做运行时工作,既能提高速度,又能降低成本(双赢!)。像 Quarkus 这样的工具已经这样做了一段时间了,但我认为,生态系统的各个部分现在都已经开始采用这类设计。Leyden 项目就是这种架构转变的一个很好的例子。
我也喜欢一段时间以来,随着发布速度的加快,不断有小的可用性改进推出。这意味着我必须不断学习,但这是件好事。
Grace Jansen/ Emily Jiang:不管是作为一种开发工具(用于新的应用程序以及现有应用程序的现代化),还是在 Java 应用程序中集成,AI 的应用幅增都非常令人振奋。
大型语言模型(LLM)的开源以及 Java API 的规范化加快了这一进程,开发人员可以利用 Java API(包括 LangChain4j 这样的框架)将 AI 技术注入自己的应用程序。这里提供了一些很好的示例,展示如何在企业级 Java 应用程序中轻松地使用 LangChain4J 。我们还看到,可供 Java 开发人员使用的代码辅助工具越来越多,而且它们都集成了 AI 和 LLM。
此外,令人兴奋的是,我们还看到,这些技术被引入了像 Quarkus 这样的云原生 Java 框架和运行时,我们也开始在像 MicroProfile 这样的社区规范中看到了这一点,并且已经有一份建议规范 MicroProfile AI 。我们看到,社区正在协力演进这种编程模型,以便云原生应用可以轻松、高效地与 LLM 协同工作。
我们很高兴地看到,AI 正在变成帮助软件开发人员(而不是取代他们)开发并提高开发人员工作效率的有效工具。事实上,已有研究表明,使用生成式 AI ,软件开发人员完成编码任务的速度可提高一倍!我非常期待看到这一领域的进步和发展,并通过使用 AI 获得更多的优势。
Ivar Grimstad:我对 Java 的发展速度感到非常兴奋。我认为,六个月的发布周期所带来的益处不言而喻。Jakarta EE 已经有了起色,并且以一个相当可预测的节奏发布新版本,这也让我感到非常兴奋和自豪。Jakarta EE 10 的更新似乎相当不错,在业界,大多数人已经解决了 Jakarta EE 9 将命名空间从 javax.*
改为jakarta.*
所造成的混乱。
Andrea Peruffo:WebAssembly 终于在 Java 领域占据了一席之地,赶上了 Go 和 Rust 等生态系统。GraalWasm 现在已经可以投入生产,Chicory 正在准备发布其首个稳定版本。WebAssembly 快速、安全,并且实现了多语言嵌入,大大减少了对现有库和工具进行完全重写的需求。我相信,它很快就会成为一种 “无聊的技术”,每个人都会在不知不觉中使用它,就像 WebAssembly 如今在浏览器中的应用一样。利用快速发展的 WebAssembly 生态系统可以改变游戏规则,即使在通常由其他语言主导的领域,Java 也成了一个强有力的选择。我鼓励大家探索 WebAssembly 及其所带来的令人兴奋的新可能性!
Bazlur Rahman:关于特性,我对虚拟线程和模式匹配特别感兴趣,因此,我们正在积极使用 JDK 21。我们所有的生产应用程序都运行在 JDK 21 上。关于结构化并发的 JEP 正在进行第三次预览;我对它充满期待。
Michael Redlich:AI 出现在 Java 生态系统中令我兴奋不已。有一个人 AI 应用我特别喜欢。在这个应用中,我输入自己的名字,就会出现一个满头秀发的年轻人的漫画!我渴望了解更多有关大型语言模型的知识,并构建自己的 Java/Jakarta EE 人工智能应用程序。MicroProfile 和 / 或 Jakarta EE 工作组已经围绕 AI 相关的新规范进行了一些讨论。
Java 社区
Grace Jansen/ Emily Jiang:很高兴听到越来越多的 Java 社区内部加强合作的例子,在各种活动和会议中相互学习的机会也越来越常见。从 Java 社区的朋友那里,我听到了更多关于项目的消息。在这些项目中,我们能够将专业知识和学习结合起来,创建更好、更高效的共享标准和开源规范。
例如,在 MicroProfile Telemetry 2.0 中集成 OpenTelemetry 可观测性标准的工作是从跟踪开始的。现在,作为 MicroProfile 7.0 的一部分,已经扩展到度量,为 Java 开发人员提供了一种更简单的获取日志、跟踪和度量的方法。另一个很好的例子是 MicroProfile JWT Bridge 项目,它是 MicroProfile 和 Jakarta EE 工作组之间的合作项目。我期待未来可以听到更多这样的事情,帮助 Java 社区保持蓬勃发展的势头,并始终是众多应用程序的首选语言。
另一个经常被提起的话题是,AI 是否会取代软件开发人员。随着这项技术及其周边工具的进步和发展,越来越多的人担心它很快就会完全取代软件开发人员。虽然我认为这是一个超级令人兴奋的领域,而且已经做了很多工作来改进 AI 在软件开发中的应用,但我认为这种情况不会很快发生。相反,我认为 AI 是一种工具,可以帮助开发人员完成他们的工作。
小 结
请注意,撰稿人的观点只反映了故事的一部分。Java 生态系统中的不同群体、领域和地区可能会有不同的体验。这份 2024 年报告应被视为辩论的起点,而非定论。同时,它也是对行业发展方向进行公开讨论的邀请。
原文链接:
评论