Java开发生态2024年度总结报告

1 关键要点

  • 尽管数据显示 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 年初关于 AI 的“狂热探索期”现象有所平息,但 AI 仍然是热点话题。现在态度更冷静,认为 AI 并非“万能锤”,而是需根据具体问题合理应用。
  • 一个名为 Commonhaus Foundation 的新非营利组织致力于开源库和框架的可持续发展,为自主管理的开源项目提供继任规划和财政支持。
  • WebAssembly 在 Java 领域终于开始获得关注,逐渐赶上 Go 和 Rust 等语言的生态系统。

本报告总结了 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 年提供了以下内部主题图:

  • 计划于 2024 年 11 月正式发布的 Jakarta EE 11 进入 创新者类别,因为其 16 项规范目前正在积极开发,并已在今年通过了审查。自 2024 年 6 月发布 Jakarta EE 11-M4 版本以来,开发者已经可以尝试 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 分别移动至 早期采用者早期多数晚期多数类别。
  • GraalPyGraalWasm 进入 创新者类别。这两个项目在 GraalVM for JDK 23 发布后,已被视为稳定且适合生产使用。
  • 随着更多框架(如 Spring、Jakarta EE 和 Helidon)以 Java 21 为基础,Java 21 转至 早期采用者类别,同时 Java 17 进入 早期多数类别。
  • Helidon 和 Vert.x 框架在最新版本中实现了虚拟线程服务器,虚拟线程框架(Helidon Nima 和 Vert.x) 被转移至 早期采用者类别。
  • 由于 Helidon 支持虚拟线程并发布了 Helidon 4.0,Helidon 移至 早期多数类别,而 Helidon 3.0 和 2.0 仍支持反应式服务器。
  • 由于 Scala 3 开发进展缓慢,2021 年 5 月发布的 Scala 3 移至 晚期多数类别。
  • Azul 和 BellSoft 实现了 CRaC 技术,快速 JVM 启动(CRaC) 转至 早期采用者类别,同时 快速 JVM 启动(GraalVM) 被转至 早期多数类别。

2 AI 与 Java

AI 在过去一年发生了重大变化,仍然是一个热门话题。越来越多的工具和集成正在帮助 Java 开发者更高效地完成代码开发。

虽然 2024 年初的 AI 热潮有所缓解,但相关讨论依然热烈。开发者已从“必须切换到 Python”转变为“仍然可以用 Java 进行 AI 开发”。像 LangChain4j 这样的库大大提升了 Java 在 AI 开发中的可用性。

3 Commonhaus基金会

Commonhaus基金会,一个专注于开源库和框架可持续发展的新非营利组织,于 2024 年 Devnexus 大会上首次向 Java 社区亮相,旨在为自主管理的开源项目提供继任规划和财政支持。

其使命是:

通过共同管理和社区协作,赋能多元化的开发者、贡献者和用户群体,共同创建、维护和发展开源库和框架,确保其长期增长和稳定。

创始人 Erin Schnabel、Ken Finnigan 和 Cesar Saavedra 分别担任主席、秘书和财务主管。

Java 开源项目正经历动态变化。一些知名项目转向商业源代码许可(BLS),但与此同时,Commonhaus Foundation 则展示了更开放的新趋势。

很高兴像 Hibernate 和 JBang 等项目得到了基金会的支持,这将确保它们长期发展,为开发者提供更多信心。

Commonhaus 提供了云时代的开源模式,帮助解决关键项目的资金问题。

4 Spring Framework 6 和 Spring Boot 3

Spring 6 和 Spring Boot 3+ 的采用率显著提高。在我们公司中,几乎所有应用都已经迁移到了 Spring Boot 3+。Spring Boot 和 Quarkus 似乎正在成为云原生应用开发的首选框架。

Quarkus 的崛起势不可挡,其市场份额逐渐从 Spring Boot 手中夺过,并巩固了微服务框架中的第二名地位。

5 Java 17 及更高版本

过去一年中,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 取代。虚拟线程、新模式和后续特性正在逐步推出(尽管目前仍是预览版)。

6 Jakarta EE

在 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 工作组,以抓住市场方向带来的机会。

7 Java 社区的声音

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 秒多一点,获得最快成绩。

8 新的令人兴奋的发展

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(字符串模板)的撤回令人意外,但其撤回背后的原因表明了团队对开发者需求的谨慎考量。

9 Java 社区

Java 社区正在通过更多合作不断壮大,例如 OpenTelemetry 标准的扩展及 MicroProfile 和 Jakarta EE 的共同项目。这种合作提升了开发效率,并推动了社区的发展。

10 结论

本报告应被视为 Java 生态系统方向讨论的起点,期待您的参与和反馈,共同塑造 Java 的未来。

本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM Agent应用开发

  • 区块链应用开发

  • 大数据开发挖掘经验

  • 推荐系统项目

    目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945803.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PlasmidFinder:质粒复制子的鉴定和分型

质粒(Plasmid)是一种细菌染色体外的线性或环状DNA分子,也是一种重要的遗传元素,它们具有自主复制能力,可以在细菌之间传播,并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性&#xf…

277-基于八路256Ksps 24bit AD生物电震动检测FMC子卡

一、板卡概述 板卡基于AD7768 AD芯片设计的八路低速采集的FMC 子卡,支持直流耦合,产品应用于生物电、脑电波、声音,震动等信号采集。 二、板卡参数及性能 板卡功能 参数 内容 ADC 芯片型号 AD7768 路数 8路ADC, 采样率 2…

[TOTP]android kotlin实现 totp身份验证器 类似Google身份验证器

