为什么很多公司选择不升级JDK版本,仍然使用JDK8?

关于这个问题我个人认为有两个原因:
原因一
Oracle 对2019 年 1 月以后发布的 Java SE 8 公开更新需要获取商用许可证,不向没有商用许可证的业务、商用或生产用途提供,在2019年

本文最后更新时间:  2023-02-27 00:44:02

确实如题主所说,目前大部分公司依旧在用jdk1.8的版本,我在面试的时候通常情况下都会问一下候选人之前公司线上使用的jdk版本,目前还没有遇到使用1.8以上的版本,所以我们通常在面试交流的时候基本上都会基于1.8版本~

那么问题来了,JDK14已经于2020年3月17日如期发布,为什么大家还在普遍使用JDK8的版本?

Oracle的JDK路线图

大家可以去oracle官网看看oracle公司对各个版本的JDK版本支持路线图,文章地址如下:

https://www.oracle.com/java/technologies/java-se-support-roadmap.html

各版本支持如下表:

可以看到自JDK8以后,只有JDK11是LTS(Long Term Support)的,其他9、10、12、13、14以及还未发布的15都是non-LTS的。

那么对于使用JDK的公司来说,只有JDK8和JDK11可以选择,你官方都说不是长期演进版的,我们还用干嘛?

用JDK8还是JDK11?

oracle已经告诉我们了要么使用JDK8,要么使用JDK11,那么到底是使用JDK8还是使用JDK11呢?

说到JDK8的新特性大家都如数家珍,什么stream流操作、lambda表达式、HashMap的优化、ConcurrentHashMap的锁优化、Synchronized的锁升级优化、Optional等等,使用的时候也是轻车熟路,网上相关文章也是数不胜数,面试的时候也是必问的。

JDK11呢?似乎面试时候大家也不问,大家用的也不多,即使去学习了,去代码实操了,但是过段时间也忘了,这就意味着有开发成本和试错成本,俗话就是有坑需要踩。

不是说JDK11有坑,是咱们用JDK11开发有坑,也许你用了其中的一个新特性,觉得很牛逼,然后上线了,然后运行一段时间了就不知不觉的出bug了,然后你还不知道问题出在哪,想想是不是很恐怖?

老项目不用多说,肯定是不会轻易升级JDK版本的,公司不可能给你提供这个资源来升级JDK版本,除非说JDK8有bug,然而JDK8很稳定,性能也很好。网上有关于JDK8和JDK11的性能测试相关文章,大家可以搜一搜。

那新项目用JDK11可不可以呢?用过JDK11开发项目的同学应该会有了解,他是无法向下兼容的。也就是如果你决定使用JDK11,意味着你需要单独的一套环境来运行你这个项目,之前的运维环境你通通都不行,然后你还要考虑更多的是你项目使用的其他第三方依赖包是否是基于JDK11开发的?所有的一切你都得小心点,你需要能够彻底的掌控它~

JDK11是早晚的事情

无论怎么说,最终我们都会慢慢转向JDK11甚至更高的版本!

有的同学会说JDK8不收费,JDK11需要商业使用许可证,意味着收费。其实我觉得这点不用担心,开源的力量足以让社区版本高可用。除非你需要oracle公司的商业支持。

也许有一天JDK8会成为历史,就像现在大家看JDK6一样:“如果有公司还在使用JDK6,你会感觉这个公司技术真low”。

我现在唯一能期待的是,但愿那个时候我们都还在Coding,仅此而已~

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。