这个项目用于学习不同Java版本的新特性,按版本模块化组织。
java-features/
├── java8/ # Java 8 新特性
├── java9/ # 未来添加: Java 9 新特性
├── java10/ # 未来添加: Java 10 新特性
├── java11/ # 未来添加: Java 11 新特性
└── pom.xml # 父项目POM
Java 8 是一个重要的版本,引入了许多革命性的特性:
-
Lambda表达式和函数式接口
- 允许将函数作为参数传递
- 使代码更简洁、可读性更强
-
Stream API
- 支持对集合进行函数式操作
- 提供了filter、map、reduce等操作
-
Optional类
- 更优雅地处理空值情况
- 避免NullPointerException
-
新的日期和时间API
- 提供了不可变的日期时间类
- 更好的设计和更多功能
-
默认方法
- 允许在接口中定义默认实现
- 支持接口的演化
-
方法引用
- 直接引用已有方法
- 使代码更简洁
-
新的JavaScript引擎(Nashorn)
- 替代了旧的Rhino引擎
- 提供更好的性能
-
Base64编码API
- 标准库支持Base64编码和解码
每个模块都可以独立运行。例如,要运行Java 8特性示例:
# 进入项目根目录
cd java-features
# 编译整个项目
mvn clean compile
# 运行Java 8特性演示
cd java8
mvn exec:java
- 添加Java 9模块,包括模块系统(Jigsaw)、集合工厂方法等
- 添加Java 10模块,包括局部变量类型推断(var关键字)等
- 添加Java 11模块,包括HTTP客户端API、String API增强等
- 添加Java 12-17模块,包括Switch表达式、文本块、Record类型等