背景
年Spring6和SpringBoot3相继推出,在此之前,Java社区一直是"新版任你发,我用Java8",不管新版本怎么出,很少有人愿意升级。
这一次,Spring直接来了个大招,SpringBoot3和Spring6的最低依赖就是JDK17!跨过JDK8-16,直接升级到JDK17。那么为什么是JDK17呢?
为什么是JDK17
这么多新版本的JDK,而且年还会推出JDK18和JDK19,为什么Spring选择了JDK17呢。
主要是因为他是一个Oracle官宣可以免费商用的LTS版本,所谓LTS,是LongTermSupport,也就是官方保证会长期支持的版本。
上面这张图是Oracle官方给出的OracleJDK支持的时间线。可以看得到,JDK17最多可以支持到年9月份。按照技术更新迭代的速度,这次免费商用8年可谓是良苦用心,为的就是让使用者放心大胆地将JDK升级到JDK17(不过JDK8支持的时间更长,可以延长到年12月,JDK8可谓是YYDS!)
从JDK诞生到现在,还在长期支持的版本主要有JDK7、JDK8、JDK11以及JDK1,JDK17将是继Java8以来最重要的LTS版本,是Java社区八年努力的成果。
一直以来,Java8都是Java社区心头的痛,Java8提供了很多特性,比如Lambda表达式、Optional类,加上Java8超长的支持时间,都导致了JDK8的使用至今。它代表着以稳定性为主的企业管理层与拥抱变化为主的程序猿之间的拉锯战。不升!成为各大厂心照不宣的选择。现在,这种平衡或将打破。因为Java届的霸主框架SpringBoot,选择了最小支持的Javalts版本,就是最新的Java17。
那么接下来,让我们看看,从JDK8到JDK17,Java社区八年努力的成果有哪些?
从JDK8到JDK17的新特性
JDK9新特性(年9月)
模块化
提供了List.of()、Set.of()、Map.of()和Map.ofEntries()等工厂方法
接口支持私有方法
Optional类改进
多版本兼容Jar包
JShell工具
try-with-resources的改进
StreamAPI的改进
设置G1为JVM默认垃圾收集器
支持