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

news2025/1/16 0:00:07

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.coloradmin.cn/o/1653887.html

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

相关文章

java--io流(一)

1. 前置知识 字符集是什么? 字符集(Character Set)是一组字符的集合,它定义了可以在计算机系统中使用的所有字符。字符集可以包括字母、数字、标点符号、控制字符、图形符号等。字符集使得计算机能够存储、处理和显示各种语言和…

Baidu Comate智能编码助手 -----AI编程帮你解放双手

目录 Baidu Comate是什么? Baidu Comate如何安装? 在VSCode上安装Baidu Comate插件 Baidu Comate如何使用,有哪些功能? 1.代码解释 2.代码注释 使用感受 如何体验 Baidu Comate是什么? Baidu Comate智能编码助手…

Comate,一款基于文心大模型的智能编程助手

一、官网 Baidu Comate官网 二、安装VSCode 如何下载安装VSCode 三、VSCode安装Comate 安装方式1 访问Comate官网点击 立即安装Comate插件 按钮快速安装 安装方式2 访问VSCode市场中的BaiduComate 点击 Install 按钮访问扩展详情界面 2.打开VSCode 3.安装Comate 四、…

图像降噪算法 NL-means 介绍

介绍 Non-Local Means 非局部均值降噪算法,简称NLM,该算法来自 2005年论文“A non-local algorithm for image denoising”;该算法是经典的图像降噪算法,是很多降噪算法的参考对比算法。 2014 年,有 NLM衍生算法NLMP…

树莓派4b测量PM2.5

1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…

正点原子i.MX 93开发板,双核A55+M33+NPU,双路RS485FDCAN千兆网,异核/AI/工业开发!

正点原子i.MX 93开发板新品上市!双核A55M33NPU,双路RS485&FDCAN&千兆网,异核/AI/工业开发! NXP的i.MX系列是一系列面向多媒体和工业应用的ARM架构微处理器。从i.MX6U到i.MX93,这一系列经历了显著的发展&#x…

kubectl_进阶_安全

安全 在前面的学习中,我们知道对于资源对象的操作都是通过 APIServer 进行的,那么集群是怎样知道我们的请求就是合法的请求呢? 这就涉及到k8s的安全相关的知识了。 1. API对象 Kubernetes有一个很基本的特性就是它的所有资源对象都是模型…

TypeScript 基础学习笔记:interface 与 type 的异同

🔥 个人主页:空白诗 文章目录 TypeScript 学习笔记:interface 与 type 的异同🎣 引言🚀 快速入门1️⃣ Interface(接口)📋 定义🤝 实现💡 特点 2️⃣ Type Al…

深度学习网络:设计、开发和部署

​书籍:Deep Learning Networks: Design, Development and Deployment 作者:Jayakumar Singaram,S. S. Iyengar,Azad M. Madni 出版:Springer书籍下载-《​深度学习网络:设计、开发和部署》该教材为学生和工…

Redis 实战之RDB文件结构

RDB文件结构 databases 部分key_value_pairs 部分value 的编码字符串对象列表对象集合对象哈希表对象有序集合对象INTSET 编码的集合ZIPLIST 编码的列表、哈希表或者有序集合 总结AOF持久化的实现命令追加 AOF 文件的写入与同步小结 在本章之前的内容中, 我们介绍了…

后门通信模型剖析

通信模型剖析 梳理DinodasRAT Linux后门通信模型如下: 发送数据-通信数据结构 #原始数据 20000000e703881435b674f7de23a2f80fe35ac0ba1a46c7d96e08a8747889eacf6b1950#载荷数据 e703881435b674f7de23a2f80fe35ac0ba1a46c7d96e08a8747889eacf6b1950#数据解密 180…

Datasophon基于dinky1.0.1升级到dinky1.0.2

1.首先下载dinky1.0.2版本 dinky1.0.2下载地址 2.关闭dinky1.0.1 3.升级dinky1.0.2 3.1 解压dinky1.0.2.ta.gz tar -xzvf dinky-release-1.16-1.0.2.tar.gz -C /opt/datasophon/rm -rf dinky-release-1.16-1.0.2.tar.gz复制dinky1.0.1的配置文件到dinky1.0.2目录 cp /op…

leetcode91.解码方法(动态规划)

问题描述: 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : A -> "1" B -> "2" ... Z -> "26" 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可…

难定取舍,静观其变

今(2024年5月8日)天,本“人民体验官”在推广人民日报官方微博文化产品《带着笑意的眼睛,能看见最美的风景》的同时,还要联系4月初至今期间,与隐藏在《麻辣论坛》幕后的那位昵称“800727”者所爆发的一连串&…

Python:一种强大的编程语言与无限可能

引言 Python是一种易于学习且功能强大的编程语言,它被广泛用于各种领域,包括数据科学、人工智能、Web开发、系统自动化等。Python以其简洁的语法、丰富的库和易于阅读的风格,成为了许多开发者的首选。本文将探讨Python的特性和应用&#xff…

用户下单操作

一:用户下单需求分析和设计: 用户下单业务说明: 在电商系统中,用户是通过下单的方式通知商家,用户已经购买了商品,需要商家进行备货和发货。 用户下单后会产生订单相关数据,订单数据需要能够体…

pytest教程-40-钩子函数-pytest_runtest_call

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_runtest_setup钩子函数的使用方法,本小节我们讲解一下pytest_runtest_call钩子函数的使用方法。 pytest_runtest_call 钩子函数在 pytest 调用测试函数(即测试用…

探索 JavaScript 宇宙:DOM与BOM的星际邂逅

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 💯Web API🍀1 API的概念🍀2 Web API的概念…

JavaScript数字分隔符

● 如果现在我们用一个很大的数字,例如2300000000,这样真的不便于我们进行阅读,我们希望用千位分隔符来隔开它,例如230,000,000; ● 下面我们使用_当作分隔符来尝试一下 const diameter 287_266_000_000; console.log(diameter)…

xhs 旋转滑块流程分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 前言 之前搞过 x-s的纯…