Mục lục
Java JDK đã có bảng nâng cấp 20, theo tuyên bố của Mark Reinhold kiến trúc sư trưởng của nhóm nền tảng Java tại Oracle đây là bản ổn định của JDK. Nó đã giải quyết các lỗi nghiệm trọng, chẳng hạn như hồi quy hoặc các sự cố quan trọng về chức năng.
Theo lịch phát hành, JDK 20 đã được phát hành chính thức vào ngày 21 tháng 3 năm 2023. Điều đáng chú ý là JEP 438 (vector API) đã được thêm vào bộ tính năng vào đầu tháng 3 năm 2023.
Sau đây là những chi tiết cụ thể về các tính năng mới trong JDK 20:
Vector API
API thể hiện các phép tính vector biên dịch một cách đáng tin cậy trong thời gian runtime thành các vector tối ưu trên các kiến trúc của CPU được hỗ trợ, do đó đạt được hiệu suất vượt trội so vơi các phép tính vô hướng tương đương.
API Vector lần đầu tiên được đề xuất bởi JEP 338 và được tích hợp vào JDK 16, sau đó là các bản JDK 17, JDK 18, JDK 19.
JEP này đề xuất phát triển lại API trong JDK 20, không có thay đổi nào về API so với JDK 19. Việc triển khai bao gồm một tập hợp nhỏ các bản sửa lỗi và cải tiến hiệu suất.
Virtual threads
Virtual thread (luồng ảo) là thread được tạo và quản lý bởi một platform thay vì được tạo và quản lý bởi hệ điều hành như thread thông thường.
Do virtual thread được tạo ra bởi platform nên về lý thuyết platform có thể tạo ra số lượng virtual thread gần như vô tận, không bị giới hạn bởi số lượng thread của hệ điều hành. Ngoài ra tạo virtual thread cũng tốn ít tài nguyên hệ thống hơn thread thông thường nhiều lần, giúp cho việc tạo và quản lý virtual thread trở nên dễ dàng hơn.
Structured Concurrency
API Structured Concurrency nhằm mục đích đơn giản hóa việc lập trình đa luồng (Multi threading)trên Java. Structured Concurrency có cấu trúc xử lý nhiều tác vụ chạy trong các luồng khác nhau như một đơn vị công việc duy nhất, do đó hợp lý hóa việc xử lý và hủy lỗi, cải thiện độ tin cậy và tăng cường khả năng quan sát.
Scoped Values
Cho phép chia sẻ dữ liệu bất biến trong và giữa các threads. Nó được ưu tiên hơn việc sử dụng các biến cục bộ thread-local, và đặt biệt sử dụng số lượng lớn các virtual threads. Một giá trị trong phạm vi cho phép dữ liệu được chia sẻ một cách an toàn và hiệu quả giữa các thành phần trong một chương trình lớn mà không cần dùng đến các đối số của phương thức. Các mục tiêu bao gồm dễ sử dụng, dễ hiểu, mạnh mẽ và hiệu suất.
Record patterns
Trong Java, khái niệm immutable (tính bất biến) dùng để chỉ những class mà đối tượng của chúng không bị thay đổi thông tin sau khi được khởi tạo. Bình thường để khai báo một immutable class chúng ta thường khai báo lớp này là final để các lớp khác không thể kế thừa (extend) được, và khai báo các fields của class đó là private và final, không có các phương thức Setter mà chỉ có phương thức Getter.
Và với từ khóa record khi khai báo class sẽ giúp cho việc viết code ít hơn, chỉ cần 1 dòng code chúng ta đã có thể implement class immutable. Java compiler sẽ generate các private, final fields, public constructor với đầy đủ các fields (constructor này còn được gọi là canonical constructor), các phương thức Getter cho những field này, phương thức equals(), phương thức hashCode() và phương thức toString() khi chúng ta sử dụng record để khai báo một class.
Foreign Function & Memory API
Một API mà các chương trình Java có thể tương tác với mã và dữ liệu bên ngoài Java runtime. Bằng cách gọi các hàm ngoại một cách hiệu quả (nghĩa là mã bên ngoài JVM) và bằng cách truy cập bộ nhớ ngoại một cách an toàn (tức là bộ nhớ không được quản lý bởi JVM), API cho phép các chương trình Java gọi các thư viện gốc và xử lý dữ liệu gốc mà không gây nguy hiểm và dễ vỡ JNI.
Pattern Matching for switch
Nâng cao ngôn ngữ lập trình trong Java khi làm việc với switch statement. Cho phép viết các câu lệnh điều kiện switch statement ngắn gọn và an toàn khi các truy vấn định hướng đến dữ liệu phức tạp.
Có thể đọc thêm các tính năng và tìm hiểu thêm các kiến trúc CPU được hỗ trợ của JDK 20 tại đây