jdk新特性记录(已更新jdk21)

摘要: jdk新特性记录


简介

所有特性:http://openjdk.java.net/jeps/0

LTS版本:Oracle官方长期支持版本(如JDK 8、11、17、21),企业环境中更常见。

发布周期:自JDK 9起,每6个月发布一个版本,每2年推出一个LTS版本。

jdk选择

  1. 一般选lts版本的jdk
  2. 一般选Eclipse Adoptium, 标准的openjdk实现,可以商用,也适合个人使用
  3. 需要openj9就选ibm的jdk
  4. 因为从jdk9开始javafx就不在jdk中了 需要带额外javafx插件的就选Azul Zulu或者Liberica
  5. 有的厂商也会单独编译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

  1. Oraclejdk8 最后可商用的版本是8u201,8u201之后的新版本不可以商用,建议用openjdk
  2. Oraclejdk6(6u45)和7(7u80)已不在更新,不建议使用
  3. Oracle11禁止商用
  4. 从Oraclejdk17开始才限时商用的,Oraclejdk9-16都不可以商用
  5. Oraclejdk17.0.12是最后的可商用jdk17版本,之后的版本不可以商用
  6. Oraclejdk21有限商用到2026年9月,之后的版本禁止商用
  7. 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

下载