从Java8到Java17(十)

393 阅读2分钟

这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

这也是Java8到Java17系列的尾声了,Java越来越像kotlin,性能也在进步,啰嗦的语法也在不断优化。但有个现实的问题,讨论技术可以,要我升级那是不行的。对于很多人来说,Java8的一些语法甚至都是新技术。自从Java改成半年更新一个版本号之后,很多人就更有不更新的理由了。或许很多人在等待市场,他们希望更新的大潮来临时再去跟随,这样做显然是最安全的。但这就跟买股票一样,等你看到股票在涨时再买,可能只能赚点小钱,甚至高位接盘。作为时代的弄潮儿,升级一个LTS版本肯定不会有错,如果不行至少还有Java8作为回退的底线,不会有什么损失。

本文作为收尾篇,在这里讨论一下最新的Java17的性能如何。首先结论肯定是提升的,按照苹果的调调:史上最强大的Java。Java17的快速体现在2个方面:

  • 精心优化的API,在前文中有所提及,包括SIMD的支持
  • 强大的ParallelGC,取代G1GC

那么数据到底如何呢?这里引用一个老外的测试数据,比较对象为Java11,Java16,Java17。Java8甚至都不是一个桌上的选手。

  1. 在G1GC下,跑一些计算场景,最下面2行是提升百分比

image.png

  1. 在ParallelGC下各个场景的性能表现,依然是Java17有明显的优势

image.png

  1. Java17本身使用G1GC和ParallelGC的性能对比

image.png

看来GC的性能对Java的性能表现有明显的影响,相比11也有着不错的优势。从这方面来说,在经历了3年的打磨之后,Java17取得了全方位的领先。相对CPU这样的硬件可以无脑堆晶体管数量来提升性能(当然,工艺的进步也很艰难,但如果不考虑芯片面积,想提升性能相对还是简单的),在如此成熟的JVM平台上做性能提升要难的多。总之Java17值得升级。