Java17的崛起——newrelic的2024 年 Java 生态系统状

ops/2024/9/24 6:23:28/

newrelic   2024 年 Java 生态系统状况

原文PDF:点我下载

生产中最常用的 Java 版本

Oracle 每六个月发布一次新的 Java 版本(通常是在 3 月和 9 月),每个版本都包含一些新功能和错误修复。每两年,Oracle 都会推出一个新的 Java 长期支持 (LTS) 版本,其中包含有助于提高稳定性、安全性和性能的更新,开发人员经常将其视为升级 Java 版本的最重要因素之一。

Oracle 于 2023 年 9 月发布了 Java 21,这标志着 Java 的一个重要里程碑,对虚拟线程和升级库等预览功能进行了显着改进,并且语法方面也取得了进步,使 Java 与许多更现代的语言相媲美。

Java 17 的采用率远远超过了 Java 11 推出时开发者世界所看到的情况。到 2023 年,大约十分之一 (9%) 的应用程序在生产中使用 Java 17,而现在 35% 的应用程序正在使用 Java 17,一年内增长率接近 300%。Java 11 花了数年时间才达到接近这个水平。

2020年Java8 占有市场84%  2024年Java8只剩下28% 【是时候放弃Java8了】

Eclipse Adoptium 在 JDK 供应商中越来越受欢迎

2020 年,Oracle 是最受欢迎的 JDK 供应商,约占 Java 市场的 75%。在 JDK 11 发行版的许可受到更严格的限制之后(在 Java 17 恢复更加开放的立场之前),Oracle 二进制文件出现了明显的变化,并且我们看到了逐年稳步下降自那以后。虽然甲骨文在2022 年仍保持领先地位(34%),但到2023 年则下滑至 29% ,目前为 21%,一年内下降了 28%。

 Eclipse Adoptium,其采用率同比增长 50%,从 12% 上升至 18%。由于 Eclipse Adoptium 是社区管理的,因此该 JDK 的更新往往比 Oracle 和 Amazon JDK 更频繁。

是时候换JDK版本为Eclipse Adoptium

垃圾回收器

Java垃圾收集器(GC)是内存管理组件,用于防止内存泄漏、优化内存使用并确保Java应用程序的整体性能和稳定性。

自 Java 11 起,垃圾优先 (G1) GC 已成为默认设置。作为默认收集器可能可以解释为什么 43% 的客户正在使用它,以及为什么与 Java 7 和 8 相比,Java 11、17 和 21 的使用量大幅增加。此外,G1 的主要好处之一是它清除了较小的区域而不是一次性清除较大的区域,从而优化了收集过程。它也很少冻结执行,并且可以同时收集年轻一代和老一代,这使其成为开发人员的一个很好的默认设置。

第二个最受欢迎的 GC 是串行 GC (37%),它非常适合在单个处理器上运行的应用程序或系统,或者在同一台计算机上运行大量 Java 虚拟机 (JVM) 的情况。与更复杂的 GC 相比,它的 CPU 和内存开销也更低,因此适合资源受限的环境。

G1已经是垃圾回收的王者了!!!

计算和内存设置

在人们经常部署容器的云环境中,追求更小的运行规模非常有意义。但这种趋势可能会给某些应用带来意想不到的问题。特别是,当运行少于两个内核时,最新 JVM 上默认 G1 GC 的许多并发优势就会消失。所有这些单核实例也可能使用串行收集器,并为此付出性能成本。

JVM 内存设置时,32% 的 Java 应用程序使用 1 GB 或更少,68% 使用超过 1 GB。这相当于使用超过 1 GB 内存的应用程序同比增加了 15%。

Log4j 是最流行的 Java 应用程序日志框架

最常用的日志框架是 Log4j,76% 的 Java 应用程序使用它,其次是 JBoss Logging (61%) 和 Logback (52%)。