背景:自己或者公司用一些谷歌身份验证器或者microsoft身份验证器,下载来源不明,或者有广告,使用不安全。于是自己写一个,安全放心使用。 代码已开源:shixiaotian/sxt-android-totp: android totp authenti…

耳切法简述

耳切法简述 将简单多边形分解成三角形称为多边形的三角剖分。对n个顶点的简单多边形的任何三角剖分都有n-2个三角形。其中最简单的算法,称为耳切法(EarClipping)。 耳的定义 多边形的一个 “耳” 是由 V i 0 V_{i_{0}} Vi0​​、 V i 1 V_…

国内外大模型以及部署

国内15家AI大模型应用盘点 AI大模型 秘塔AI搜索 秘塔AI搜索免登录,免费的问答大模型。 开源大模型 Ollama Ollama是一个专注于提供 大语言模型(LLM) 本地化部署和运行的工具和资源的平台。它旨在帮助用户轻松地在自己的设备上运行和定制…

2024年终总结:非常充实的一年

一、业务方面 2024年是业务全面拓展与技术深耕的一年。从日常的开发维护到新产品研发,从降本增效到业务创新,每一步都在不断累积成长。以下是我的年度业务总结: 日常工作:聚焦于软件开发、维护、运营和售后工作,同时…

UE5材质节点VertexNormalWs/PixelNormalWS

VertexNormalWs顶点法线方向,此节点可以做物体上积雪、青苔等效果 PixelNormalWS像素法线方向

MAC环境安装(卸载)软件

MAC环境安装(卸载)软件 jdknode安装node,并实现不同版本的切换背景 卸载node从node官网下载pkg安装的node卸载用 homebrew 安装的node如果你感觉删的不够干净,可以再细分删除验证删除结果 jdk 1.下载jdk 先去官网下载自己需要的版…

玩具租赁系统设计与实现(文末附源码)

博主介绍:✌全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLM…

C403 unity打开方法

1 unity hub右键以管理员方式打开。 2 注册登录账户 如果出现 如果还是不行,把地址栏的网址复制,在google浏览器中打开 如果出现安全策略,就不勾选安全防护 尝试方案1 把unityhub在任务管理器中关闭 如果验证码发送成功,还是进不…

log4j2的Strategy、log4j2的DefaultRolloverStrategy、删除过期文件

文章目录 一、DefaultRolloverStrategy1.1、DefaultRolloverStrategy节点1.1.1、filePattern属性1.1.2、DefaultRolloverStrategy删除原理 1.2、Delete节点1.2.1、maxDepth属性 二、知识扩展2.1、DefaultRolloverStrategy与Delete会冲突吗?2.1.1、场景一&#xff1a…

【记录】vue 添加全局 dialog 弹框

页面展示 代码 /components/GlobalDialog/index.vue <template><div class"global_dialog" v-if"isVisible"><div class"global_dialog_header"><div class"global_dialog_header_title">{{ title }}</d…

QT------模型/视图

一、模型/视图结构概述 基本原理&#xff1a; Qt 的模型/视图&#xff08;Model/View&#xff09;架构将数据的存储和显示分离&#xff0c;提高了代码的可维护性和复用性。模型&#xff08;Model&#xff09;&#xff1a;负责存储和管理数据&#xff0c;提供数据的访问接口&am…

【YOLO 项目实战】(12)红外/可见光多模态目标检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】&#xff08;10&#xff09;YOLO8 环境配置与推理检测 【YOLO 项目实战】&#xff08;11&#xff09;YOLO8 数据集与模型训练 【YOLO 项目实战】&#xff08;12&#xff09;红外/可…

HTML——38.Span标签和字符实体

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>span标签和字符实体</title><style type"text/css">h1{text-align: center;}p{text-indent: 2em;}span{color: red;}</style></head><…

太速科技-688-基于 VM1302的双路100G光纤PCIe4.0X16加速计算卡

基于 VM1302的双路100G光纤PCIe4.0X16加速计算卡 一、产品概述 基于Xilinx芯片方案基础上研发的一款双口100 G FPGA光纤以太网PCI-Express v4.0 x16智能加速计算卡&#xff0c;该智能卡拥有高吞吐量、低延时的网络处理能力以及辅助CPU进行网络功能卸载的能力&#xff0c…

KMP 2024 年总结,Kotlin 崛起的一年

2024 Google I/O 上正式官宣了 KMP&#xff08;Kotlin Multiplatform&#xff09;项目&#xff0c;它是 Google Workspace 团队的一项长期「投资」项目&#xff0c;由 JetBrains 开发维护和开源的项目&#xff0c;简单来说&#xff0c;JetBrains 主导&#xff0c;Google Worksp…

企业数字化转型的构念及实现路径

引言 随着信息技术的飞速发展&#xff0c;数字化转型已成为企业持续竞争力的关键。企业数字化转型不仅仅是技术的更新换代&#xff0c;更是一场涉及组织结构、业务流程、企业文化等多方面的深刻变革。本文将探讨企业数字化转型的构念&#xff0c;并提出实现路径。 企业数字化转…

精密制造动力箱行业需要哪种多功能电表

一、在精密制造动力箱行业&#xff0c;多功能电表的选择需要考虑以下几个方面&#xff1a; 电力参数测量 多功能电表应能够测量单相或三相的电流、电压、有功功率、无功功率、视在功率、频率、功率因数等电力参数。这些参数对于监控和管理动力箱的运行状态至关重要。 电能计量…

《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍

1.3 架构介绍 HarmonyOS整体遵从分层架构设计&#xff0c;从下向上依次为&#xff1a;内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 組件”逐级展开&#xff0c;在多设备部署场景下&#xff0c;支持根据实际需求裁剪某些非必要的组件。HarmonyOS…