提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
JDK8版本之后与JDK8的对比@TOC
前言
`
JAVA经过这么多年的迭代,已经蜕变成一个巨大的生态,下面我们就对比一下,从java8 到 21的变化与升级。
提示:以下是本篇文章正文内容,下面案例可供参考
一、JDK9 新特性(2017-9)
- 模块系统(Project Jigsaw)
- 集合工厂方法(List.of, Set.of, Map.of)
- 接口内的私有方法
- Optional类的改进
- 多版本兼容JAR包
- jshell 工具
- try-with-resources 的改进
- Stram API 的增强
- 默认垃圾收集器改为 G1
- 支持HTTP/2 WebSocket Api
二、JDK10 新特性(2018-3)
- 局部变量类型推断(var)
- 不可变集合的改进
- 垃圾回收器G1的并行全垃圾回收
- 线程本地握手
- Optional 新方法: orElseThrow
- 类数据共享
- Unicode语言标签扩展
- 根证书
三、JDK11 新特性(2018-9)
- 新的字符串处理方法
- 变量语法用于Lambda 参数
- 新的HTTP Client API (HTTP/1.1、HTTP/2和WebSockets 支持)
- 单一 Java 文件的直接运行
- ZGC:可伸缩的低延迟垃圾收集器
- TLS 1.3支持
- Flight Recorder
- Stream, Optional, 集合 API的增强
四、JDK12 新特性(2019-3)
- switch 表达式扩展(可返回值)
- 对复杂数字的格式化(NumberFormat)
- Files.mismatch方法
- Teeing 收集器
- 技能 Unicode11
- Shenandoah 垃圾收集器
- G1 收集器的优化
五、JDK13 新特性(2019-9)
- switch 表达式增加yield关键字
- 文本块(Text Blocks)
- Socket API 重构
- FileSystems.newFileSystem 方法
- ZGC 优化
六、JDK14 新特性(2020-3)
- instanceof 模式匹配
- Record 类型
- switch 表达式标准化
- NullPointerExceptions 提示信息改进
- 删除CMS 垃圾回收器
七、JDK15 新特性(2020-9)
- EdDSA数字签名算法
- 密封类(Sealed Classes)
- 隐藏类(Hidden Classes)
- Nashorn JavaScript 引擎移除
八、JDK16 新特性(2021-3)
- JDK 源代码 中 C++14 特性的支持
- ZGC 性能优化
- Unix 或套接字通道
- 弹性元空间
- jpackage 工具
九、JDK17 新特性(2021-9)
- 免费 Java 许可
- 移除实验性 AOT 和JIT 编译器
- 浮点去处始终执行严格模式
- 密封类正式引入
- 统一日志刷新
。
十、JDK18 新特性(2022-3)
- 默认 UTF-8 编码
- 简单 HTTP 服务器
- Java API 文档中的代码片段
- 核心反射的重新实现
- Vector API (第三次孵化)
- 自定义地址解析 SPI
- 外部函数与内在API (第二次孵化)
- switch 模式匹配 (第二次预览)
。
十一、JDK19 新特性(2022-9)
- 记录模式 (预览)
- Linux/RISC-V 支持
- 外部 函数与内存 API(预览)
- 虚拟线程 (预览)
- Vector API (第四次孵化)
- switch 模式匹配(第三次预览)
。
十二、JDK20 新特性(2023-3)
- instanceof 模式匹配增强
- 密封类(Sealed Classes)
- 记录 (Records)增强
- 文本块(Text Blocks)改良
- switch 表达式改进
- 新的垃圾回收算法 (ZGC)
- 预览特性可能包含虚拟纯种(Virtual Threads)、结构化并发(Structured Concurrency)
。
十三、JDK21 新特性(2023-9)
- 顺序集合(Sequenced Collections)
- 分代ZGC 改进
- 记录模式强化
- switch 中的模式匹配增强
- 引入虚拟线程
- 弃用Windows 32位 x86 移植
- 动态加载代理
- Curve25519和Curve448密钥协议
- 预览特性包括字符串模板、外部函数和内存API(第三次预览)等
。
总结
以往在一直用java 8,但现在上从 8-21 所以升级的功能点越来越诱人,在初始建立项目的时候斟酌版本的使用也变得重要