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

news2025/1/4 18:37:30

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 发布!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电路仿真软件PSIM简介

在从事开关电源相关产品开发的工程师或者正在学习开关电源的学习者,常常会用到各种仿真软件进行电路的仿真,不仅可以快速验证电路参数,还能清楚知道各器件的工作状态。 现在的电路仿真软件很多,例如matlab、Multisim、Simplis&…

文档大师:打造一站式 Word 报告解决方案1

前言 在政府、医院、银行、财务以及销售等领域,常常需要创建各种报告文件来展开工作汇报,譬如季度销售报告、年度总结报告、体检报告和保险合同等。在没有报表工具支持之前,这类报告主要通过 Word 制作,费时费力且难以维护&#…

电子电气架构 --- 安全相关内容汇总

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

LeetCode--排序算法(堆排序、归并排序、快速排序)

排序算法 归并排序算法思路代码时间复杂度 堆排序什么是堆?如何维护堆?如何建堆?堆排序时间复杂度 快速排序算法思想代码时间复杂度 归并排序 算法思路 归并排序算法有两个基本的操作,一个是分,也就是把原数组划分成…

短视频矩阵系统搭建开发指导

在数字化营销的广阔天地中,抖音短视频已迅速崛起为一个拥有巨大影响力的社交媒体平台。随着其受众范围的日益扩大,采用有效的搜索引擎优化(SEO)策略以增强视频的曝光度和吸引流量变得至关重要。本文旨在阐述一种专为抖音短视频量身…

GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程20241231

GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程 快速导航 引言Fork 与 Clone 概念对比完整开发流程Pull Request 最佳实践常见问题与解决方案最佳实践建议实战案例 引言 在开发者的协作世界中,GitHub 就像一座桥梁,连…

典型常见的基于知识蒸馏的目标检测方法总结二

来源:https://github.com/LutingWang/awesome-knowledge-distillation-for-object-detection收录的方法 NeurIPS 2017:Learning Efficient Object Detection Models with Knowledge Distillation CVPR 2017:Mimicking Very Efficient Networ…

【分布式数据库与数据存储方案】详解

分布式数据库与数据存储方案 一、分布式数据库概述 (一)概念 分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统,这些节点通过网络进行连接和通信,对外呈现出一个统一的逻辑数据库,用户或应用程序可以像…

【分布式文件存储系统Minio】2024.12保姆级教程

文章目录 1.介绍1.分布式文件系统2.基本概念 2.环境搭建1.访问网址2.账号密码都是minioadmin3.创建一个桶4.**Docker安装miniomc突破7天限制**1.拉取镜像2.运行容器3.进行配置1.格式2.具体配置 4.查看桶5.给桶开放权限 3.搭建minio模块1.创建一个oss模块1.在sun-common下创建2.…

产品经理2025年展望

产品经理作为连接技术、设计与市场需求的桥梁,在快速变化的商业环境中扮演着至关重要的角色。展望2025年,随着技术的不断进步和消费者需求的日益多样化,产品经理的工作将面临更多挑战与机遇。 一、人工智能与自动化深化应用: 到…

风力涡轮机缺陷检测数据集,91.4%准确识别率,18912张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注

风力涡轮机缺陷检测数据集,91.4%准确识别率,18912张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注 数据集下载: yolo v&#…

五、Vue 循环语句

文章目录 简介一、基础数组迭代二、对象属性迭代三、整数循环 简介 在 Vue.js 的世界里,当我们需要处理重复性的结构并依据数据动态渲染时,v-for 指令就成了不可或缺的工具,它赋予开发者简洁且强大的能力,轻松应对各种列表渲染场景…

用css实现瀑布流布局

上效果 知识理解 column-count: 4; column-gap: 15px;实现固定四行瀑布流布局 columns: 200px auto;column-gap: 15px;由浏览器根据容器的宽度自动调整&#xff0c;尽可能一行多个200px宽度的列数 <!DOCTYPE html> <html lang"en"><head><me…

275-增强型多功能数据采集卡PCIe-6251-EX

产品特点&#xff1a; 高速高精度数据采集&#xff0c;16bit10MSPS&#xff0c;32路单端/16路差分高速高精度任意波形发生&#xff0c;14bit165MHz&#xff0c;2路完全独立完全可编程的I/O端口&#xff0c;33个完全可编程的量程选择&#xff0c;0~5V/0~10V/5V/10VPCIe通信接口…

如何将联系人从Android转移到 OPPO? [解决了]

概括 OPPO Reno4系列预计将于2020年10月1日上午9点30分举行线上发布会。从其官方预告片中我们不难发现&#xff0c;OPPO Reno4旗舰手机试图诠释梦想、挑战、勇气、自信和可能性。 3D曲面屏&#xff0c;图形流畅&#xff0c;机身更轻薄&#xff0c;色彩真实。听起来棒极了&…

uniapp 微信小程序开发使用高德地图、腾讯地图

一、高德地图 1.注册高德地图开放平台账号 &#xff08;1&#xff09;创建应用 这个key 第3步骤&#xff0c;配置到项目中locationGps.js 2.下载高德地图微信小程序插件 &#xff08;1&#xff09;下载地址 高德地图API | 微信小程序插件 &#xff08;2&#xff09;引入项目…

Rabbitmq追问2

分析rabbitmq 默认使用姿势是什么 direct fanout还是什么 public void convertAndSend(String exchange, String routingKey, Object object, CorrelationData correlationData) throws AmqpException { this.send(exchange, routingKey, this.convertMessageIfNecessary(obje…

工作中常用Vim的命令

Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 0. ctags -R 1.认识 Vim的几种工作模式 2.高频使用命令 2.1 修改文件 2.2 关于行号 2.3 删除多行&#xff0c;删除部分 2.4 复制粘贴 2.5 光标移动 2.…

【ComfyUI + 自定义节点】图片叠加掩膜(mask)部分扣掉(变黑)

Comfyui的官方示例&#xff1a;https://github.com/comfyanonymous/ComfyUI/blob/master/custom_nodes/example_node.py.example 一、代码 &#xff08; 逻辑&#xff1a;将图片对应掩膜覆盖的区域替换为黑色&#xff09; 因为comfyui加载的图片后&#xff0c;转化为tensor i…

RocketMQ学习笔记(持续更新中......)

目录 1. 单机搭建 2. 测试RocketMQ 3. 集群搭建 4. 集群启动 5. RocketMQ-DashBoard搭建 6. 不同类型消息发送 1.同步消息 2. 异步消息发送 3. 单向发送消息 7. 消费消息 1. 单机搭建 1. 先从rocketmq官网下载二进制包&#xff0c;ftp上传至linux服务器&#xff0c…