java实验报告实验总结
1995 年,Sun Microsystem 公司发布了 Java 程序设计语言,为开发现代多媒体应用程序提供了一种更加可移植和交互的方式。从那时起,Java 便成为主流的编程语言之一,被应用于各行各业,也有着“一次编写,到处运行”的优势特性。
近日,为揭晓 Java 生态系统的最新发展状况,分析公司 New Relic 在调研了新版本、容器应用、垃圾回收等特性之后,最新发布了《2023 年 Java 生态系统现状》报告。
在本文中,我们将与大家共同深入了解这门被广泛应用的编程语言。
Java 17 的采用率在一年内增长了 430%
众所周知,Java 版本分为长期支持(LTS)和短期支持支持版本。一般长期支持的版本都比较稳定,或者官方会不断更新补丁包。短期支持版本只是作为过渡版存在。
自 2017 年 Oracle 将 Java 版本的更新频率更改为六个月一次时,长期支持 LTS 版本大概 2-3 年更新一次。不过,这种高频的更新率让无数网友怨声载道,学不动的声音不绝于耳,以至于很多人呈现出“你更任你更,我不用”的“摆烂”状态。
这不,Oracle 在今年 3 月最新发布了 Java 20 版本。不过,据最新数据报告显示,Java 11 已连续两年位居榜首,成为开发者最常用的 Java 版本。
当下,超过 56% 的应用程序在生产中使用 Java 11,这一比例要高于 2022 年的 48% 和 2020 年的 11%。
Java 8 的使用率紧随其后,近 33% 的应用程序在生产中使用它(低于 2022 年的 46%)。
虽然 Java 11 稳居第一,但是最新的 LTS 版本 Java 17 的采用率逐年攀升,从去年不到 1% 的比例,迅速增长至今年的超过 9% 的占比。研究报告显示,Java 17 在过去一年内增长率为 430%,而彼时 Java 11 花了数年时间才达到那个水平。
相较之下,只有 0.28% 的应用程序仍在生产中使用 Java 7。这并非没有根由,究其原因,是因为官方对 Java 7 的支持已于 2022 年结束。大多数使用 Java 7 的应用程序都是尚未升级的遗留应用程序。
Java 14 是最受欢迎的非 LTS 版本与 LTS 版本相比,短期的非 LTS Java 版本的使用率仍然极低,只有 1.6% 的应用程序使用非 LTS Java 版本(低于 2022 年的 2.7%)。
根据报告调研发现,可能导致影响非 LTS 版本使用率下降的一些因素包括:
缺乏支持
缺乏吸引力的新功能
距离下一个 LTS 版本发布的时间太短
曾几何时,Java 8 发布了之后,外界并不能知晓下一个 LTS 版本 Java 11 会什么时候发布。不过,后来 ,Oracle 明确做出承诺:六个月一次更新,自此大家都有了清晰的认知,自然宁愿等等下一个 LTS 版本,也不愿在生产环境使用不稳定的非 LTS 版本。
数据显示,在使用的非 LTS Java 版本中,Java 14 仍然是最受欢迎的,占比0.57%(低于 2022 年的 0.95%),Java 15 紧随其后(0.44%,低于 2022 年的 0.70%)。
亚马逊现在是最受欢迎的 JDK 供应商
近年来,使用的 Java Developer Kit (JDK) 发行版的源代码发生了变化。过去,很多开发人员常常从 Oracle 获得他们的 JDK,但是 Oracle JDK 后来针对商业应用采取收费政策,这也让很多人望而却步,好在 OpenJDK 项目日渐丰富,成为众人的选择。
调查数据显示,2020 年,Oracle 是最受欢迎的 JDK 供应商,约占 Java 市场的 75%。在其 JDK 11 发行版的许可更严格之后(在 Java 17 回归更开放的立场之前),业界开发者开始逐渐远离 Oracle。虽然 Oracle 在 2022 年以 34% 的份额保持榜首,但在 2023 年下滑至 28%。
与之形成鲜明对比的是,Amazon 的使用率急剧上升至 31% 的市场份额(从2020 年的 2.18% 和 2022 年的 22%),使其成为最受欢迎的 JDK 供应商。
容器化应用程序已成为主流,据 New Relic 调研显示,70% 的 Java 应用来自容器。
容器会影响工程团队分配计算和内存资源的方式。例如,New Relic 数据显示,在容器中运行的应用程序少于 4core 的比例要高得多。
工程团队正在摆脱容器中的单核设置,只有 36% 在使用(低于 2022 年的 42%),并转向多核设置,超过 29% 使用 8core 设置(高于 2022 年的 20%)。
工程团队通常在他们经常部署容器的云环境中使用较小的计算设置。但是,这种趋势可能会给某些应用程序带来意想不到的问题,这可能会导致配置减少。例如,如果团队只使用一个 CPU,他们可能得不到他们期望的垃圾收集器——即使他们明确地设置了它。
垃圾回收
自动垃圾收集是查看堆内存、识别哪些对象正在使用、哪些未使用以及删除未使用对象的过程。 鉴于其在 JVM 性能中的核心作用,垃圾回收仍然是 Java 社区中的热门话题。
New Relic 数据显示,Garbage-First (G1) 垃圾收集器仍然是使用 Java 11 或更高版本的用户的最爱,65% 的客户使用它。G1 的主要好处之一是,它清除较小的区域而不是一次性清除大区域,从而优化了收集过程。它还很少冻结执行并且可以同时收集年轻代和老年代,这使它成为工程师的一个很好的默认设置。
其他在 Java 8 之后出现的实验性垃圾收集器(ZGC 和 Shenandoah)在生产系统中的使用仍然很少。两者都有生产就绪版本,但在一般处理中仍然可以忽略不计。
完整的报告内容详见:https://newrelic.com/sites/default/files/2023-04/new-relic-2023-state-of-the-java-ecosystem-2023-04-20.pdf
","gnid":"925356a0f97d1273d","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b.gif","width":"640"},{"desc":"","height":"870","title":"","url":"https://p0.ssl.img.360kuai.com/t0115a10f4e338f530a.jpg","width":"1080"},{"desc":"","height":"648","title":"","url":"https://p0.ssl.img.360kuai.com/t0151a341e92bf653ac.jpg","width":"1080"},{"desc":"","height":"682","title":"","url":"https://p0.ssl.img.360kuai.com/t01e2c6e2db4994f16e.jpg","width":"1080"},{"desc":"","height":"640","title":"","url":"https://p0.ssl.img.360kuai.com/t01e747a40d483a568d.jpg","width":"1080"},{"desc":"","height":"734","title":"","url":"https://p0.ssl.img.360kuai.com/t012e93c9761c103c2b.jpg","width":"579"}]}],"original":0,"pat":"pdc,zzc,art_src_1,sexf,sex4,sexc,disu_label,fts0,sts0","powerby":"hbase","pub_time":1685445975000,"pure":"","rawurl":"http://zm.news.so.com/3267b1e5c92ed1bb14db300448583f49","redirect":0,"rptid":"52be2cf899ff01da","rss_ext":[],"s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:java","k":"java","u":""}],"title":"Java 17 采用率增长 430%、Java 11 稳居第一,最新 Java 编程语言报告来了!
扈黎志2230JAVA接口的实验报告 -
凌烁竿13642496665 ______ 也不知道你想要什么样的// 接口类 public interface IAeraService { // d 为半径,计算面积 public int getArea(int l,int w); // d 为半径,计算周长 public int getC(int l,int w); }// 接口实现类 public class AreaImpl implements IAeraService { public int ...
扈黎志2230java中判断一个数的奇偶性的实验报告怎么写 -
凌烁竿13642496665 ______ if( n % 2 ==0 ){ System.out.println( n+ " 是偶数"); }else{ System.out.println( n+ " 是奇数"); }
扈黎志2230java简单计算器实验报告 -
凌烁竿13642496665 ______ import java.awt.*;import java.awt.event.*;import javax.swing.*;public class 计算器 extends JFrame implements ActionListener { private final String[] KEYS = { "7", ...
扈黎志2230java双色球的实验报告怎么写 -
凌烁竿13642496665 ______ public static String s() { Random ran = new Random(); StringBuffer sb = new StringBuffer(); int i = 0; while (i < 6) { int red = ran.nextInt(33) + 1; if (sb.indexOf(String.valueOf(red)) == -1) { sb.append(red + "|"); i++; } } int blue = ran.nextInt(16) + 1; sb.append(blue); return sb.toString(); }
扈黎志2230写Java程序的实验报告,在实验环境中应该写哪些东西呢? -
凌烁竿13642496665 ______ 计算机操作系统是XP还是WIN7,所用的IDE是eclipse还是其他的什么,差不多就这
扈黎志2230hello java的实验总结 -
凌烁竿13642496665 ______ 楼主输入:hello 电脑输出:hello 楼主输入:吃饭没~ 电脑输出:hello 楼主输入:问你吃饭没啊~ 电脑输出:hello...(就这样一节实验课就在这样互动下过去~ ) 最终~ 此实验充分证明 电脑不如人脑~ oh yeah~
扈黎志2230实验总结怎么写 -
凌烁竿13642496665 ______ 写作思路及要点:保持一定真实性. 正文: 在做测试技术的实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下子就将实验报告做完.直到做完测试实验时,我才明白其实并不容易做,但学到的知识与难度成正比,使...
扈黎志2230java八皇后问题的实验报告 -
凌烁竿13642496665 ______ http://blog.itweb2.com/article.asp?id=140 * * 8皇后问题: * * 问题描述: * 在一个8*8的棋盘里放置8个皇后,要求每个皇后两两之间不相冲突 *(在每一横列,竖列,斜列只有一个皇后). * * 数据表示: * 用一个 8 位的 8 进制数表示棋盘上...
扈黎志2230实验结论分析一般写什么内容 -
凌烁竿13642496665 ______ 实验结论分析是实验报告中非常重要的一部分,它是对实验结果进行评估和总结的过程.在实验结论分析中,通常需要写以下内容:1.实验结果的概述:在这一部分,需要简要地介绍实验结果的主要发现,以及这些结果与实验的研究目的是否一...
扈黎志2230电子实验总结 -
凌烁竿13642496665 ______ 实验总结 我们这次实验的题目是“元器件的识别及仪器的使用”,通过这次实验使我对一些基本元器件的了解更加深刻了,而且也已经基本掌握了示波器、信号发生器与稳压电源、万用表的基本使用.总之,在这次试验中,我学到了...