A. Java新特性一览
A. Java新特性一览
更新日期:2022-11-30
1. 概述
自Java9之后,Java每半年更新一个版本,版本数升的很快。要去了解每一个版本的变更点是很麻烦的,所以只对长期版本(LTS版本)来进行了解是个不错的选择。
2. 特性一览
| 版本 | 新特性 | 备考 |
|---|---|---|
| Java8 | Lambda表达式 | Java开始支持函数式编程 |
| 函数式接口 只有一个函数的接口 |
例:Runnable接口 | |
| 方法引用 | 用法是一个谜,不是很直观,感觉与Java代码格格不入 例:Car::new |
|
| 接口的默认方法 | 为了在给接口添加新函数时能够向后兼容,与接口的设计原则相矛盾(不是很看好此功能) | |
| 流Stream | 亮点功能,能够很大程度上简化代码,编写代码时体验提升巨大 | |
| Optional类 | 可以简化null判断的书写体验 | |
| 新的日期时间 API | 更好的设计,以前的日期时间类非常的混乱 | |
| 内置Base64支持 | 不再需要第三方库,从此Java内置对Base64相关处理的支持 | |
| 新的脚本引擎 | 用来嵌入脚本语言,支持的脚本语言很多 | |
| Java11 | 变量类型推断 | 也就是var,在很多语言中都是老朋友了 使用var使我们少写样板代码,代码干净了很多,可读性也更高 |
| HttpClient | 支持HTTP/2,不明觉厉 | |
| 一系列工具类增强 | Collection增加了of与copyof这两个实用的方法 加强了Stream,Optional,String这几个类 InputStream可以直通OutputStream |
|
| 模块化开发 | Java9中引入的重量级功能,但是易与项目管理中的概念相混淆 | |
| 交互式编程jshell | 可以直接在控制台中执行代码了 | |
| 直接执行单个java文件 | 不用编译,直接执行,使Java可以作为脚本语言来使用 | |
| 完全支持Linux容器(包括docker) | 一个不太懂的话题 | |
| Unicode10支持 | 增加了字符数量,以及支持emoji表情符号 | |
| 新加密算法 | 到底什么时候用呢 | |
| 低消耗的堆栈记录分析工具 | 解决内存和性能问题时会有用 | |
| 黑匣子 | 记录一段时间内的程序运行状况,分析性能瓶颈必备,在以前的版本中是付费功能 | |
| 新的垃圾回收器 | 多多益善,新的垃圾回收器很适合游戏程序 | |
| Java17 | 多行字符串定义 | 多行字符串写起来更简洁,非常实用的功能,早就应该加入的功能 |
| Switch加强 | 增强这种基础功能的威力是很大的 Switch每个条件加处理可以写成一行,从此更加简洁 |
|
| Records(记录) | 如何使用还需要探索 | |
| 密封类 | 如何使用还需要探索 | |
| instanceof增强 | 几乎没用过 | |
| NullPointerException增强 | 神级加强,可以直接打印出空对象是哪一个,不用去猜去调试了 | |
| 精简数字格式支持 | 可以将数字转为1K,100K这样的格式 | |
| 日期时间API增强 | 添加了日周期支持,触及到了知识盲区 | |
| Stream增强 | Stream能直接toList()了,期待已久的功能 |