下载 JDK 21
现在你打开 OpenJDK 官网,已经可以下载了,下载地址:https://jdk.java.net/21/,我已经把之前的预览版删掉,换成正式版了。
打开官方 JDK21的项目页,可以在 Features 列表看到新增的功能,带 Preview 样式的是预览功能,也就是非正式功能。
没想到 String Templates(字符串模板)和 Structured Concurrency(结构化并发)还是预览版。
序列化集合接口
新增了序列集合接口 ,我们常用的 、等都实现了这个接口。
可以方便的获取第一个、最后一个元素、移除最后一个元素、在头部插入元素。
之前获取第一个元素是 ,现在用 就可以了。
这个功能只能算是锦上添花的功能吧,并么有比之前方便多少。
ZGC 增加分代
可能很多人对 JVM 垃圾收集器的最新款还停留在 G1上。ZGC 是在 JDK11中推出的,ZGC是低延迟垃圾收集器,几乎是全并发,停顿时间不超过10ms。
JDK21中对 ZGC 进行了功能扩展,增加了分代功能,比如 CMS 收集器区分老年代和年轻代,这样一来,可以更频繁的回收年轻代。
要使用 ZGC 以及分代功能,需要加入下面的参数。
Record 匹配模式
我们先声明一个 Record
在 JDK21之前,我们要用 instanceof 判断一个对象,并取出对象的字段时,会这样做。
现在可以这样了,直接将参数带着,然后自动解析出参数在实体中的具体值。
switch 增强
不多说,就看看下面这个方法,可以直接根据参数类型进行匹配
我们调用上面的方法
得到的输出内容为:
还有更多的模式等待探索。
虚拟线程(Virtual Threads)
虚拟线程是基于协程的线程,它们与其他语言中的协程具有相似之处,但也存在一些不同之处。
虚拟线程是依附于主线程的,如果主线程销毁了,那虚拟线程也不复存在。
相同之处:
- 虚拟线程和协程都是轻量级的线程,它们的创建和销毁的开销都比传统的操作系统线程要小。
- 虚拟线程和协程都可以通过暂停和恢复来实现线程之间的切换,从而避免了线程上下文切换的开销。
- 虚拟线程和协程都可以使用异步和非阻塞的方式来处理任务,提高应用程序的性能和响应速度java21基础教程。
不同之处:
- 虚拟线程是在 JVM 层面实现的,而协程则是在语言层面实现的。因此,虚拟线程的实现可以与任何支持 JVM 的语言一起使用,而协程的实现则需要特定的编程语言支持。
- 虚拟线程是一种基于线程的协程实现,因此它们可以使用线程相关的 API,如 、 和 。而协程则不依赖于线程,通常需要使用特定的异步编程框架和 API。
- 虚拟线程的调度是由 JVM 管理的,而协程的调度是由编程语言或异步编程框架管理的。因此,虚拟线程可以更好地与其他线程进行协作,而协程则更适合处理异步任务。
具体的使用可以参考这篇文章 JDK21引入协程,再也不用为并发而头疼了
Key Encapsulation Mechanism API
提供一套非对称加密的API。使应用程序能够使用 KEM 算法,例如 RSA 密钥封装机制 (RSA-KEM)、椭圆曲线集成加密方案 (ECIES) 以及美国国家标准与技术研究院 (NIST) 后量子加密标准化过程的候选 KEM 算法。
我们如果用 Java 8 的话,涉及到加密算法的部分几乎都是用的第三方加密,那升级了 JDK21之后,就不用使用第三方包了。
在线 Java 编码平台
https://dev.java/playground/,写一些简单的测试还是可以的,而且上面提供了JDK21中的一些新特性 Demo。
下面是我的测试代码,可以正常运行,但是不支持中文。
转自https://www.zhihu.com/question/465329084/answer/3228981963
标题:Java21介绍及新特性
作者:michael
地址:https://blog.junxworks.cn/articles/2023/11/10/1699602209990.html
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26279.html