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

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.mzph.cn/news/833905.shtml

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

相关文章

如何设置并行度 ——《OceanBase 并行执行》系列 2

并行度(degree of parallelism,简称 DOP),是指在执行过程中所使用的工作线程数量。设计并行执行的初衷在于充分利用多核资源以提升效率。OceanBase 的并行执行框架支持多种设定并行度的方式,既允许用户手动设置&#x…

一篇教程搞定Windows系统中的Docker应用安装

文章目录 1. 引言2. “Docker -> WSL -> Windows”的依赖逻辑3. 安装方法3.1 安装WSL3.2 安装Docker Desktop 4. 是否安装成功?初始化一个容器试试。FAQ 1. 引言 Docker是一个用于创建、管理和编排容器的应用。容器是运行在操作系统上的一个应用,…

【linux软件基础知识】字符设备与struct cdev

字符设备 “cdev”是操作系统和设备驱动程序上下文中“字符设备”的缩写。 在类 Unix 操作系统(例如 Linux)中,设备表示为称为设备文件的特殊文件。 设备文件有两种类型:字符设备和块设备。 字符设备是一种一次传输一个字符的数据的设备。 它通常用于以连续流方式生成或消…

【Git】Git学习-15:分支简介和基本操作

学习视频链接:【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 git bran…

鸿蒙开发接口Ability框架:【@ohos.ability.particleAbility (particleAbility模块)】

particleAbility模块 particleAbility模块提供了Service类型Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断开当前Ability与指定ServiceAbility等。 说明: 本模块首批接口从API version 7开…

深度学习笔记_10YOLOv8系列自定义数据集实验

1、mydaya.yaml 配置方法 # 这里分别指向你训练、验证、测试的文件地址,只需要指向图片的文件夹即可。但是要注意图片和labels名称要对应 # 训练集、测试集、验证机文件路径,可以是分类好的TXT文件,也可以直接是图片文件夹路径 train: # t…

ue引擎游戏开发笔记(35)——为射击添加轨道,并显示落点

1.需求分析: 我们只添加了开枪特效,事实上并没有实际的效果产生例如弹痕,落点等等。所以逐步实现射击的完整化,先从实现落点开始。 2.操作实现: 1.思路:可以这样理解,每次射击的过程是一次由摄…

知识付费系统体验如何,教育机构可以线上教学么?怎么做好服务?

随着疫情的影响,教育机构受到了很大的冲击,因为大家都宅在家里不能出门,所以教育机构的学生也都不能去学习,这对教育机构的运营产生了很大影响;很多教育机构都想转为线上教学,但是不知道可以不可以&#xf…

百度文库最新AI旋转验证码

上个月发现百度文库最新出了一个验证码,是AI生成的。内容每次可能都不一样,所以给识别造成 了很大困难。传统的比对放松完全失效。 一、介绍 这个是最近才出的最新验证码,内容主要以工厂、建筑、山峰、机器人、汽车、盆栽植物等为主。如下图…

【linux】进程概念|task_struct|getpid|getppid

目录 ​编辑 1.进程的概念 进程的基本概念 进程与程序的主要区别 进程的特征 进程的状态 描述进程—PCB task_struct中的内容 查看进程 1.创建一个进程,运行以下代码 通过系统调用获取进程标示符 getpid()以及getppid() 1.进程的概念 进程的基本概念…

洛谷 P3391:文艺平衡树 ← Splay树模板题

【题目来源】https://www.luogu.com.cn/problem/P3391【题目描述】 您需要写一种数据结构(可参考题目标题),来维护一个有序数列。 其中需要提供以下操作:翻转一个区间,例如原有序序列是 5 4 3 2 1,翻转区间…

深度学习常用优化算法笔记介绍,各种梯度下降法详细介绍

优化算法 mini-batch梯度下降法 当一个数据集其数据量非常大的时候,比如上百万上千万的数据集,如果采用普通的梯度下降法,那么运算速度会非常慢,因为如果使用梯度下降法在每一次迭代的时候,都需要将这整个上百万的数…

航空电子FC节点卡, FC交换机,主要采用LC或MPO光纤接口形式

FC节点卡主要采用LC或MPO光纤接口形式,可以作为4/2个独立端口使用,也可以作为2对/1对冗余端口使用,支持1.0625Gbps、2.125Gbps、4.25Gbps、8.5Gbps通信速率。节点卡完全遵循FC-LS,FC-FS,FC-AE-ASM、FC-AE-1553B等FC光纤…

2024OD机试卷-计算三叉搜索树的高度 (java\python\c++)

题目:计算三叉搜索树的高度 题目描述 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从 根节点 向下寻找,直到找到一个合适的空节点插入。查找的规则是: 如果数小于节点的数减去500,则将数插入节点的左子树如果数大于节点的数加上500,则将数…

初始Java篇(JavaSE基础语法)(7)抽象类和接口(上)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:JavaSE 目录 抽象类 抽象类的概念: 抽象类语法 抽象类特性 抽象类的作用 接口 接口的概念: 语法规则 接口…

精通GDBus:Linux IPC的现代C接口

目录标题 1. GDBus介绍2. GDBus的优点3. 安装GDBus4. 使用GDBus连接到D-Bus总线实现D-Bus服务调用D-Bus方法发送和接收信号 5. 总结 在Linux环境下,不同的程序需要通过某种方式进行通信和协同工作。GDBus是GLib库的一部分,提供了一个基于GObject系统的、…

单片机-点亮第一盏灯

原理图 需求:点亮或是熄灭LED 通过控制 P5.3引脚输出高电平时,LED灯就点亮,输出低电平时LED灯就熄灭 1.项目创建 新建项目 配置开发板信息 当前位STC芯片的开发板,选择STC MCU Database 搜素具体芯片型号,进行配置…

[MySQL数据库] Java的JDBC编程(MySQL数据库基础操作完结)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

【北京迅为】《iTOP-3588开发板快速烧写手册》-第8章 TF启动

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

python同时进行字符串的多种替换

一些常见的方法: 使用str.replace()方法:这是一种简单的方法,但是如果你有多个替换需要进行,可能会变得很繁琐。 text "This is a sample text with some words." text text.replace("sample", "exa…