目錄
1. 模塊系統(Jigsaw)
2. JShell(REPL工具)
3. 集合工廠方法
4. 接口私有方法
5. Stream API 增強
6. HTTP/2 客戶端(Incubator)
7. 多版本JAR包
總結
1. 模塊系統(Jigsaw)
作用:實現模塊化開發,解決"JAR地獄"問題,增強封裝性和安全性。
應用場景:大型項目依賴管理。
代碼示例:
// 模塊聲明文件: module-info.java
module com.example.myapp {requires java.base; // 引入基礎模塊requires java.sql; // 引入SQL模塊exports com.example.util; // 導出工具包
}
2. JShell(REPL工具)
作用:交互式命令行工具,即時執行代碼片段。
應用場景:快速驗證算法或API用法。
代碼示例:
jshell> int a = 10;
a ==> 10jshell> String s = "Hello";
s ==> "Hello"jshell> System.out.println(s + " Java " + a);
Hello Java 10
3. 集合工廠方法
作用:快速創建不可變集合(List/Set/Map)。
應用場景:初始化配置或常量集合。
代碼示例:
List<String> colors = List.of("Red", "Green", "Blue");
Set<Integer> primes = Set.of(2, 3, 5, 7);
Map<String, Integer> scores = Map.of("Alice", 90, "Bob", 85);// 嘗試修改會拋出 UnsupportedOperationException
colors.add("Yellow"); // ? 運行時異常
4. 接口私有方法
作用:在接口內封裝重復邏輯,提高代碼復用性。
應用場景:接口默認方法的輔助方法。
代碼示例:
public interface Calculator {default int add(int a, int b) {return a + b;}default int multiply(int a, int b) {return a * b;}// 私有方法private void log(String operation) {System.out.println("執行操作: " + operation);}
}
5. Stream API 增強
特性:takeWhile()
/dropWhile()
/iterate()
改進。
應用場景:流式數據處理。
代碼示例:
List<Integer> numbers = List.of(2, 4, 6, 8, 9, 10);// takeWhile: 遇到不滿足條件時終止
List<Integer> evenBeforeOdd = numbers.stream().takeWhile(n -> n % 2 == 0).collect(Collectors.toList()); // [2, 4, 6, 8]// iterate: 帶終止條件的生成
IntStream.iterate(0, i -> i < 5, i -> i + 1).forEach(System.out::print); // 輸出: 01234
6. HTTP/2 客戶端(Incubator)
作用:支持HTTP/2協議和WebSocket。
應用場景:高性能網絡請求。
代碼示例:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com")).build();client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);
7. 多版本JAR包
作用:同一JAR支持不同Java版本。
應用場景:向后兼容。
目錄結構:
myapp.jar
├── META-INF
│ └── versions/9
│ └── com/example/NewFeature.class # Java 9專用類
└── com/example└── Main.class # 通用類
總結
Java 9 通過模塊化重構了Java生態,同時提供:
- 開發效率工具(JShell)
- 語法糖(集合工廠方法)
- 工程化支持(接口私有方法)
- 性能優化(HTTP/2、Stream增強)
建議在微服務架構或大型系統中優先采用模塊化設計。