大多数 (83%) Java 开发人员依赖 SLF4j,这是一个充当其他类型 Java 日志记录框架抽象的框架。SLF4j 使软件开发人员能够使用他们选择的日志框架,并使应用程序能够互换地切换到任何 Java 日志框架,而不会影响其实现或进行任何更改。由于此功能,SLF4j 使应用程序独立于日志记录框架,为跨系统任何部分的日志记录提供更大的灵活性和可移植性。这也意味着 Java 应用程序可以使用多个日志框架。

Bouncy Castle 是最流行的 Java 应用程序加密库

Oracle 是 Java 应用程序中最流行的数据库系统

Oracle 数据库是使用最广泛的,第二个最受欢迎的数据库系统是 PostgreSQL,MySQL 排名第三。

 【注意】上面的图片表格均来自newrelic。

参考资料:http:// https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem





http://www.ppmy.cn/ops/39513.html

相关文章

gitee 简易使用 上传文件

Wiki - Gitee.com 官方教程 1.gitee 注册帐号 (直接选择初始化选项即可,无需下载git) 2.下载git 安装 http://git-scm.com/downloads 3. 桌面 鼠标右键 或是开始菜单 open git bash here 输入(复制 ,粘贴) 运行…

最大子序列的分数

题目链接 最大子序列的分数 题目描述 注意点 n nums1.length nums2.length从nums1和nums2中选一个长度为k的子序列对应的下标对nums1中下标对应元素求和&#xff0c;乘以nums2中下标对应元素的最小值得到子序列的分数0 < nums1[i], nums2[j] < 1000001 < k < …

局域网语音对讲系统_IP广播对讲系统停车场解决方案

局域网语音对讲系统_IP广播对讲系统停车场解决方案 需求分析&#xff1a; 随着国民经济和社会的发展&#xff0c; 选择坐车出行的民众越来越多。在保护交通安全的同时&#xff0c;也给停车场服务部门提出了更高的要求。人们对停车场系统提出了更高的要求与挑战&#xff0c; 需要…

类和对象-Python-第一部分

初识对象 使用对象组织数据 class Student:nameNonegenderNonenationalityNonenative_placeNoneageNonestu_1Student()stu_1.name"林军杰" stu_1.gender"男" stu_1.nationality"中国" stu_1.native_place"山东" stu_1.age31print(stu…

Java缓存caffeine使用心得

文章目录 添加依赖一、手动加载1&#xff0c;定义缓存2&#xff0c;写入缓存&#xff08;增、改&#xff09;3&#xff0c;获取大小4&#xff0c;模拟耗时操作5&#xff0c;移除缓存元素6&#xff0c;查询缓存&#xff08;查&#xff09;7&#xff0c;统计缓存 二、同步加载1&a…

CSS 定位

为什么需要浮动? 我们在访问一些网站的时候, 经常会遇到如下这种情况, 有一个组件, 一直固定在屏幕的固定位置, 无论你如何滑动这个网页, 就会固定在哪里, 如下, 下图是王者荣耀的一个官网: 要实现上面的效果, 标准流或者是浮动是无法快速实现的, 此时就需要使用定位来实现.…

三大消息传递机制区别与联系

目录 总结放开头 1、定义区别&#xff1a; EventBus Broadcast Receiver Notification 2、使用区别: EventBus Broadcast Receiver Notification 3、补充通知渠道&#xff1a; 通知渠道重要程度 总结放开头 BroadCast Receiver:属于安卓全局监听机制&#xff0c;接收…

AI“源神”启动!Llama 3发布,开闭源之争战局生变

在AI的世界里&#xff0c;开源与闭源的较量一直是科技界的热门话题。 今年年初&#xff0c;埃隆马斯克在对OpenAI及其CEO萨姆奥特曼提起诉讼时&#xff0c;就对OpenAI逐渐不公开其模型研究相关细节的行为大加谴责。“时至今日&#xff0c;OpenAI公司网站还宣称&#xff0c;它的…