JDK各版本新特性
一、JDK 8 核心新特性 🔴
1. Lambda 表达式
干什么:简化匿名内部类写法,函数式编程。 为什么出现:匿名内部类代码冗余、写法啰嗦。 解决问题:减少模板代码,简化集合遍历、线程、比较器等写法。 用法示例
|
|
2. Stream 流
干什么:对集合做过滤、排序、映射、统计、聚合链式操作。 为什么出现:传统for循环遍历写法繁琐、可读性差。 解决问题:一行代码完成集合复杂处理,声明式编程。 示例
|
|
3. 函数式接口
干什么:被 @FunctionalInterface 修饰,只能有一个抽象方法,配合 Lambda 使用。
内置四大核心:
- Consumer 消费型:入参无返回
- Supplier 供给型:无入参有返回
- Function 函数型:入参转返回
- Predicate 断言型:返回布尔
解决问题:统一规范 Lambda 适用场景。
4. Optional 空值容器
干什么:优雅处理 null,减少空指针异常。
为什么出现:项目大量 if(null != obj) 臃肿。
解决问题:杜绝野蛮空判断,链式安全取值。
示例
|
|
5. 接口默认方法 / 静态方法
干什么:接口可以有带实现的默认方法、静态方法。 为什么出现:接口升级新增方法,所有实现类都要重写,兼容性差。 解决问题:接口新增方法不强制实现类重写,向下兼容。 示例
|
|
6. 新时间日期 API(java.time)
干什么:全新不可变时间类:LocalDate / LocalTime / LocalDateTime / Instant
为什么出现:旧 Date、Calendar 设计烂、可变、线程不安全、格式化麻烦。
解决问题:线程安全、不可变、API友好、时区分离。
示例
|
|
7. HashMap 底层优化
干什么:数组 + 链表 + 红黑树。 解决问题:链表过长查询慢,长度≥8转红黑树,≤6退化成链表。
二、JDK 11 常用新特性(LTS 长期支持)
1. 字符串增强 API
干什么:新增 isBlank()、strip()、lines()、repeat()
解决问题:频繁字符串处理还要自己写工具类。
示例
|
|
2. 本地变量类型推断 Var
干什么:用 var 自动推断变量类型。
为什么出现:类型声明重复冗余。
解决问题:简化局部变量写法,不用重复写类型。
示例
|
|
注意:只能用在局部变量,不能用于成员变量、方法入参、返回值。
3. HttpClient 正式标准化
干什么:全新异步 HTTP 客户端。 解决问题:旧 HttpURLConnection 难用、第三方 OkHttp 需引包。 示例
|
|
4. 模块系统优化、垃圾回收优化
ZGC、低延迟GC开始铺垫,整体性能、内存占用优化。
三、JDK 17 常用新特性(最强 LTS、企业主流升级版)
1. 密封类 Sealed 🔴
干什么:用 sealed 限制哪些类可以继承/实现当前类。
为什么出现:无法可控限制继承,任意类都能随便继承扩展。
解决问题:严格控制类的继承范围,做架构约束、防止滥用继承。
示例
|
|
2. 增强 Var 支持 + 模式匹配增强
简化 instanceof 强转,不用手动强转。 旧写法
|
|
JDK17 新写法
|
|
3. 文本块 """ 多行字符串
干什么:三个双引号定义多行文本。 解决问题:多行JSON、SQL、HTML 拼接大量换行符、引号转义。 示例
|
|
4. 废弃 Applet、安全加固、封装更强
底层内部API私有化,禁止非法反射篡改,安全性提升。
四、JDK 21 常用新特性(最新 LTS、未来主流)
1. 虚拟线程 Virtual Thread(最重要)
干什么:JDK 轻量级线程,由 JVM 管理,非操作系统内核线程。 为什么出现:传统平台线程重量级、线程数受限、高并发下资源耗尽。 解决问题:百万级线程无压力,极大提升并发能力,替代线程池繁琐调优。 示例
|
|
核心价值:IO 密集型业务(接口、数据库、MQ)吞吐量暴涨,不用纠结线程池核心数。
2. 结构化并发
干什么:批量管理一组虚拟线程,父子线程生命周期绑定。
解决问题:多线程任务散乱、异常难统一处理、容易泄露线程。
3. 模式匹配、记录类 Record 正式完善
Record 记录类:快速定义不可变数据载体,不用手写 get、构造、toString。 示例
|
|
解决问题:DTO、实体类模板代码太多。
4. 集合有序增强、简化写法
集合工厂方法进一步简化,只读集合创建更方便。
总结 🔴
- JDK8:Lambda、Stream、Optional、新时间API、接口默认方法,项目最常用基础。
- JDK11:var局部推断、字符串增强、标准HttpClient,轻量简化代码。
- JDK17:密封类sealed、instanceof模式匹配、多行文本块,架构约束+语法简化。
- JDK21:虚拟线程(最大亮点)、结构化并发、Record记录类,高并发性能大幅提升,未来企业升级首选。