jdk 21 最大的功能是虚拟线程,是一种绿色线程(具体可以看周志明老师的书籍《深入理解java虚拟机》),目前 jvm 与操作系统的线程是一一对应的关系。
使用了虚拟线程可以减少资源消耗,减少操作系统上下文切换,不然的话多线程执行时操作系统会频繁在用户态与内核态之间切换,在多线程应用中具有重大意义。
之前的 openjdk loom 项目转正,成为 openjdk 的一部分。
虚拟线程介绍
https://zhuanlan.zhihu.com/p/648421339
jdk 21 oracle 官方介绍
https://www.oracle.com/java/technologies/downloads/#java21
lts 支持到 2026年9月,除了 jdk 21,还有 3个lts版本,分别是 jdk 8、jdk 11、jdk17。
https://www.oracle.com/java/technologies/downloads/#java8
Java SE subscribers will receive JDK 8 updates until at least December 2030.
https://www.oracle.com/java/technologies/downloads/#java11
Java SE subscribers will receive JDK 11 updates until at least September 2026.
https://www.oracle.com/java/technologies/downloads/#java17
JDK 17 will receive updates under these terms, until September 2024, a year after the release of the next LTS.
jdk 8 的 lts 时间最长,到 2030年12月。
但是考虑到许可证的问题,一般部署jdk都使用的是 openjdk。
https://jdk.java.net/java-se-ri/21
https://spring.io/blog/2023/06/15/spring-framework-6-1-m1-released
https://spring.io/blog/2023/07/13/spring-framework-6-1-m2-released
https://spring.io/blog/2023/07/19/spring-framework-6-1-m3-released
https://spring.io/blog/2023/08/17/spring-framework-6-1-m4-released
https://spring.io/blog/2023/09/14/spring-framework-6-1-m5-released
https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.x
现在 spring 官方一直在发布 milestone 版本,过了不久就会发布正式的 spring 6.1 版本相关的组件。spring boot 3.2 开始支持 spring 6.1 相关组件。
https://spring.io/blog/2023/09/09/all-together-now-spring-boot-3-2-graalvm-native-images-java-21-and-virtual
openjdk最小版本 | spring 最小版本 | spring boot 最小版本 |
21 | 6.1 | 3.2 |
看国内的情况,jdk 21的使用需要一段时间,目前 jdk 8 还是主流,目前因为开源组件安全漏洞扫描需要升级到 spring boot 3.x,但是spring官方使用了jdk17进行代码编译,所以使用jdk 版本最低是 17,这就会面临一个代码修改的问题,例如代码中引用了 servlet相关api。
对于升级问题,除非是追求性能以及大型互联网公司会升级使用里面的功能,升级过程不可避免会有代码修改以及其他的问题,对于这些问题一般是程序能正常运行代码能不动就不动。
如果是新项目可以直接使用 openjdk 21。