Java 9 นำเสนอการปรับปรุงและฟีเจอร์ใหม่มากมาย รวมถึง JShell Http2Client Java Platform Module System (JPMS) Multi-release JAR Stack Walking API Private methods in interface Process API updates Collection API updates Stream API improvements เป็นต้น
ความแตกต่างหลัก
- Java 8 และก่อนหน้า: คอมโพเนนต์ระดับบนสุดคือ package จัดกลุ่ม types (classes, interfaces, enums) และ resources
- Java 9: นำเสนอคอมโพเนนต์ใหม่ module จัดกลุ่มแพ็กเกจที่เกี่ยวข้อง และ module descriptor (module-info.java)
- Java 8 ใช้ package เป็น top-level component ในขณะที่ Java 9 ใช้ module
- แต่ละโมดูล Java 9 มี module descriptor เพียง 1 ตัว ในขณะที่ package ของ Java 8 ไม่รวมหลายโมดูลเป็นโมดูลเดียวได้
โครงสร้าง Java 8
Packages
- Types (classes, enums, interfaces, etc)
- Code
- Data
- Resources
- xml
- images
- properties
โครงสร้าง Java 9
Modules (Resources, Module Descriptor)
- Packages
- Types (classes, enums, interfaces, etc)
- Code
- Data
- Resources
- xml
- images
- properties
ฟีเจอร์ใหม่สำคัญใน Java 9
| ฟีเจอร์ | คำอธิบาย |
|---|---|
| JShell (REPL) | รันโค้ดโต้ตอบได้ทันที |
| Module System (JPMS) | โมดูลาร์ลิซ์โค้ด จัดการ dependency |
| HTTP/2 Client | HTTP client ใหม่ รองรับ HTTP/2 |
| Multi-release JAR | JAR เดียวรองรับหลายเวอร์ชัน JDK |
| Stack Walking API | เข้าถึง stack trace แบบ lazy และ filter ได้ |
| Private Interface Methods | private methods ใน interface |
| Process API | จัดการ process OS ได้ดีขึ้น |
| Collection Factory Methods | List.of(), Set.of(), Map.of() |
| Stream API | takeWhile, dropWhile, iterate, ofNullable |
| Optional Enhancements | stream(), ifPresentOrElse, or() |