从 JDK 8(2014 年 3 月发布)到 JDK 21(2023 年 9 月发布)的 9 年时间里,Java 经历了巨大的变革。以下是主要的新特性对比:
一、语言特性重大革新
1. 模块系统(Jigsaw) - JDK 9
- 模块化 JDK 和应用程序,解决 JAR 地狱问题
module-info.java文件定义模块依赖
2. 局部变量类型推断(var) - JDK 10
// JDK 8
List<String> list = new ArrayList<>();
// JDK 10+
var list = new ArrayList<String>();
var stream = list.stream();
3. 文本块(Text Blocks) - JDK 15 正式
// JDK 8
String html = "<html>\n" + " <body>\n" + " <p>Hello</p>\n" + " </body>\n" + "</html>\n";
// JDK 15+
String html = """
<html>
<body>
<p>Hello</p>
</body>
</html>
""";
4. 记录类(Records) - JDK 16 正式
// JDK 8 - 需要大量样板代码
public class Person {
private final String name;
private final int age;
// 构造器、getter、equals、hashCode、toString...
}
// JDK 16+
{ }

