多数企业仍停留在Java8的原因
简单说来,就是Java8面向企业需要收费了,所以很多大企业和开源组织共同开始“停留”在了Java8。虽然很多支持Java11及其他版本,但Java8仍然是大家不得不去兼容的旧版本。
Oracle这一波收费的操作,给了其他语言一个非常好的生存机会,尤其是.Net之类相似的语言(同期.Net支持了跨平台,据说也有了更好的服务器部署的支持)。同时由于企业应用版本的止步不前,让广大开发者感觉Java已经停止了脚步,对于高手精进的空间开始变小,对于学习能力强的新手不如拥抱Python或者Go,一般般水平的开发者,也可以根据好多年前的教程快速学上手。这也让Java在开发鄙视链上受到了关注。
不过,Oracle终于还是反应过来,在2021年做出了重要的改变,终于有望结束Java8的“LLLLLTS版本”。
Java17面向企业和个人均免费(2021年9月起)
为了方便阅读,页面翻译后给大家看一下:
详情可见:https://www.oracle.com/java/technologies/downloads/#java17
为什么要升级Java17
原因1
Java8到Java17有着诸多提升,也有着不少令人期待的新特性。其中最让人期待的就是GC新特性,更可靠的G1、ZGC和ShenandoahGC等,不仅更快、而且更稳定;
- 吞吐量的对比
- 延迟,ZGC简直给了Java新的生机
-资源占用,资源换时间的角度,没啥毛平
原因2
Spring官宣了新版本的Spring Framework 6.0和Spring Boot 3.0将会以Java17作为最低支持的Java版本,换言之,就是开源方已经官宣放弃Java8和11。既然此趋势已经开始,那么作为开发者,也需要开始拥抱它。
原因3
Java17会支持很长时间
据了解,Java17会一直支持到2029年,估计已经足够支持很多人的职业生涯了。
原因4
可能有人想,企业所用的系统全部基于Java8,如果升级到Java17则可能会有不可预知的风险。其实多数情况过渡还是比较平滑的,向下兼容还不错,应该不需要过多担心。主要是启动参数估计会有比较多的修改,其余通过升级依赖多数都是可以轻松解决的。
还有一点不得不提的点,比如报空指针,都会在报错时声明是哪个参数报错的(我不清楚从哪个版本开始支持的,但Java8上确实是个头疼的问题),从此链式编程、函数式编程可以更轻松地排查错误了。
后面会另写文档说明Java8到Java17的主要变化和升级方法的文章。