JDK8到JDK21新特性合集笔记
- springboot3.0依赖JDK17以及Spring6.0为基础。
- LTS(长期支持版本):8,11,17,21
- ParallelGC——G1GC——ZGC(GC方向)
image.png
如何学习新特性
- 语法层面,新的语法规则
- API层面,增删新的API
- 底层优化,JVM,GC的调整变化
JDK8新特性
- Lambda表达式
- Stream API流
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
JDK9新特性
- jshell命令
- try-catch资源关闭优化,提高代码可读性
- String存储由char[]数组改成byte[]数组加编码标记存储,节约一点空间。
- JDK9以后默认的垃圾回收器是G1GC,之前是Parallel GC.
- CMS在JDK9被标记为过时。
image.png
image.png
JDK7资源关闭写法
image.png
image.png
image.png
JDK9 流定义在外面
image.png
image.png
JDK10新特性
- 局部变量的类型推断。本质就是通过类型推断来用var实现简写。
image.png
image.png
JDK11新特性
- 简化编译运行,直接使用java即可编译运行。
JDK12新特性
- Shenandoah GC:低停顿时间的GC.
- ZGC:低停顿。
JDK14新特性
instanceof 语法糖。省略代码
-
switch 表达式。
- 注意JDK17有switch模型匹配新特性。
三个双引号表示文本块使用,方便阅读。
Record声明类,类似与加了Lombok @Data注解,但是Record声明的类是不可变的,且被final修饰。
密封类,介于final修饰的类与没有被final修饰的类之间,可以指定部分类可以继承。
String实现了Constable接口,体现String是常量。
ZGC转正:-XX:+UseZGC
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
文本块
image.png
Record
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
JDK17新特性
删除Applet API ,不再支持客户端代码。
switch语句增强
文本块增强,变量替换还是要用Stream.format处理
instanceof 语法糖增强
-
密封类Sealed Classs.(也就是限制继承类 )
- 更加安全、可控。可以限制子类的继承,避免不必要的继承;且限制只能在同包下继承,更易于维护。
Record类,类似于Lombok的属性只读不可变对象。
优化空指针异常信息。空指针异常时会告诉我们是哪一行哪一个对象空指针了。
-
ZGC垃圾收集器正式转正,低停顿垃圾收集器。
- -XX:+UseZGC
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
JDK21新特性
- 虚拟线程。 解决线程频繁切换的问题,并且提高并发量。
- 顺序集合。统一集合的添加获取和移除方法操作。
- 过时windows 32位系统的支持。
- ZGC的分代收集。
- switch模式匹配
- Record模式匹配,也是语法糖
- KEM非对称加密API
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
总结
image.png