2022 Java生态系统报告:Java 11超Java 8、Oracle在缩水、Amazon在崛起!

近日,New Relic发布了最新的2022 Java生态系统报告,这份报告可以帮助我们深入的了解Java体系的最新使用情况,下面就一起来看看2022年,Java发展的怎么样了,还是Java 8 YYDS吗?
Java 11成为新的标准
在2020年的时候,Java 11已经推出了1年多,但当时Java 8的占有率高达84.48%。2年过去了,Java 11上生产的比例第一次超过Java 8,占有率已经达到了48.44%。曾今的霸主Java 8几乎跌掉了一半,以46.45%占据第二。

而大势所趋的、整个Java生态都在拥抱的Java 17在排行榜上还是处于比较低的位置。这个其实还是意料之中的,因为生态的支持还需要一定时间的演进,比如Spring这个Java生态的大基座,对于Java 17的重要支持还要等到今年年底的Spring Boot 3发布(对这部分感兴趣的小伙伴记得关注我,公众号程序猿DD,长期分享这块最前沿的专业解读),同时周边的其他各种框架、中间件也都要全面更上之后,才真正具备上生产的成熟度。
所以,先从Java 8到Java 11,还是一个不错的选择,小步快跑,免得到时候直接从Java 8到Java 17,步子太大,扯到x就不好了...
我正在连载Java 8之后的新特性解读,这次一改之前的博客风格,采用文档(https://www.didispace.com/java-features/)+ 视频(B站、视频号)的方式编写,阅读与学习体验更加。感兴趣的小伙可以关注收藏起来,能转发分享下那是更好,这样更有更新的动力。

最流行的非LTS版本:Java 14
从Java 9开始,Java版本的发布模式发生了变化。每隔6个月就会有一个新版本发布,但这些版本只在下一个版本之前受到官方支持。这样做的目的是让新功能更频繁可用。
但是,与生产中的LTS版本相比,这些临时的非LTS版本使用率一直都非常低,只有2.7%的应用程序在使用。
虽然像Azul Systems这样的一些供应商在一些非LTS版本上提供了补丁,但大多数的供应商没有这么做。这可能是为什么大家不愿意使用的原因。在非LTS Java版本中,Java 14最受欢迎。

Oracle在缩水,Amazon在崛起
这次的报告中,值得关注的是JDK发行版的变化。虽然大部分开发人员还是会从Oracle获得JDK,而OpenJDK项目中的开源内容已经产生了丰富的选择。

上图显示了Oracle在对其JDK 11发行版进行更严格的许可证控制之后(在使用Java 17返回到更开放的立场之前)的变化。2020年的时候,Oracle以绝对优势(约占Java市场的75%)成为最受欢迎的供应商。2年过去了,虽然他们依然还是头把交椅,但他们的份额已经减少了一半。而Amazon的市场占有率从2020年的2.18%大幅攀升至22%。
从2021年11月以来,还有一些有趣的变化:在Java 17发布之前,Eclipse Adoptium和Amazon在这份榜单上几乎处于完全相反的位置。
容器中的资源分配
计算资源的配置
容器会影响人们分配计算和内存资源的方式。这份报告中的数据显示,在容器中运行的应用程序中,少于四个核心的应用程序所占的比例要高得多。

在人们经常部署容器的云环境中,小规模运行的驱动力很有意义。但这一趋势可能会给一些应用程序带来意想不到的问题。比如:当运行的内核少于2个时,在最近JVM上使用默认的G1垃圾收集器所带来的许多并发好处就消失了。所有这些单核实例可能都在使用串行收集器,并为此付出了性能代价,但许多人可能甚至不知道这一点。
内存资源的配置
在比较内存设置时,也会出现类似的趋势,它们倾向于给容器中的实例分配更小的内存。
该报告中显示,只有大约80%的容器化应用程序通过-XMX或-XX:MaxRAMPercentage标志显式请求JVM内存上限。从Java 9开始,JVM中的容器感知功能意味着这可能不会像过去那样对这些应用程序造成安全问题,只要JVM是每个容器中运行的唯一进程。

最常用的垃圾收集算法
垃圾收集(GC)算法在JVM性能中起到核心作用,所以这块一直以来都是社区讨论最多的话题。新的数据显示,在Java 8之后,垃圾收集器的使用发生了明显的变化。

G1的总体受欢迎程度非常高。考虑到Java 11和更高版本上的G1收集器具有更新的默认设置和更高的性能,所以这一结果这并不令人惊讶。
原始报告我放到公众号里了,对细节内容感兴趣的话,可以在公众号中发送关键词:relic-java-2022,获取完整报告。
好了,今天的分析那个就到这里!如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群,参与交流与讨论,更好的学习与进步!
欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源
2022 Java生态系统报告:Java 11超Java 8、Oracle在缩水、Amazon在崛起!的更多相关文章
- Error:(12, 64) java: 未报告的异常错误java.io.IOException; 必须对其进行捕获或声明以便抛出
Error:(12, 64) java: 未报告的异常错误java.io.IOException; 必须对其进行捕获或声明以便抛出 package com.test; import org.apach ...
- 20175236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:温丰帆 学号:20175236 指导教师:娄嘉鹏 实验日期:2019年4月2日 实验时间:13:45 - 15:25 实验序号:实验一 ...
- 20175325 《JAVA程序设计》实验一 《JAVA开发环境的熟悉》实验报告
20175325 <JAVA程序设计>实验一 <JAVA开发环境的熟悉>实验报告 一.实验内容及步骤 (一).实验一: 实验要求: 0 参考实验要求 1 建立"自己学 ...
- Java实验报告一:Java开发环境的熟悉
实验要求: 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 实验内容 (一) 命令行下Java程序开发 (二)Eclipse下Java程序 ...
- 20155205 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155205 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一:打开mac下的 ...
- 20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20165227 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱越 学号:20165227 指导教师:娄 ...
- 20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155303 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一(新建文件夹): ...
- 20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告
20155218 <Java程序设计>实验三(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)编码标准 在IDEA中使用工具(Code->Reformate Code) ...
- 20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告
20155218 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)单元测试 主要学习安装和使用junit来测试编写的程序,并学习以TDD(Test ...
随机推荐
- B+树叶子节点数据如何存储,以及如何查找某一条数据
MySQL索引背后的数据结构及算法原理 https://www.kancloud.cn/kancloud/theory-of-mysql-index 非常好 根据一条sql 如何查看索引结构等信息 ...
- 如果一个表有一列定义为 TIMESTAMP,将发生什么?
每当行被更改时,时间戳字段将获取当前时间戳. 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况? 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用. 怎样才 ...
- 两个相同的对象会有不同的的 hash code 吗?
不能,根据 hash code 的规定,这是不可能的.
- Servlet与JSP之间相互传值问题
一.JSP向Servlet传值 JSP向Servlet传值的方式有三种:URL后面跟参数.form表单提交.在JSP内置对象Session设置值. URL后面跟参数 JSP文件:<a href= ...
- Go 语言 结构体
Go 语言 结构体 引言Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型结构体是由一系列具有相同类型或不同类型的数据构成的数据集合结构体表示一项记录,比如保存图书 ...
- CommonsCollection3
CommonsCollection3 1.前置知识 CommonsCollection3其实就是cc1和cc2的组合,不用再学那么多知识了,再学习另两个生面孔类 1.1.InstantiateTran ...
- django REST框架- Django-ninja
Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解. ...
- Python中对象、类型、元类之间的关系
Python里的对象.类型和元类的关系很微妙也很有意思. 1989年圣诞节期间,上帝很无聊,于是创造了一个世界. 对象 在这个世界的运转有几条定律. 1.一切都是对象 对象(object)是这个世界的 ...
- 用css动态实现圆环百分比分配——初探css3动画
最近的小程序项目有个设计图要求做一个圆环,两种颜色分配,分别代表可用金额和冻结金额.要是就直接这么显示,感觉好像挺没水平??于是我决定做个动态! 在mdn把新特性gradients(渐变).trans ...
- 夏日葵电商:连锁零售店小程序o2o系统解决方案
公众平台"附近小程序"功能上线后,一个主体账号可以同时绑定N+个门店,这对连锁零售店铺来说是重磅福利呀,无论你是通过搜索还是线下扫码进入小程序,线上与线下都完全贯通了,线上多种入口 ...