jdk新特性记录(已更新jdk21)
摘要: jdk新特性记录
简介
所有特性:http://openjdk.java.net/jeps/0
LTS版本:Oracle官方长期支持版本(如JDK 8、11、17、21),企业环境中更常见。
发布周期:自JDK 9起,每6个月发布一个版本,每2年推出一个LTS版本。
jdk选择
- 一般选lts版本的jdk
- 一般选Eclipse Adoptium, 标准的openjdk实现,可以商用,也适合个人使用
- 需要openj9就选ibm的jdk
- 因为从jdk9开始javafx就不在jdk中了 需要带额外javafx插件的就选Azul Zulu或者Liberica
- 有的厂商也会单独编译jre,比如Adoptium, ibm, Zulu等等,如果需要jre就选这种版本
openjdk: 可商用,一般选Eclipse Adoptium
各个厂商都有自己编译的jdk比如阿里. 腾讯,微软
Eclipse Adoptium: https://adoptium.net/
微软jdk(11,17,21):https://learn.microsoft.com/zh-cn/java/openjdk/download
ibm(openj9): https://mirrors.tuna.tsinghua.edu.cn/github-release/ibmruntimes/
Azul Zulu: https://www.azul.com/downloads/
Liberica JDK: https://bell-sw.com/pages/downloads/
阿里8,11,17,21: https://github.com/orgs/dragonwell-project
华为毕昇8,11,17,21: https://gitee.com/openeuler/bishengjdk-21
腾讯8,11,17,21:https://github.com/Tencent/TencentKona-11
亚马逊:https://aws.amazon.com/cn/corretto/
Oraclejdk: 有限商用
https://www.oracle.com/java/technologies/downloads/
其他历史版本 https://www.oracle.com/java/technologies/downloads/archive/
有限免费许可证: https://www.oracle.com/downloads/licenses/no-fee-license.html
- Oraclejdk8 最后可商用的版本是8u201,8u201之后的新版本不可以商用,建议用openjdk
- Oraclejdk6(6u45)和7(7u80)已不在更新,不建议使用
- Oracle11禁止商用
- 从Oraclejdk17开始才限时商用的,Oraclejdk9-16都不可以商用
- Oraclejdk17.0.12是最后的可商用jdk17版本,之后的版本不可以商用
- Oraclejdk21有限商用到2026年9月,之后的版本禁止商用
- Oracle的其他非lts版本jdk(jdk17之后的版本) 在新的jdk版本发布出来之后就不维护了,基本维护期就6个月
其他
JDK6是JDK7的一个分支,屏蔽新特性
从jdk8迁移到jdk11:https://learn.microsoft.com/zh-cn/java/openjdk/transition-from-java-8-to-java-11
Oraclejdk一般选奇数版本号:https://blog.csdn.net/chixiu1053/article/details/100649613
版本号对应

参考 https://blog.csdn.net/Next_Second/article/details/147259680
新特性
jdk1.8(2014年3月,LTS)
带老版本javafx
https://www.runoob.com/java/java8-new-features.html
https://www.runoob.com/java/java8-lambda-expressions.html
Lambda表达式:简化函数式编程。
Stream API:支持链式数据操作。
方法引用:Class::method语法。
默认方法:接口支持默认实现。
新的日期时间API:java.time包。
Nashorn引擎:替换Rhino的JavaScript引擎。
jdk9
https://www.runoob.com/java/java9-new-features.html
模块系统: https://www.runoob.com/java/java9-module-system.html
从jdk9开始 javafx已经单独打包了不在jdk里了
https://www.oschina.net/news/54552/java-9-features-announced
jdk10
https://www.oschina.net/news/94402/java-10-released-mar-21
jdk11(2018年9月,LTS)
HTTP Client API(正式版):支持HTTP/2和WebSocket。
局部变量类型推断增强:var可用于Lambda参数。
单文件源码直接运行:java HelloWorld.java直接编译执行。
ZGC(实验性):低延迟垃圾回收器。
移除Java EE和CORBA模块:如javax.xml
https://my.oschina.net/u/241554/blog/4824142
https://my.oschina.net/didispace/blog/4578401
jdk12
https://my.oschina.net/niumoo/blog/4962573
jdk13
https://article.juejin.cn/post/6844904003327754253
jdk14
https://www.oschina.net/news/114156/jdk-14-ga
jdk15
https://my.oschina.net/emacs_8820528/blog/17342841
jdk16
https://www.oschina.net/news/133354/jdk-16-ga
jdk17(2021年9月,LTS)
https://www.oschina.net/news/160291/jdk-17-lts-ga
https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6
jdk17编译的class可以在最低jdk7上运行
密封类(正式版):限制类的继承关系。
移除实验性AOT和JIT编译器:删除GraalVM相关功能。
模式匹配Switch(预览):简化switch语法。
新的随机数生成API:RandomGenerator统一随机数生成。
jdk18
https://www.oschina.net/news/187796/jdk-18-ga
https://developer.aliyun.com/article/886311
默认编码变为UTF-8 低版本切换注意是否乱码
jdk19
https://www.oschina.net/news/211079/jdk-19-ga
jdk20
https://www.oschina.net/news/233548/jdk-20-ga
jdk21(2023年9月,LTS)
虚拟线程(正式版):轻量级线程,简化高并发编程。
分代ZGC:优化垃圾回收性能。
字符串模板(预览):增强字符串插值功能。
序列集合:新增有序集合接口(如SequencedCollection)。
https://www.oschina.net/news/258730/jdk-21-lts-ga
java 22
https://www.oschina.net/news/283839/java-22-ga
java23
https://www.oschina.net/news/312381/java-23-released
java24
https://www.oschina.net/news/339734/jdk-24-java-24-ga