Java 9 giới thiệu nhiều tính năng mới: JShell, Http/2 Client, JPMS (Module System), Multi-release JAR, Stack Walking API, Private interface methods, Process API updates, Collection/Stream API improvements...
So sánh kiến trúc thành phần cao nhất
Java 8: Package là top-level
Packages
- Types (classes, enums, interfaces...)
- Code
- Data
- Resources (xml, images, properties...)
Java 9: Module là top-level
Modules (Resources, Module Descriptor)
- Packages
- Types (classes, enums, interfaces...)
- Code
- Data
- Resources (xml, images, properties...)
Bảng so sánh chi tiết
| Đặc điểm | Java 8 | Java 9 |
|---|---|---|
| Top-level component | Package | Module |
| Module Descriptor | Không có | module-info.java |
| Encapsulation | Package-private / public | Strong encapsulation (exports/opens) |
| Dependency | Classpath (jar hell) | Module-path (explicit requires) |
| JRE | Monolithic (~200MB) | Modular, custom JRE via JLink |
| Internal API access | Cho phép (sun.misc...) | Chặn mặc định, cần opens/exports |
| REPL | Không có | JShell |
| HTTP Client | HttpURLConnection (HTTP/1.1) | HttpClient (HTTP/2, async) |
| Stack Trace | Thread.getStackTrace() | StackWalker API (lazy, filter) |
| Collection Factory | Không có | List.of(), Set.of(), Map.of() |
| Stream API | Cơ bản | takeWhile, dropWhile, iterate, ofNullable |
| Optional | Cơ bản | stream(), ifPresentOrElse, or() |
| Process API | ProcessBuilder cơ bản | ProcessHandle, pid, children, destroy |
| Varargs + Generics | Cảnh báo unchecked | @SafeVarargs trên private method |
Kết luận
Java 9 là bước ngoặt lớn: Modularity (JPMS) thay đổi cách tổ chức, build, deploy ứng dụng. Các API mới (JShell, HttpClient, StackWalker, ProcessHandle) nâng cao năng suất developer và hiệu năng runtime.