JDK8到JDK21新特性合集笔记

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

参考

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容