面试不仅是对人员基本信息的考核,更是对基础技能的现场考核,知识体系的建立,需要应试者好好梳理和掌握。这里我整理下java8到java24的新特性。
目录
[Java 8(2014 年 3 月)](#Java 8(2014 年 3 月))
[Java 9(2017 年 9 月)](#Java 9(2017 年 9 月))
[Java 10(2018 年 3 月)](#Java 10(2018 年 3 月))
[Java 11(2018 年 9 月,LTS)](#Java 11(2018 年 9 月,LTS))
[Java 12(2019 年 3 月)](#Java 12(2019 年 3 月))
[Java 13(2019 年 9 月)](#Java 13(2019 年 9 月))
[Java 14(2020 年 3 月)](#Java 14(2020 年 3 月))
[Java 15(2020 年 9 月)](#Java 15(2020 年 9 月))
[Java 16(2021 年 3 月)](#Java 16(2021 年 3 月))
[Java 17(2021 年 9 月,LTS)](#Java 17(2021 年 9 月,LTS))
[Java 18(2022 年 3 月)](#Java 18(2022 年 3 月))
[Java 19(2022 年 9 月)](#Java 19(2022 年 9 月))
[Java 20(2023 年 3 月)](#Java 20(2023 年 3 月))
[Java 21(2023 年 9 月,LTS)](#Java 21(2023 年 9 月,LTS))
[Java 22(2024 年 3 月)](#Java 22(2024 年 3 月))
[Java 23(2024 年 9 月)](#Java 23(2024 年 9 月))
[Java 24(2025 年 3 月)](#Java 24(2025 年 3 月))
Java 8(2014 年 3 月)
-
语言特性
-
引入 Lambda 表达式与函数式接口,简化代码。
-
方法引用,通过
Class::method
引用已有方法。 -
接口默认方法和静态方法,增强接口的灵活性。
-
重复注解和类型注解,支持注解的多样化使用。
-
-
核心库
-
Stream API,提供声明式、链式的集合操作。
-
Optional 类,优雅地处理"可能为空"的值。
-
全新的日期时间 API(如
LocalDate
、LocalTime
等)。 -
并发增强,如
CompletableFuture
。
-
-
JVM 与性能优化
-
移除永久代,引入元空间。
-
垃圾回收优化,引入 G1 垃圾收集器。
-
HashMap 性能改进,引入红黑树。
-
-
工具与其他
-
Nashorn JavaScript 引擎(后被移除)。
-
增强的注解处理和反射。
-
Java 9(2017 年 9 月)
-
语言和语法增强
-
模块化系统(Project Jigsaw),引入模块描述符
module-info.java
。 -
接口私有方法,增强接口内部实现的封装性。
-
try-with-resources 改进,支持直接使用已声明的资源变量。
-
-
核心库增强
-
集合工厂方法,如
List.of()
、Map.of()
。 -
Stream API 改进,新增
takeWhile
、dropWhile
等方法。 -
进程 API,通过
ProcessHandle
提供更丰富的进程管理功能。 -
响应式流(Reactive Streams),引入
Flow
API。 -
HTTP/2 客户端(孵化)。
-
-
JVM 和性能
-
G1 成为默认 GC。
-
字符串存储优化(Compact Strings)。
-
AOT 编译(实验)。
-
VarHandle 和内存栅栏。
-
多版本 JAR 文件支持。
-
-
工具与其他
-
JShell,交互式 REPL 工具。
-
jlink,用于创建自定义运行时镜像。
-
Java 10(2018 年 3 月)
-
语言特性
- 局部变量类型推断(
var
),简化局部变量声明。
- 局部变量类型推断(
-
核心库增强
-
不可变集合拷贝,如
List.copyOf()
。 -
Optional 增强,新增
orElseThrow()
等方法。
-
-
性能和 JVM 改进
-
G1 并行 Full GC。
-
应用类数据共享(AppCDS)。
-
线程局部握手,优化 JVM 内部机制。
-
备用内存设备上的堆支持。
-
-
工具和平台
-
实验性 Java JIT 编译器 - Graal。
-
根证书开源。
-
Java 11(2018 年 9 月,LTS)
-
语言特性
-
Lambda 参数的局部变量语法支持。
-
直接启动单文件程序,简化脚本化使用。
-
-
核心库增强
-
标准化 HTTP 客户端,支持 HTTP/1.1 和 HTTP/2。
-
字符串 API 增强,如
isBlank()
、strip()
、repeat()
等。 -
文件方法和集合增强,如
Files.readString()
。
-
-
性能与内存
-
ZGC(可伸缩低延迟 GC)和 Epsilon GC(实验性)。
-
低开销 Heap Profiling。
-
Flight Recorder 开源。
-
TLS 1.3 支持。
-
-
工具与其他
-
移除和弃用部分特性(如 Java EE 模块、Nashorn 等)。
-
Java 命令新选项。
-
Java 12(2019 年 3 月)
-
语言特性(预览)
-
Switch 表达式(预览),支持箭头语法和
yield
。 -
Instanceof 模式匹配(预览),简化类型检查和转换。
-
-
核心库增强
-
String 新方法,如
indent()
、transform()
。 -
Files.mismatch 方法,比较文件内容。
-
NumberFormat 压缩数字。
-
Collector.Teeing,支持流的拆分和合并。
-
-
JVM 与垃圾回收
-
Shenandoah GC(实验性)。
-
G1 优化,如可中止的混合收集。
-
-
工具和其他
-
Microbenchmark Harness(试验)。
-
JVM 常量 API。
-
Java 13(2019 年 9 月)
-
语言特性(预览)
-
文本块(Text Blocks,预览),简化多行字符串书写。
-
Switch 表达式第二次预览,引入
yield
关键字。
-
-
核心库与其他
-
ZGC 改进,支持堆内存归还。
-
Socket API 重构,提升并发性能。
-
动态 CDS 归档,简化类数据共享。
-
Java 14(2020 年 3 月)
-
JVM 改进
- 空指针异常详细提示。
-
语言特性
-
Switch 表达式正式推出。
-
Records(记录类,预览),简化数据载体类的定义。
-
文本块第二次预览。
-
instanceof 模式匹配第二次预览。
-
-
核心库和工具
-
移除过时的 CMS GC。
-
ZGC 扩展到 macOS/Windows。
-
jpackage 工具(孵化),用于打包原生安装包。
-
Java 15(2020 年 9 月)
-
核心语言特性
-
文本块正式发布。
-
密封类(预览),限制类的继承。
-
隐藏类(Hidden Classes),用于动态生成类。
-
-
核心库与安全
-
CharSequence.isEmpty() 方法。
-
TreeMap 增强,支持
putIfAbsent
等方法。 -
新的数字签名算法 EdDSA。
-
-
JVM 和性能
-
ZGC 转正,支持多平台。
-
弃用 Nashorn JavaScript 引擎。
-
Java 16(2021 年 3 月)
-
语言特性
-
Records(记录类)正式发布。
-
模式匹配的 instanceof 正式发布。
-
密封类第二次预览。
-
-
核心库增强
-
Vector API(孵化),支持 SIMD 指令。
-
Foreign Memory Access API(孵化),安全访问堆外内存。
-
JDK 内部 API 强封装。
-
-
工具与 JVM
-
jpackage 工具正式发布。
-
迁移至 Git/GitHub。
-
Alpine/Linux AArch64 移植。
-
Java 17(2021 年 9 月,LTS)
-
语言特性
-
密封类正式发布。
-
Switch 模式匹配(预览)。
-
-
核心库
-
增强的伪随机数生成器。
-
跨平台渲染管线(macOS Metal)。
-
弃用安全管理器。
-
移除 RMI 激活机制。
-
-
性能与内部
-
永久性强封装 JDK 内部。
-
移除实验性 AOT/JIT 编译器。
-
Java 18(2022 年 3 月)
-
平台与性能
-
默认字符集 UTF-8。
-
简单的 Web 服务器。
-
核心类重构(MethodHandle 实现)。
-
-
新特性和 API
-
代码段(Snippet)标签 for JavaDoc。
-
Vector API 第三次孵化。
-
互联网地址解析 SPI。
-
外部函数 & 内存 API 第二次孵化。
-
Switch 模式匹配第二次预览。
-
弃用终结器 Finalization。
-
-
安全与密码
- 默认禁止弱算法。
Java 19(2022 年 9 月)
-
并发与虚拟线程
-
虚拟线程(预览)。
-
结构化并发(孵化)。
-
-
语言和模式匹配
-
记录模式(预览)。
-
Switch 模式匹配第三次预览。
-
-
外部接口和内存
- 外部函数与内存 API(预览)。
-
其他改进
-
虚拟线程 Pinning 问题优化。
-
Linux/RISC-V 移植。
-
Java 20(2023 年 3 月)
-
项目 Loom 持续改进
-
虚拟线程第二次预览。
-
结构化并发第二次孵化。
-
作用域值(孵化)。
-
-
模式匹配和类型系统
-
记录模式第二次预览。
-
Switch 模式匹配第四次预览。
-
泛型实例推断改进(预览)。
-
-
外部接口
- 外部函数 & 内存 API 第二次预览。
Java 21(2023 年 9 月,LTS)
-
语言特性
-
字符串模板(预览)。
-
记录模式 & 模式匹配 for switch(正式)。
-
未命名模式和变量(正式)。
-
未命名类和实例 main 方法(预览)。
-
-
并发和虚拟线程
-
虚拟线程正式发布。
-
Sequenced Collections(序列集合)。
-
-
JVM 和性能
-
分代 ZGC(实验)。
-
禁用安全管理器。
-
虚拟线程同步非阻塞平台线程。
-
类加载和链接缓存(预览)。
-
类文件 API 正式发布。
-
Java 22(2024 年 3 月)
-
语言与语法
-
未命名模式和变量转正。
-
外部函数和内存 API 正式发布。
-
多文件源代码程序启动。
-
构造函数中允许语句在 super() 之前(预览)。
-
-
核心库与安全
-
类文件 API 第二次预览。
-
流收集器 API(预览)。
-
Markdown 文档注释。
-
-
其他变化
-
G1 区域固定。
-
Unsafe 内存访问方法弃用。
-
Java 23(2024 年 9 月)
-
语言与语法
-
原始类型模式(预览)。
-
类文件 API 第二次预览。
-
Markdown JavaDoc 正式。
-
向量 API 第八次孵化。
-
Stream 收集器第二次预览。
-
-
JVM 与安全
-
禁用 SecurityManager 完成。
-
TLS/KEM 支持。
-
JVM 性能优化。
-
模块导入声明(预览)。
-
Java 24(2025 年 3 月)
-
安全与密码学
-
密钥派生函数 API(预览)。
-
完全禁用 Security Manager。
-
-
性能与工具
-
类加载与链接缓存。
-
类文件 API 正式发布。
-
Stream::gather 正式发布。
-
-
并发与内部改进
-
作用域值第四次预览。
-
虚拟线程同步无 Pinning。
-
jlink 无需 JMOD 文件。
-
-
预览/孵化
-
字符串模板第二次预览。
-
隐式类导入(预览)。
-