点击关注下方公众号,架构师全套资料 都在这里

0、2T架构师学习资料干货分享

作者:不叫月红
来源:blog.csdn.net/mengyidan/article/details/120308102

上一篇:深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的?

大家好,我是互联网架构师。

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。

1

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了。

2

要不要升级呢?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:org.optaplanner.examples.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还能保持霸主地位吗?

参考链接:

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.htm

看完这篇文章,你有什么收获?欢迎在留言区与10w+Java开发者一起讨论~

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

· END ·

最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。

正文结束

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?

点击「阅读原文」加入我们的小圈子!

Java17,有史以来最快 JDK!相关推荐

  1. Java 17,有史以来速度最快 JDK!

    点击"开发者技术前线",选择"星标" 让一部分开发者看到未来 Java 17 已正式发布,该版本是自Java 11以来的首个长期支持版本.Oracle 还提议将 ...

  2. 英伟达发布有史以来最快的人工智能显卡Titan V

    英伟达发布了最新一代Titan显卡Titan V,它集成了英伟达最新一代GPU技术,适合科学场景中的计算处理. 全新Titan V图形处理器(graphics-processor-unit,GPU)能 ...

  3. 日志打印的15个建议!血泪啊!

    往期热门文章: 1.List中remove()方法的陷阱,被坑惨了! 2.Facebook 全球宕机 6 小时!到底遇到了什么问题?? 3.放弃使用 15 年的 MacOS,我决定换成 Linux! ...

  4. 2名数学家或发现史上最快超大乘法运算法,欲破解困扰人类近半个世纪的问题...

    早在数千年之前,巴比伦人就已经发明了乘法.而就在上个月,数学家们又对这一运算方式进行了优化,使它越来越完美. 3 月 18 日,两位研究人员有可能发现有史以来最快的计算两个超大数的乘法运算方式.这篇论 ...

  5. 揭秘!最快大数乘法运算

    早在数千年之前,巴比伦人就已经发明了乘法.而就在上个月,数学家们又对这一运算方式进行了优化,使它越来越完美. 最近,两位研究人员有可能发现有史以来最快的计算两个超大数的乘法运算方式.这篇论文的诞生,也 ...

  6. 使Gradle构建更快 2016年2月5日奥列格Shelajev3评论 推特 inShare 70 上次我们谈到了构建系统,我们看着一些建议可能会使您的Maven构建更快。我们得到的结果是迷人的和对

    使Gradle构建更快 2016年2月5日 奥列格Shelajev 3评论 推特 inShare70 上次我们谈到了构建系统,我们看着一些建议可能会使您的Maven构建更快.我们得到的结果是迷人的和对 ...

  7. iPhone 14截屏带岛/ Shopee中国裁员/ 世界最快电动机诞生...今日更多新鲜事在此...

    日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大噶吼!今天是本周的第二个工作日. 科技圈还有哪些值得关注的新鲜事? 日报君在此呈上~ iPhone14截屏带岛 轰动一时的iPhone 14灵 ...

  8. 创造了不起丨TiKV Committer 的最快养成方法

    一月末,一位大三的少年登上了知乎热榜,有数百万人浏览了迟先生的"凡尔赛"语录:"即使一周实习 3 天,我依然拿到了上海交通大学计算机学院第一的绩点."迟先生是上 ...

  9. JDK的两个大版本,为什么要选LTS

    文章目录 1.什么是JDK 2.Oracle JDK和Open JDK 3.什么是LTS 4.有哪些Open JDK发行版可选 5.LTS版本的主要特性 5.1.Java8 5.2.Java11 5. ...

  10. 一篇文章让你学会spring

    Spring6 1.概述 1.1.Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由"Spring 之父"Rod Johnson ...

最新文章

  1. “他们”最想要的圣诞礼物是你的...
  2. C#中json序列化与反序列化
  3. 财税、管理知识,离您那么远吗?
  4. java 线程 插件_我的第一个Chrome插件:天气预报应用
  5. Redmine使用手册
  6. 视频怎么转换html代码实现,音视频格式转换神器与html视频元素加字幕——零基础自学网页制作...
  7. 微信小程序————样式
  8. 图片表格如何转换成excel表格
  9. 巨头争云存储祭免费旗 或重演视频业消耗战
  10. c盘清理缓存垃圾路径
  11. 朱棣文 哈佛开学典礼演讲
  12. JavaScript中加号运算符+ 运算过程理解
  13. ipv4和ipv6连通性相关工具实例
  14. SQL数据库-创建数据库
  15. maya 白天室内灯光_maya室内灯光问题
  16. python制作手机壁纸_用Python生成自己专属的手机春节壁纸
  17. 期货平仓是先开先平吗(期货怎么先平新仓)
  18. java事务 spring事务 分布式事物
  19. html图片要上下居中显示,CSS图片垂直居中最简单的方法推荐
  20. Flutter 侧滑栏UI及城市选择UI的实现

热门文章

  1. EasyRecovery---视频文件恢复技巧
  2. 通过Spring Boot中的手动Bean定义提高启动性能
  3. Android实现“是否退出”对话框和“带图标的列表”对话框
  4. C和指针---第十一章:动态内存分配
  5. 使用Ntdsutil.exe捕获系统状态数据
  6. 李开复周鸿祎谈乔布斯:iPad做了经典减法
  7. C#编译器对泛型方法调用作类型推断的奇怪问题
  8. iOS开发判断字符串为null
  9. TypeIt4Me for Mac(快捷输入自定义工具)
  10. iZotope RX 9 for Mac(受损音频修复工具)