jdk 21发布的意义 虚拟线程

28 篇文章 0 订阅

目录

虚拟线程介绍

jdk 21 oracle 官方介绍

spring 6.1 发布进度

spring boot 3.2 发布进度

其他实现

alibaba dragonwell jdk 的 Wisp2 特性

TencentKona


jdk 21 最大的功能是虚拟线程,是一种绿色线程(具体可以看周志明老师的书籍《深入理解java虚拟机》),目前 jvm 与操作系统的线程是一一对应的关系。

使用了虚拟线程可以减少资源消耗,减少操作系统上下文切换,不然的话多线程执行时操作系统会频繁在用户态与内核态之间切换,在多线程应用中具有重大意义。

之前的 openjdk loom 项目转正,成为 openjdk 的一部分。在 jvm 层面支持,不需要通过其他第三方的框架(quasar)来处理,降低了代码的侵入性。

https://github.com/openjdk/loom

虚拟线程介绍

https://zhuanlan.zhihu.com/p/648421339

JEP 425: Virtual Threads (Preview)

JEP 436: Virtual Threads (Second Preview)

JEP 444: Virtual Threads

在 openjdk 19 中作为预览特性,最终在 openjdk 21 中正式启用。

https://openjdk.org/projects/jdk/21/

在 2023.09.19 正式发布。

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

spring 6.1 发布进度

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://spring.io/blog/2023/10/12/spring-framework-6-1-rc1-released

https://spring.io/blog/2023/10/26/spring-framework-6-1-rc2-released

https://spring.io/blog/2023/11/16/spring-framework-6-1-goes-ga

https://spring.io/blog/2023/11/23/spring-framework-6-1-1-available-now

https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions

spring boot 3.2 发布进度

https://spring.io/blog/2022/10/11/embracing-virtual-threads/

https://spring.io/blog/2023/07/20/spring-boot-3-2-0-m1-available-now

https://spring.io/blog/2023/08/24/spring-boot-3-2-0-m2-available-now

https://spring.io/blog/2023/09/21/spring-boot-3-2-0-m3-available-now

https://spring.io/blog/2023/10/20/spring-boot-3-2-0-rc1-available-now

https://spring.io/blog/2023/11/03/spring-boot-3-2-0-rc2-available-now

https://spring.io/blog/2023/11/21/this-week-in-spring-spring-boot-3-2-edition-november-21st-2023

https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now

https://spring.io/blog/2023/11/23/spring-tips-spring-boot-3-2

由 spring-boot-dependencies-3.2.0 得知,spring boot 3.2.0 默认使用了 sprinig 6.1.1。

https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-dependencies/3.2.0/spring-boot-dependencies-3.2.0.pom

https://github.com/spring-projects/spring-boot/wiki/

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 相关组件。

最终在 2023.11.23 发布 spring 6.1 和 spring boot 3.2。

https://spring.io/blog/2023/09/09/all-together-now-spring-boot-3-2-graalvm-native-images-java-21-and-virtual

由官网得知,在 2023.12.06 发布了与 spring boot 3.2 对应的版本匹配的 spring cloud 2023.0.x。



https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2023.0-Release-Notes
 

版本之间的对应关系
openjdk最小版本spring 最小版本spring boot 最小版本spring cloud 最小版本
216.13.22023.0.x

看国内的情况,jdk 21的使用需要一段时间,目前 jdk 8 还是主流,目前因为开源组件安全漏洞扫描需要升级到 spring boot 3.x,但是spring官方使用了jdk17进行代码编译,所以使用jdk 版本最低是 17,这就会面临一个代码修改的问题,例如代码中引用了 servlet相关api。

对于开源软件升级问题,除非是追求性能以及大型互联网公司会升级使用里面的功能,升级过程不可避免会有代码修改以及其他的问题,对于这些问题一般是程序能正常运行代码能不动就不动。

如果是新项目可以直接使用 openjdk 21。

其他实现

alibaba dragonwell jdk 的 Wisp2 特性

https://github.com/dragonwell-project/dragonwell8/wiki/Wisp%E6%96%87%E6%A1%A3

在 jvm 层面实现,无需修改现有的代码,仅支持Linux操作系统。

https://github.com/dragonwell-project/dragonwell8/issues/113

自己整理的文章

https://blog.csdn.net/zlpzlpzyd/article/details/133536261

TencentKona

https://github.com/Tencent/TencentKona-8/wiki/%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C

https://github.com/Tencent/TencentKona-8/wiki/KonaFiber%E7%94%A8%E6%88%B7%E6%96%87%E6%A1%A3-292

在 api 层面实现,需要修改代码,通过参数 -XX:+/-UseKonaFiber控制打开、关闭协程功能(默认打开)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值