时间:2022-10-09 15:36:32 | 浏览:286
整理 | 梦依丹
出品 | CSDN(ID:CSDNnews)
Java 17 已正式发布,该版本是自Java 11以来的首个长期支持版本。Oracle 还提议将 JDK LTS发布的节奏从每三年一次改为每两年一次,并且每个LTS 版本的服务时间至少8年以上。Java 版本通常是6个月一更新,时间分别在3月和9月,而这些版本的支持时间基本在半年左右。
Java各个版本的生命周期
据Oralce官博透露,虽然6个月版本的使用人数在增长,但大部分组织及企业更倾向于把LTS版本用在生产环境中,从而得到更加稳定可靠的服务。这一点从Snyk发布的2021 Java社区报告中也可以得到证实,虽然有61.5%的人在生产中使用Java 11,但仍有一半的Java 11用户(目前使用最多的版本)在他们的生产堆栈中使用Java 8。
Oracle 推出 Free Java License
截图自Oracle官博
自Java被Oralce收购以后,付费JDK就一直被人诟病,现在好了,Oracle 宣布推出JDK免费服务。什么意思呢?让我们来看一下官方解释:
Oracle正在为行业提供免费的,领先的Oralce JDK,包括所有季度安全更新,并包含商业和生产用途。
新许可是“Oracle 免费条款和条件”(NFTC) 许可。此Oracle JDK许可证允许所有用户免费使用,甚至可以用于商业和生产用途。只要不收费,再分发是允许的。
开发人员和组织现在无需点击即可轻松下载、使用、共享和重新分发 Oracle JDK。
Oracle 将从Oracle JDK 17开始提供这些免费版本和更新,并在下一个 LTS 版本之后继续提供整整一年。以前的版本不受此更改的影响。
Oracle 将继续按照自 Java 9 以来的相同版本和时间表提供GPL下的Oracle OpenJDK 版本。
总结成一句话,“免费”也并不意味着开发者可以随心所欲,因为Oracle的 NFTC 是禁止付费重新分发其 Java 软件。
而在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划在2022年第四季度实现总体可用性的高端基线:
Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)
Jakarta EE 9+(来自Spring框架5.3.x 线中的 Java EE 7-8)
通过实际行动来支持 Java 17,间接呼吁开发者,是时候使用 Java 17了。
要不要升级呢?Java 17 到底有多快?
看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?通过比较 JDK 17、JDK 16 和 JDK 11 来告诉你答案。
基准方法
硬件:一个稳定的机器不运行任何其他的计算要求苛刻的流程,配置:Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads)和128 GiBRAM内存,运行RHEL 8 x86_64。
JDK版本
JDK 11
openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode)
JDK 16
openjdk 16.0.2 2021-07-20
OpenJDK Runtime Environment (build 16.0.2+7-67)
OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
JDK 17
openjdk 17 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
JVM 选项:-Xmx3840M
并明确指定垃圾收集器:
-XX:+UseG1GC
对于 G1GC,低延迟垃圾收集器(所有三个 JDK 中的默认值);
-XX:+UseParallelGC
对于 ParallelGC,高吞吐量垃圾收集器。
Main class:
来自
中的模块8.10.0.Final。
optaplanner-examplesOptaPlanner
每次运行都使用 OptaPlanner 解决 11 个规划问题,例如 员工排班、 学校时间表和云优化。每个规划问题运行 5 分钟。日志记录设置为INFO。基准测试以 30 秒的 JVM 预热(warm up)开始,随后丢弃。
解决规划问题不涉及IO(除了在启动期间加载输入的几毫秒)。单个CPU完全饱和。它不断地创建许多短期存在的对象,然后 GC 将它们收集起来。
基准衡量每秒计算的分数数量,越高越好。为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。
运行次数:每个JDK 和每个垃圾收集器组合按顺序运行 3 次。下面的结果是这 3 次运行的平均值。
Java 11 (LTS) 和 Java 16 与 Java 17 (LTS)
表 1. 在不同 JDK 上使用 G1GC 的每秒计算得分
表 2. 在不同 JDK 上使用 ParallelGC 的每秒计算得分
备注:
查看 3 次单独运行的原始数据(此处未显示),机器重新分配数(B1 和 B10)在同一 JDK 和 GC 上的运行之间波动很大,通常超过10%,其他数字不会受到这种不可靠性的影响。
可以以说忽略 Machine Reassignment numbers 更好。但是为了避免挑选数据的问题,这些结果和平均值确实把它们包括进来了。
Java 17 上的 G1GC 与 ParallelGC
表 3.JDK 17 下不同 GC 每秒的计算得分
基准测试总结
平均而言,以 OptaPlanner 为例的基准测试结果表明:
对于 G1GC(默认),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41%。
对于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37%。
Parallel GC 比 G1 GC 快 16.39%。
多说一句
在基于 JDK 15 的基准测试中,Java 15 比 Java 11 快 11.24%。现在,Java 17 相对于 Java 11 的增益更少。这是否意味着 Java 17 比 Java 15 慢?
答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。
结论
总而言之,JDK17 的性能表现还是非常值得升级的,至少于OptaPlanner Demo 而言。
此外,这些用例最快的垃圾收集器仍然是ParallelGC, 而不是G1GC(默认)。
作为3年后首次发布的LTS版本的Java 17给你带来了哪些惊喜?面对Go、Kotlion等JVM的强势发展,你觉得Java还能保持霸主地位吗?
参考链接:
https://mail.openjdk.java.net/pipermail/jdk-dev/2021-September/006037.html
https://mail.openjdk.java.net/pipermail/jdk-dev/2021-September/006037.html
https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html
很多同学纠结自己应该学C语言还是学Java,本篇文章带你细致了解C语言与Java的各方面的不同之处,让你能够更全面的把握编程语言!1.Java与C语言各自的优势C语言是面向过程的语言,执行效率高;Java是面向对象的语言,执行效率比C语言低
这个问题在入门阶段一直是争议十分大的问题,反正学长每次去网上找新手应该学什么编程语言的时候,就会出现五花八门的推荐,n多语言,n多推荐,搞的新手一会听说这种语言适合新手,于是学习这种语言。一会又有人说xx语言是垃圾、弱爆了,学了也没用,之类
最新的 TIOBE 5 月编程语言榜单出炉,不妨一起来看一下又有哪些新的趋势。C# 的使用量增幅最高,C++ 或将冲击 Top 3和 4 月 相比,本月编程语言 Top 10 并没有明显的位置变化,Top 5 依然是 Python、C、Ja
出品|开源中国TIOBE 公布了 2022 年 6 月的编程语言排行榜。上月榜单内容曾指出,C# 和 C++ 将有望取代 C 进入 Top 3;时至本月,榜单头条信息则是 C++ 即将超越 Java,进入榜单前三。TIOBE CEO Pau
首先,任何编程语言都有其特定的应用场景,当这门编程语言的应用场景已经发生根本变化时,编程语言往往也就会结束自己的生命周期,所以未来C++语言、Java语言,包括Python语言,终会有被淘汰的那一天。编程语言说到底仅仅是一种工具,而工具必然
译者 | 刘畅出品 | AI科技大本营(ID:rgznai100)将早期的编程语言(例如COBOL)的代码库迁移到现在的编程语言(例如Java或C++)是一项艰巨的任务,它需要源语言和目标语言方面的专业知识。COBOL如今仍在全球大型的系统
还记得美国前一阵要招聘60岁的老程序员吗?都怪编程语言发展太快!因为新冠疫情的缘故,美国一些地区的失业救济系统不堪重负,而这些系统都是上古语言COBOL写的。然而,现在早已经是C/C++、Java、Python的天下了,把COBOL程序换成
来源:AI科技大本营本文约1600字,建议阅读8分钟。“Java对于大型编程项目来说实在是复杂且冗长了,急需这样一款工具。”近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序
前言什么是 V8?JavaScript运行的背后发生了什么?如果你是一个 JS 开发者或者是正在学习这门语言的学生,很大概率上你会遇到双字母词”V8”。在这篇文章中,我将会为你简述不同的 JS 引擎并深入探究 V8 引擎的工作机制。文章的第
自从我们在《2020 年 Java 将何去何从》(Where"s Java Going In 2020)中深度探讨 Java 生态系统以来,已经有一段时间了。JRebel 最新发布的《2022 年 Java 发展趋势和分析》报告(Java