JDK的稳定版本
Java这个语言,1995 年发展至今,生态方面就不多说了,没有强大的生态,在科技快速发展的今天,是不可能被互联网企业与开发者认同的。
我们都知道,要使用Java语言,那么JDK就必不可少。
而经历了一代一代的变迁,JDK也慢慢更新换代,今年Oracle也是直接发布了JDK18,而到目前为止,我们的JDK存在了三个版本的长期支持版。
分别是JDK8、JDK11和JDK17。
而我们所说的长期支持版是什么呢?长期支持版本我们可以理解成一个项目会长期维护更新,也就是说,这三个版本是Oracle长期维护的JDK版本。而企业里面,就是需要长期支持版本,因为企业的项目需要稳定的开发环境。
如何选择
那JDK版本如此之多,我们改如何选择呢?毋庸置疑,我们肯定选择长期支持版本。
而我们长期支持版本中,JDK8是一个老熟人了,基本上Java大部分的项目都是基于JDK8环境。那既然这样,我们就来看看,JDK8的魅力。
JDK8
如果你在技术交流群或一群Java程序员中讨论JDK版本选择哪个,我相信,一般来说,他们都脱口而出:“JDK8”。
那么这个版本究竟为何受众面如此之广泛呢?
首先,回顾所有版本,JDK8刚出生时,他就冠名了一个相对完美的开发环境之称。因为相比以往的JDK7、JDK5这些,JDK8的生态很好,开发者使用起来也比之前的版本舒适,同时JDK8支持了几乎所有的开发功能需求,设计比较完善。
所以,JDK8也是迄今为止维护支持时间最长的版本,甚至比JDK17还长。
JDK11
科技在慢慢发展,在使用JDK8开发程序时,总存在一些弊端,也多了许许多多的需求,所以慢慢的,Oracle也发布了另一个长期支持更新维护版本——JDK11。
相比JDK8,用的人肯定没那么多,包括到现在,JDK8仍然是主流。
首先,JDK11对比JDK8,除了有很多内部的升级(比如开销和时延更低的GC、TLS1.3加持等等)之外,对于初学使用者来说也有一些语言使用层面的进化。
变量类型推断
新版Java引入了一个全新的类型关键字var
,用var
来定义的变量不用写具体类型,编译器能根据=右边的实际赋值来自动推断出变量的类型。
具体的话,就自己去尝试吧。
官方HTTP Client加持
现在JDK官方就自带HTTP Client了,位于java.net.http包下,支持发送同步、异步的HTTP请求,这样一来,以前咱们常用的HTTP请求客户端诸如:OKHttp、HttpClient这种现在都可以退下了!
总结
除了这两个明显的变化,其实还有很多内部结构方法的增加。就不多说了。
实际是,我个人觉得,如果不是有对应需求,那还是老老实实的用JDK8吧。
因为,说实话,JDK11的生态不太行,参杂在JDK8与JDK17之间。
JDK17
JDK17也是长期支持版本,相比11一般来说更具优势,但是,我查阅了一些网络上其他大佬的评价。
如下:
Java 17的变化真不大,不及java9的模块化,java11和12并最终在15里全面普及的zgc和shennadoah gc,16里的record类等。各个版本的发布情况和变化详情,我之前有整理过,见下面链接:
- JDK1.0到17发布版本: https://shimowendang.com/docs/C1pC5q2Jff0DhCAz
- JDK9-17 相关新功能和版本机制:https://shimowendang.com/docs/hW6ddKDwt6YPJkDD
下面是知乎一位水友的评价。
最主要的还有,Oracle 宣布 JDK 17 可以免费商用了。
其次就是JDK17的垃圾回收机制优化了。
除了这些自我生态方面的完善与增加,还有部分框架的依赖。
需要JDK17
Spring Framework 6 将采用 Java 17 和 Jakarta EE 9。
其次,还有Spring Boot 3.0.0 来啦!最小依赖 Java17!
知乎大佬直呼:
一直以来,Java8 都是 Java 社区心头的痛。因为它代表着以稳定性为主的企业管理层,与拥抱变化为主的底层码农层之间的、爱的魔力拉锯战。
不升!成为各大厂心照不宣的选择。
现在,这种平衡或将打破。因为 Java 届的霸主框架 SpringBoot,选择了最小支持的 Java lts 版本,就是最新的 Java17。
所以,作为一个开发者,还是不能脱离企业的需求哈。如果需求要用的SpringBoot3版本的话,那也必须要使用JDK17及以上版本了。
具体的发展还是让我们这些开发者拭目以待吧。目前选择8还是完全没问题的。
尾述
互联网的发展迅速啊!我们技术有时候可能难以追上时代的步伐,不过,我们的思维一定要在世界的前沿,比较我们本来就是创造未来的人啊!
什么!!!JDK18版本今年又发布了,是短期支持版本,6个月,9大特性之JEP 400:默认为UTF-8。
好家伙,我还是先摸清楚JDK8的底细吧。