JDK的两个大版本,为什么要选LTS
文章目录
- 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 JDK
和Open 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 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等。
- Stream API。流
- 新的日期和时间API,LocalDate、LocalDateTime
- Lambda语法
- 函数式接口
- 接口可以添加非抽象方法,default关键字
- JVM移除永久代,增加元空间’
JDK 8 Features (java.net)
5.2.Java11
- 模块化(jdk9)
- 默认G1垃圾回收器(jdk9)
- 局部变量类型推断(jdk10)
- 移除Java EE(jdk11)
- 合并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。
- 试验ZGC,需要在JVM配置(jdk11)
- 文本块升级。(jdk13)
- switch支持lambda(jdk13预览,jdk14)
- ZGC 可用于生产环境(jdk15)
- record(jdk14,15预览,jdk16)
- Realed class密封类(jdk15,16预览,jdk17)
- 统一日志支持异步日志刷新(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)
JDK的两个大版本,为什么要选LTS相关推荐
- 两个大整数相乘 C++ 版本 源码
看到了这个题目,就突然要写了,完全徒手写的, itoa_m 数字转换成字符串 是拷贝过来的,也是我积累的源码. 这个大整数 主要思想就是按照我们小学学习的 乘法 笔算方法,先单个 乘积,再相加,具体不 ...
- 相同java代码,编译生成class文件不同的原因-JDK版本不同(大版本相同,小版本不同)
■前言 使用Jenkins自动打包,生成jar文件 检证时,和本地手动执行mvn命令生成的jar比较 使用winMerage进行比较. ■现象 发现,除了pom.properties文件的改行code ...
- 三天竟然爆发两起大漏洞事件!我们来教你如何跳过以太坊的坑
三天竟然爆发两起大漏洞事件!我们来教你如何跳过以太坊的坑 2018年04月26日 00:00:00 阅读数:1314 "现在进入你还是先行者,最后观望者进场才是韭菜."美图董事长蔡 ...
- 服务器上如何安装两个php网站,服务器安装两个php版本吗
服务器安装两个php版本吗 内容精选 换一换 简要介绍WebSVN是一个基于Web的Subversion Repository浏览器.它将Subverion的各种功能操作通过Web界面提供出来.通过它 ...
- python的主要版本_Python目前主要有( )两个主要版本。_学小易找答案
[单选题]中国证券监督管理委员会制定的<上市公司信息披露管理办法>属于: [单选题]下列项目中不属于病人亲属角色特征的是 [填空题]简述CMM的分级结构及其主要特征.(190)答:(1)初 ...
- 对于局部变量_2020年对于JDK ,大家觉得哪个版本好用?
自95年以后,IT世界红红红火火,恍恍惚惚的,很多人都在议论纷繁,或许早在95年之前,就有大家小家一起拼个你死我不活的境界. 那么问题来咯,2020年的程序员们,讨论一下对于JDK,大家觉得什么版本好 ...
- Mysql为什么多个大版本并行发布的个人理解
mysql为什么会出现多个大版本并行的情况,相信很多人都被mysql的版本发布规则搞糊涂了,比如为什么有了8.0还去修复5.5的bug,而5.5.1升级到5.5.10也是需要重新安装5.5.10的独立 ...
- 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- 揭秘,两个大西瓜竟然能合成它...
上一周每一天都在"合成大西瓜" 然后出了个"合成大西瓜魔改版" 最近还比了个"合成小芝麻" 但是我想说 百变水果,它来了 你还在为" ...
最新文章
- 基于对应点的6D姿态识别
- NIPS 2017 | 线上分享第一期:似自然梯度的优化算法KFAC与强化学习算法ACKTR
- HTTP Status 403 - Access to the requested resource has been denied
- Nginx server_name正则表达式匹配配置
- 商业模式(一):北京秒针公司,以互联网广告监测服务为主的生财之道
- SDUT--Pots(二维BFS)
- 优雅的嵌套滑动解决方式-NestedScroll
- hadoop安装详细步骤_LED透明屏安装步骤详细说明
- php 数组对,PHP数组游标实现对数组的各种操作详解
- 【Python爬虫实战】微信爬虫
- 2021年危险化学品经营单位主要负责人考试报名及危险化学品经营单位主要负责人新版试题
- Odoo----的消息系统 - Mail 模块 - Discuss 应用
- access 2016 迁移到 mysql_将ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)
- python马尔可夫链_Python中的马尔可夫链(初学者)
- C语言程序设计(十七)12.12
- 大数据与云计算之间的关系
- 求职时,怎样判断一家公司是否靠谱?
- 快速开发大热风潮之下 这免费的羊毛不来薅薅?
- 一起捉妖服务器还要维护多久,一起来捉妖:在线6小时被劝退?只需网络断开,跳过等待15分钟...
- 什么是股票交易api接口?