0
0
Lập trình
NM

Những điểm mới trong Java 25: Tính năng và Cải tiến

Đăng vào 2 tuần trước

• 4 phút đọc

Chủ đề:

#java#openjdk

Giới thiệu

Java vẫn tiếp tục phát triển mạnh mẽ! Phiên bản Java 25 sắp ra mắt với nhiều cải tiến đáng chú ý. Bài viết này sẽ khám phá những thay đổi quan trọng trong Java 25, giúp bạn nắm bắt nhanh chóng các tính năng mới và cách áp dụng chúng vào dự án của mình.

Nội dung chính

Những API mới

JEP 506: Giá trị theo phạm vi

Liên kết đến JEP

Bạn có thường xuyên sử dụng ThreadLocal không? Trong Java 25, một cơ chế mới mang tên ScopedValue được giới thiệu nhằm giải quyết một số vấn đề mà ThreadLocal gặp phải:

  • Thời gian sống không giới hạn
  • Tính biến đổi không bị hạn chế
  • Chi phí hiệu suất cao khi truyền giá trị cho các luồng con

Dưới đây là ví dụ sử dụng ScopedValue:

java Copy
ScopedValue<FrameworkContext> CONTEXT = ScopedValue.newInstance();  

void serve(Request request, Response response) {  
    var context = createContext(request);  
    ScopedValue.where(CONTEXT, context)  
            .run(() -> handle(request, response));  
}  

void handle(Request request, Response response) {  
    // ....
    readKey(key);  
    // ....
}  

Key readKey(String key) {  
    var context = CONTEXT.get();  
    var connection = getConnection(context);  
    return connection.readKey(key);  
}

ScopedValue#where thiết lập môi trường, và #run thực thi phương thức handle với ngữ cảnh đã định. Ngữ cảnh sẽ được xóa ngay sau khi phương thức kết thúc.

JEP 510: API Hàm Sinh Khóa

Liên kết đến JEP

Java 25 mang đến một phương pháp thống nhất để xử lý các thuật toán KDF (Key Derivation Function).

KDF tạo ra các thuật toán mã hóa từ các bí mật chính (mật khẩu và khóa chính). Bạn có thể tìm hiểu thêm tại đây.

Ví dụ dưới đây minh họa cách sử dụng KDF:

java Copy
KDF hkdf = KDF.getInstance("HKDF-SHA256");  

AlgorithmParameterSpec params =  
        HKDFParameterSpec.ofExtract()  
                .addIKM(initialKeyMaterial)  
                .addSalt(salt)
                .thenExpand(info, 32);  
SecretKey key = hkdf.deriveKey("AES", params);

Việc điều chỉnh các đối tượng như SecretKeyFactoryPBEKeySpec đã trở thành quá khứ. Một API để quản lý tất cả.

Tính năng cú pháp mới

JEP 511: Khai báo Nhập Module

Liên kết đến JEP

Một tính năng tuyệt vời cho các lập trình viên chán ngán với danh sách nhập khẩu dài dòng. Giờ đây, bạn có thể nhập toàn bộ module chỉ với một dòng lệnh.

JEP 512: Tập tin nguồn gọn gàng và phương thức main thể hiện

Liên kết đến JEP

Cuối cùng, bạn có thể quên đi việc phải viết public static void main(String[] args) cho các script đơn giản. Ngôn ngữ giờ đây thân thiện hơn với người mới bắt đầu và dễ chịu hơn với những lập trình viên giàu kinh nghiệm.

JEP 513: Thân thể Khởi tạo Linh hoạt

Liên kết đến JEP

Giờ đây, các lập trình viên có thể viết mã trước khi gọi super() hoặc this(). Điều này không chỉ là cải tiến cú pháp mà còn đơn giản hóa logic khởi tạo đối tượng.

Thay đổi trên nền tảng Java

JEP 503: Loại bỏ nền tảng 32-bit x86

Liên kết đến JEP

Chúng ta chính thức nói lời tạm biệt với các hệ thống 32-bit x86. Hỗ trợ cho Windows 32-bit đã bị ngừng trong phiên bản trước, giờ đây các nền tảng còn lại cũng không còn hỗ trợ nữa.

JEP 519: Tiêu đề đối tượng gọn gàng

Liên kết đến JEP

Mỗi đối tượng trong heap Java có một tiêu đề ẩn chứa metadata. Giờ đây, bạn có thể giảm kích thước tiêu đề xuống còn 8 bytes thay vì 12 bytes trước đây.

JEP 521: Shenandoah Thế hệ

Liên kết đến JEP

Shenandoah là một garbage collector song song với thời gian dừng tối thiểu. Phiên bản này chính thức hỗ trợ các thế hệ đối tượng.

Kết luận

Java 25 là một bước tiến lớn trong việc cải thiện hiệu suất, giảm thiểu mã lặp lại và tăng cường bảo mật. Hãy khám phá và áp dụng những tính năng mới này vào dự án của bạn ngay hôm nay! Để tìm hiểu thêm, hãy xem danh sách đầy đủ các JEP tại đây.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào