Java17,有史以来最快JDK!
点击上⽅“芋道源码”,选择“”
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 10:33 更新⽂章,每天掉亿点点头发...
源码精品专栏
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官博
⾃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了。
推荐下⾃⼰做的 Spring Boot 的实战项⽬:
看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换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 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)
-Xmx3840M并明确指定垃圾收集器:
-XX:+UseG1GC 对于 G1GC,低延迟垃圾收集器(所有三个 JDK 中的默认值);
-XX:+UseParallelGC 对于 ParallelGC,⾼吞吐量垃圾收集器。
amples.app.GeneralOptaPlannerBenchmarkApp 来⾃ optaplanner-examplesOptaPlanner 中的模块
8.10.0.Final。
每次运⾏都使⽤ 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还能保持霸主地位吗?欢迎加⼊我的知识星球,⼀起探讨架构,交流源码。加⼊⽅式,长按下⽅⼆维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X ⼊门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W ⾏代码的 SpringBoot ⽰例,以及超 4W ⾏代码的电商微服务项⽬。
获取⽅式:点“在看”,关注并回复 666 领取,更多内容陆续奉上。
⽂章有帮助的话,在看,转发吧。谢谢⽀持哟 (*^__^*)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论