⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 网络 「网络」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

此前,Java 之父高斯林曾经发文表示可以尝试升级到 JDK17,因为JDK17是一个比 Java8 更好的版本,发文如下:

简单翻译下就是:

“对于那些仍然坚持使用 JDK8 的人,有一个包含所有最新更新和 CVE 防御的新 Corretto 版本。但是,请尽快离开 JDK8。JDK17 LTS 在各个方面都是一个巨大的飞跃。”

所以前几天大家都看到这么一条消息**“Java8?Java之父都不用”!**

目前Java的最新版本是Java18,于2022年3月份发布,Java19也即将在今年9月份发布,而下一个长期支持版本Java21预计将在2023年9月份发布。大家在生产实施过程中肯定需要使用稳定的Java版本,那选择必然就是LTS,也就是长期支持版本了!目前Java主要有如下几个长期支持版本:

  1. Java 8 是2014年发布
  2. Java 11是2018年发布
  3. Java 17是2021年发布

但是国内很多开发者其实还都停留在Java8,为什么那么多人还在坚持用Java8呢?

作为长期支持版本的Java11在发布之后,大部分人没有选择升级,有人说,很多人坚持使用Java8的一个原因在于,Java8是作为拥有旧的Java许可证的最后一个版本,而且后续升级的很多版本拥有的新功能大部分都用不上,更有甚者,如果说对于Java8中的 lambda不需要的话,有一些程序员甚至可以坚持使用Java6!

其实Java8作为Oracle更改Java许可证之前的最后一个免费版本应该是比较重要的原因,毕竟谁都不想花钱。

2018年,Oracle改变了Java许可证的方式,简单来说,当时大家用的长期支持版本是Java8,下一个长期支持版本是Java11,但是如果你是商业使用,将Java8升级到Java11的话,那么你就需要付费!

这个时候有人就说了,那用OpenJDK啊,的确,OpenJDK是一种替代,是官方Oracle JDK的开源版本,但是存在一些问题就是OpenJDK仅对最新版本进行更改,这导致一些企业组织不愿使用OpenJDK!

而**对于商业组织来说,他们更加喜欢稳定,**在Java8及之前,Java更新都是比较稳定,但是从Java9开始,基本就是每半年一个版本,这个更新速度,导致很多商业组织没法跟随,因为迁移升级是一件麻烦的事情!

不过从目前的一些消息来看,大家都觉得Java8 似乎该退场了,很多人看好的则是 Java17 这个长期支持版本,比如Java之父,高斯林就公开建议赶紧升级到Java17!

那为什么是Java17呢?

首先,Java17是继Java8和Java11之后的最新的一个长期支持版本,意味着后续Oracle将对Java17进行长期的支持(8年)!!

我们看Java8和Java11,从名字上感觉过了很长,时间上中间只过了三年,非LTS版本只有六个月的支持,作为新一个LTS的Java11,大家似乎并没有那么快的适应要去升级!

7年间,**从Java8到Java17中更新升级了许多功能,API的规模进一步增长,**此前更新的所有特性,Java17这个全新的长期支持版本,都将适用,而使用Java8的自然无法使用,所以是不是该换了?

版本 年份 新语言特性 类与接口的数量
1 1996 语言本身 211
1.1 1997 内部类 477
1.2 1998 strictfp修饰符 1524
1.3 2000 1840
1.4 2002 断言 2723
5 2004 泛型类、“for each”循环、可变参数、自动装箱、元数据、枚举、静态导入 3279
6 2006 3793
7 2011 基于字符串的Switch语句、菱形运算符、二进制字面量、异常处理增强 4024
8 2014 Lambda表达式、包含默认方法的接口、流和日期/时间库 4240
9 2017 模块、其他的语言和类库增强 6005
11 2018 局部变量类型推导(var)、HTTP客户端、移除Java FX、JNLP、Java EE重叠模块和CORBA 4410
17 2021 Switch表达式、文本块、instanceof模式匹配、记录、密封类 4859

从Java17开始,LTS版本将由每三年发布一次的频率更改为每两年一个LTS版本的频率,这也促使大家需要尽快转向新的LTS版本!

除此之外,在JDK17中还有一项重大改变,那就是免费了!

时代在变化,科技在进步,总是要向前看的,有人说,Java17慢慢取代Java8,只是时间问题,你觉得呢?

文章目录