JDK9新特性
Java 9(Java SE 9)在2017年发布,标志着Java平台的重要转折点,引入了模块系统(JPMS)等重大特性。
1.模块系统(JPMS, Java Platform Module System)
引入模块来封装代码和数据,提高可维护性和安全性。模块由module-info.java
描述。
// module-info.java 示例
module com.example.myModule {
requires java.base;
exports com.example.myPackage;
}
2.JShell - 交互式Java REPL
允许直接在命令行中编写和执行Java代码片段,无需创建类结构。
jshell> int x = 10;
x ==> 10
jshell> x + 20
$2 ==> 30
3.私有接口方法
允许在接口中定义私有方法,便于复用代码。
interface MyInterface {
default void publicMethod() {
privateHelperMethod();
}
private void privateHelperMethod() {
// 实现细节
}
}
4.改进的Stream API
添加了takeWhile
, dropWhile
, ofNullable
等方法,增强流处理能力。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.takeWhile(n -> n < 4)
.forEach(System.out::println);
5.响应式流(Flow API)
支持按照Reactive Streams规范构建非阻塞的背压式流处理系统。
6.改进的进程API
新增ProcessHandle
类,提供更丰富的进程管理能力。
ProcessHandle current = ProcessHandle.current();
long pid = current.pid();
System.out.println("Current process PID: " + pid);
7.改进的垃圾回收器接口
引入GarbageCollectorMXBean
,提供更详细的垃圾回收器信息。
8.改进的Javadoc工具
支持HTML5输出,增强文档的易读性和可访问性。
9.Multi-Release JARs
支持在同一个JAR文件中包含针对不同Java版本的类,以便向前兼容。
10.改进的字符串处理
引入String.strip()
、repeat()
、lines()
等方法。
String s = " Hello World! ";
System.out.println(s.strip()); // 输出"Hello World!"
11.改进的Optional类
添加Optional.or()
、ifPresentOrElse()
等方法,使Optional的使用更加灵活。
Optional<String> optional = Optional.empty();
String result = optional.orElse("default");
System.out.println(result); // 输出"default"
12.改进的集合工厂方法
List.of()
, Set.of()
, Map.of()
等静态工厂方法,创建不可变集合更便捷。
List<String> list = List.of("a", "b", "c");
13.改进的Try-with-resources
支持多个资源自动关闭,无需嵌套。
try (
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))
) {
// 操作
} catch (IOException e) {
e.printStackTrace();
}
14.改进的编译器诊断信息
提供更清晰、更有帮助的错误和警告信息。