Java中JDK8、JDK11、JDK17,该怎么选择?

简介: Java这个语言,1995 年发展至今,生态方面就不多说了,没有强大的生态,在科技快速发展的今天,是不可能被互联网企业与开发者认同的。

JDK的稳定版本


Java这个语言,1995 年发展至今,生态方面就不多说了,没有强大的生态,在科技快速发展的今天,是不可能被互联网企业与开发者认同的。

我们都知道,要使用Java语言,那么JDK就必不可少。

而经历了一代一代的变迁,JDK也慢慢更新换代,今年Oracle也是直接发布了JDK18,而到目前为止,我们的JDK存在了三个版本的长期支持版

分别是JDK8JDK11JDK17

而我们所说的长期支持版是什么呢?长期支持版本我们可以理解成一个项目会长期维护更新,也就是说,这三个版本是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类等。各个版本的发布情况和变化详情,我之前有整理过,见下面链接:

下面是知乎一位水友的评价。

网络异常,图片无法展示
|

最主要的还有,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的底细吧。

相关文章
|
1天前
|
小程序 Java 程序员
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
9 0
|
3天前
|
Java Windows
java——安装JDK及配置解决常见问题
java——安装JDK及配置解决常见问题
|
7天前
|
Java Linux 开发工具
Linux 配置 Java/JDK 环境
Linux 配置 Java/JDK 环境
15 0
|
14天前
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
27 0
|
22天前
|
Java
Java jdk1.8 lambda 遍历集合的时候到底需不需判空
Java jdk1.8 lambda 遍历集合的时候到底需不需判空
|
23天前
|
Java 应用服务中间件 Linux
Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/libmawt.so: libXrend
Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/libmawt.so: libXrend
|
2月前
|
Java Maven
运行maven项目出现Error:java: JDK isn‘t specified for module ‘XXX‘
运行maven项目出现Error:java: JDK isn‘t specified for module ‘XXX‘
14 0
|
3月前
|
Java 应用服务中间件 开发工具
最简单JDK安装指南(小白也能一次性安装完成)
最简单JDK安装指南(小白也能一次性安装完成)
|
4月前
|
Java
安装JAVA_JDK快速入门
安装JAVA_JDK快速入门
|
6天前
|
关系型数据库 MySQL Java
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
28 2