JDK的两个大版本,为什么要选LTS

1.什么是JDK

JDK 是一个开发环境,用于使用 Java 编程语言构建应用程序和组件。

JDK 包括用于开发和测试用 Java 编程语言编写并在 Java 平台上运行的程序的工具。

----Oracl Java

JDK的两个大版本是Oracle JDKOpen JDK,都属于Oracle。Oracle收购了SUN。

Oracle JDK是Oracle基于免费的商业许可证版本,Java Downloads | Oracle

Open JDK是Oracle在开源许可证下的免费版本,JDK Builds from Oracle (java.net)

2.Oracle JDK和Open JDK

这两个JDK最大不同就是许可证不一样。但是对于个人用户来讲,没区别。

java --version命令客户查看版本。

C:\> java -version
java version "17" 2021-09-14 LTS
Java(TM) SE Runtime Environment (build 17+35-LTS-2724)
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)
[root@ ~]# java  --version
openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.5+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.5+10, mixed mode)
Oracle JDKOpen JDK
来源Oracle团队维护Oracle和Open Java社区
授权协议Java 17及更高版本 Oracle Java SE 许可证
Java16及更低版本甲骨文免费条款和条件 (NFTC) 许可协议 (oracle.com)
GPL v2许可证
关系由Open JDK构建,增加了少许内容
发行周期6个月,每两年一个LTS6个月
是否收费2021年9月起Java17及更高版本所有用户免费。
16及更低版本,个人用户、开发用户免费。
2017年9月起,所有版本免费
LTS目前7,8,11,17无,但是有社区编译的其他支持
对语法的支持一致一致
性能最佳接近,几乎无差

3.什么是LTS

LTS(Long-term Support)即长期支持。Oracle官网提供了对Oracle JDK个别版本的长期支持,即使发发行了新版本,比如目前最新的JDK18,在结束日期前,LTS版本都会被长期支持。(出了bug,会被修复,非LTS则不会再有补丁发布)
所以,一定要选一个LTS版本,不然出了漏洞没人修复了。

版本开始日期结束日期延期结束日期
7(LTS)2011年7月2019年7月2022年7月
8(LTS)2014年3月2022年3月2030年12月
11(LTS)2018年9月2023年9月2026年9月
17(LTS)2021年9月2026年9月2029年9月
21(LTS)2023年9月2028年9月2031年9月

如果要选择Oracle JDK,目前可选的LTS版本为8、11、17三个。

4.有哪些Open JDK发行版可选

Open JDK 虽然没有官方的LTS版本,但是开源社区有支持。会有一些公司或组织基于Open JDK做发行版,提供LTS。

名称支持团队官网
AdoptOpenJDKAmazon,Microsoft,IBM,Red Hat,Pivotal(EMC和VMware)AdoptOpenJDK - 开源,预建OpenJDK二进制文件
Alibaba Dragonwell
(龙井)
阿里巴巴Dragonwell (dragonwell-jdk.io)
Tencent Kona腾讯Home · Tencent/TencentKona-8 Wiki · GitHub
Microsoft JDKMicrosoft微软Microsoft Build of OpenJDK
毕昇JDK华为毕昇JDK-鲲鹏社区 (hikunpeng.com)
Amazon CorrettoAmazon亚马逊Amazon Corretto

以上是比较出名的版本。有些JDK加入了自己的特色。

建议AdoptOpenJDK。

5.LTS版本的主要特性

5.1.Java8

8比7更新的东西比较多,可以说是里程碑式更新。加入了函数式、lambda等。

  1. Stream API。流
  2. 新的日期和时间API,LocalDate、LocalDateTime
  3. Lambda语法
  4. 函数式接口
  5. 接口可以添加非抽象方法,default关键字
  6. JVM移除永久代,增加元空间’

JDK 8 Features (java.net)

5.2.Java11

  1. 模块化(jdk9)
  2. 默认G1垃圾回收器(jdk9)
  3. 局部变量类型推断(jdk10)
  4. 移除Java EE(jdk11)
  5. 合并javac和java命令(jdk11)
    之前运行Java文件的命令
    javac HelloWorld.java
    java  HelloWorld
    
    现在可以
    java HelloWorld.java
    

JDK 9 (java.net)

JDK 10 (java.net)

JDK 11 (java.net)

5.3.Java17

17是第一个支持ZGC的LTS版本。有条件的话,用JDK17。

  1. 试验ZGC,需要在JVM配置(jdk11)
  2. 文本块升级。(jdk13)
  3. switch支持lambda(jdk13预览,jdk14)
  4. ZGC 可用于生产环境(jdk15)
  5. record(jdk14,15预览,jdk16)
  6. Realed class密封类(jdk15,16预览,jdk17)
  7. 统一日志支持异步日志刷新(jdk17)

JDK 12 (java.net)

JDK 13 (java.net)

JDK 14 (java.net)

JDK 15 (java.net)

JDK 16 (java.net)

JDK 17 (java.net)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程还未

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值