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的底细吧。

相关文章
|
6天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
|
1月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
48 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
26天前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
23 0
[Java]静态代理与动态代理(基于JDK1.8)
|
1月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
25 1
|
1月前
|
Java 关系型数据库 开发工具
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
本文提供了解决方案,如何在IDEA中创建Spring 2.X版本的项目并使用JDK8,尽管Spring 2.X已停止维护且IDEA不再直接支持,通过修改pom.xml或使用阿里云的国内源来创建项目。
80 0
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
|
1月前
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
766 0
|
2月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
335 3
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
58 1
|
3月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
700 4
|
8天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
20 0
下一篇
无影云桌面