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

2年前 (2022) 程序员胖胖胖虎阿
414 0 0

文章目录

    • 1.什么是JDK
    • 2.Oracle JDK和Open JDK
    • 3.什么是LTS
    • 4.有哪些Open JDK发行版可选
    • 5.LTS版本的主要特性
      • 5.1.Java8
      • 5.2.Java11
      • 5.3.Java17

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)

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

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 JDK Open JDK
来源 Oracle团队维护 Oracle和Open Java社区
授权协议 Java 17及更高版本 Oracle Java SE 许可证
Java16及更低版本甲骨文免费条款和条件 (NFTC) 许可协议 (oracle.com)
GPL v2许可证
关系 由Open JDK构建,增加了少许内容
发行周期 6个月,每两年一个LTS 6个月
是否收费 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。

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

版权声明:程序员胖胖胖虎阿 发表于 2022年9月2日 下午1:00。
转载请注明:JDK的两个大版本,为什么要选LTS | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...