本报告总结了 InfoQ Java 编辑团队对 Java 语言及其相关生态的观察,包括 Java 核心技术的进步、新版本的采纳情况,以及 Spring Framework、Jakarta EE等框架的演进。
还可收听由 Karakun 高级开发者 Ixchel Ruiz 和 Decodable 软件工程师 Gunnar Morling 主持的播客讨论,获取关于 2024 Java 趋势的更多见解。
本报告有两个主要目标:
这是第六份 Java 趋势报告。自 2006 年以来,我们已开始内部追踪 Java 和 JVM 的趋势,并对此进行了广泛新闻报道。
为帮助读者更好理解当前和未来技术趋势,采用了 Geoffrey Moore 在其同名书籍中提出的“跨越鸿沟”模型。试图识别出符合 Moore 所定义的“早期市场”的创新:“这一市场主要由技术爱好者和愿景者组成,他们希望抢占先机以抓住机会或应对紧迫问题。”
正如 2023、2022、2021、2020、和 2019 的 Java 趋势报告中所做的一样,为 2024 年提供了以下内部主题图:
AI 在过去一年发生了重大变化,仍然是一个热门话题。越来越多的工具和集成正在帮助 Java 开发者更高效地完成代码开发。
虽然 2024 年初的 AI 热潮有所缓解,但相关讨论依然热烈。开发者已从“必须切换到 Python”转变为“仍然可以用 Java 进行 AI 开发”。像 LangChain4j 这样的库大大提升了 Java 在 AI 开发中的可用性。
Commonhaus基金会,一个专注于开源库和框架可持续发展的新非营利组织,于 2024 年 Devnexus 大会上首次向 Java 社区亮相,旨在为自主管理的开源项目提供继任规划和财政支持。
其使命是:
通过共同管理和社区协作,赋能多元化的开发者、贡献者和用户群体,共同创建、维护和发展开源库和框架,确保其长期增长和稳定。
创始人 Erin Schnabel、Ken Finnigan 和 Cesar Saavedra 分别担任主席、秘书和财务主管。
Java 开源项目正经历动态变化。一些知名项目转向商业源代码许可(BLS),但与此同时,Commonhaus Foundation 则展示了更开放的新趋势。
很高兴像 Hibernate 和 JBang 等项目得到了基金会的支持,这将确保它们长期发展,为开发者提供更多信心。
Commonhaus 提供了云时代的开源模式,帮助解决关键项目的资金问题。
Spring 6 和 Spring Boot 3+ 的采用率显著提高。在我们公司中,几乎所有应用都已经迁移到了 Spring Boot 3+。Spring Boot 和 Quarkus 似乎正在成为云原生应用开发的首选框架。
Quarkus 的崛起势不可挡,其市场份额逐渐从 Spring Boot 手中夺过,并巩固了微服务框架中的第二名地位。
过去一年中,Java 的改进更加关注现代应用需求,包括提升云环境中的性能和加强安全性。围绕启动时间改进的技术(如 Liberty 的 InstantOn、CRIU 和 CRaC)尤其令人瞩目,使 Java 应用更加适合云端和无服务器计算。
虚拟线程的引入为 Java 并发编程带来了重要突破,尽管该技术仍在持续改进中,并且在某些场景下存在 性能挑战。在安全性方面,支持最新 FIPS 140-3 标准的加密模块的普及,使 Java 在受监管行业中的应用更加广泛。
随 Oracle JDK 17 的免费商业使用授权在今年 9 月结束,用户需迁移至 Oracle Java SE Universal 订阅以继续使用,这对用户成本产生了一定影响。许多用户因此转向基于 OpenJDK 的 Java 替代品,如 IBM Semeru Runtimes,其最近已支持最新的 FIPS 140-3 标准。据 Azul 报告,70%以上 的受访者正在考虑非 Oracle Java 替代品。观察这些授权变化如何影响开源 Java 的发展和创新将是非常有趣的。
Java 已经超越了“缓慢”和“过时”的刻板印象。Java 现在显现出明确的创新动力,同时保持了强大的向后兼容性和修复能力。之前对“破坏性变更”的恐惧已被一种平衡的创新方式取代,这种方式既推动进步,又不牺牲稳定性。此外,Java 正在增强与其他生态系统的兼容性,使其与不同语言和技术的交互更加轻松,从而提升了灵活性和吸引力。
Java 21 的快速采用令人瞩目,尽管多数公司仍在使用 Java 17。然而,与往年相比,现在有更多公司开始从旧版本的 JDK 迁移到新版本。
Java 17 正在成为新的基线,其流行度持续增长。过去,项目可能以 Java 8 为最低兼容版本;如今,这一角色正越来越多地被 Java 17 取代。虚拟线程、新模式和后续特性正在逐步推出(尽管目前仍是预览版)。
在 Jakarta EE 领域,有大量努力致力于 JDK 21 的采纳。因此,人们对 Jakarta EE 11 的期待非常高。
为即将发布的 Jakarta EE 11 所做的更新工作极其庞大,共涉及 16 项 Jakarta EE 规范。在此次升级中,移除了对已弃用 SecurityManager
类的引用,并引入了对 Java Records 的支持。
我期待以 Garden State Java 用户组 的代表身份参与 2024 年 7 月成立的 Jakarta EE Future Directions 兴趣小组。该小组的目标是开展研究并制定优先建议,这些建议将及时提交给 Jakarta EE 和 MicroProfile 工作组,以抓住市场方向带来的机会。
AI 在 Java 社区中主导了许多讨论。我们应该如何在 Java 中利用 AI?AI 能为我们编写多少代码?另外,关于 Project Leyden 的讨论也非常热烈,这是一个具有潜在重大性能提升的有趣架构。
关于 AI 的讨论仍然非常活跃,既涉及技术层面,也探讨了它对开发者的影响。目前,更多的讨论集中在如何使用这些新工具,而不是像年初那样担忧 AI 会取代开发者的工作。
Java 社区和技术行业一样,对 AI 的热情高涨。Java 正在不断适应并在 AI 领域发现新机遇。新的工具正在涌现,使得 AI 在 Java 应用中的集成更加方便。凭借多年的技术积累,Java 有能力迎接未来的挑战,并在多种场景中保持价值。
关于虚拟线程的讨论非常活跃,许多公司开始采用 JDK 21 并分享了各种用例。尽管反馈大多是正面的,但也存在一些问题,例如 Netflix 曾遇到过类似死锁的情况。
关于 OpenTelemetry 的讨论越来越多,它不断壮大,并巩固了自己作为 Java 领域领先可观测性技术的地位。
Java 社区中有许多令人兴奋的趋势,但我特别喜欢 Gunnar Morling 发起的 十亿行挑战。这项挑战要求用 Java 编写程序,从全球气象站获取温度数据并计算每站点的最低、最高和平均温度。在 164 个参赛作品 中,由 Thomas Wuerthinger 团队完成的时间仅为 1.5 秒多一点,获得最快成绩。
LangChain4j 是一个令人激动的新工具,它意味着开发者不需要学习 Python 就能利用 AI,并大幅减少与不同 AI 提供商的专有 API 集成所需的工作量。
平台工程的崛起为 Java 开发者引入了新的工具,如 Backstage 和 Red Hat Developer Hub,这些工具帮助简化应用交付并减轻开发者的认知负荷。某些项目进一步推出了针对特定运行时和框架的 SaaS 服务,期望通过减轻开发团队的压力来应对不断扩展的开发生命周期任务。
AI 的迅速崛起超出了预期。尽管年初时似乎没有什么比 AI 更重要的事情,但到下半年,这种热潮有所降温。
六个月的 Java 发布周期已成功稳固,这打破了对变化的恐惧,并激发了整个生态系统的创新浪潮。库和框架维护者借此模式更加积极地采用新特性和改进,同时在需要时保持稳定性。
JDK 21 和虚拟线程的采纳正在推动 Jakarta EE 社区加快拥抱 JDK 21 的步伐。
JSpecify 1.0.0 的发布及 Java 语言层级即将引入空指针标记是开发者的长期愿望。OpenTelemetry Profiling 达到实验阶段也令人关注。
JEP 465(字符串模板)的撤回令人意外,但其撤回背后的原因表明了团队对开发者需求的谨慎考量。
Java 社区正在通过更多合作不断壮大,例如 OpenTelemetry 标准的扩展及 MicroProfile 和 Jakarta EE 的共同项目。这种合作提升了开发效率,并推动了社区的发展。
本报告应被视为 Java 生态系统方向讨论的起点,期待您的参与和反馈,共同塑造 Java 的未来。
本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM Agent应用开发
- 区块链应用开发
- 大数据开发挖掘经验
- 推荐系统项目
目前主攻市级软件项目设计、构建服务全社会的应用系统。
参考: