JDK 7 歷經 5 年磨合(2006.12 JDK 6 → 2011.07 JDK 7),經歷 Sun 被 Oracle 收購、Lambda/Jigsaw 推遲至 JDK 8、IBM/Apple/SAP 加入 OpenJDK 等變故,最終於 2011 年 7 月 28 日發布,OpenJDK 7 為參考實現。
新增 invokedynamic 字節碼指令 + MethodHandle 動態鏈接機制,允許運行時綁定方法簽名。Groovy、JRuby、JavaScript (Nashorn) 等 JVM 動態語言性能大幅提升,為後續 Lambda 表達式(JDK 8)奠定基礎。
-XX:+UseG1GC -XX:MaxGCPauseMillis=200| 領域 | 關鍵增強 |
|---|---|
| 文件系統 | Path/Files/Paths API、屬性訪問、WatchService 監聽、可插拔 FileSystemProvider(支援 ZIP/JAR 作為文件系統) |
| 異步 I/O | AsynchronousFileChannel / AsynchronousSocketChannel,CompletionHandler 回調或 Future 獲取結果 |
| Socket 增強 | 綁定、多播、SCTP/SDP 協議支援 |
switch (String) 支援字符串分支try-with-resources 自動關閉實現 AutoCloseable 的資源<> 簡化泛型構造1_000_000catch (IOException | SQLException e)RecursiveTask/RecursiveAction支援 Unicode 6.0,Locale 實現 BCP 47 / UTR 35,區分顯示用 Locale 與格式化用 Locale。
Window.setOpacity/setShape)JDK 7 雖未包含 Lambda/模組化,但 **InvokeDynamic、G1、NIO.2、Coin** 四大支柱徹底現代化了 JVM 生態。生產遷移注意:
MaxGCPauseMillistry-with-resources 消除資源洩漏