0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Java 25 đã ra mắt! Hướng dẫn và tính năng mới

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

• 6 phút đọc

Java 25 đã ra mắt! Hướng dẫn bắt đầu với phiên bản LTS mới

Java 25 đã chính thức ra mắt! Sau Java 21 vào tháng 9 năm 2023, cuối cùng chúng ta cũng có phiên bản Hỗ trợ Dài hạn (LTS) tiếp theo. Mặc dù Java 22, 23 và 24 đã được phát hành giữa chừng, nhưng chúng không phải là các phiên bản LTS, đó là lý do mà hầu hết các nhà phát triển doanh nghiệp tập trung vào những phiên bản ổn định và được hỗ trợ lâu dài này.

Java 25 không chỉ là một phiên bản khác - nó chứa đầy các tính năng giúp Java trở nên thân thiện hơn với người mới bắt đầu, tối ưu hiệu suất và sẵn sàng cho doanh nghiệp.

Tại sao Java 25 lại đặc biệt?

Java 25 được phát hành vào ngày 16 tháng 9 năm 2025, bao gồm 18 Đề xuất Cải tiến JDK (JEP) từ những cải tiến cú pháp thân thiện với người mới đến tối ưu hóa hiệu suất nâng cao. Oracle dự định cung cấp hỗ trợ dài hạn cho Java 25 ít nhất trong 8 năm, khiến nó trở thành sự lựa chọn đáng tin cậy cho các môi trường sản xuất.

Những tính năng mới nổi bật trong Java 25

1. Tệp nguồn ngắn gọn & Phương thức chính không có tên (JEP 512) Cuối cùng

Bạn có nhớ "Hello World" đáng sợ đã làm khó khăn cho những người mới bắt đầu Java?

Trước Java 25:

java Copy
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Với Java 25:

java Copy
void main() {
    System.out.println("Hello, World!");
}

Vậy là xong! Không cần khai báo lớp, không cần public static, không cần String[] args. Điều này giúp đơn giản hóa Java cho người mới bắt đầu bằng cách cho phép họ viết chương trình mà không cần mã khung truyền thống.

2. Thân hàm khởi tạo linh hoạt (JEP 513) Cuối cùng

Trước đây, super() PHẢI là câu lệnh đầu tiên trong một hàm khởi tạo. Java 25 đã nới lỏng quy định này:

java Copy
class Parent {
    Parent(String name) {
        System.out.println("Parent: " + name);
    }
}

class Child extends Parent {
    Child(String name) {
        // Giờ bạn có thể thêm xác thực TRƯỚC super()!
        if (name == null) {
            throw new IllegalArgumentException("Name cannot be null");
        }
        System.out.println("Validating name: " + name);

        super(name); // Giờ có thể đứng sau các câu lệnh khác

        System.out.println("Child initialized successfully");
    }
}

3. Khai báo nhập mô-đun (JEP 511) Cuối cùng

Tạm biệt danh sách nhập vô tận! Giờ đây, bạn có thể nhập toàn bộ mô-đun chỉ với một dòng:

java Copy
import module java.base;

void main() {
    // Tất cả các lớp trong mô-đun java.base giờ đã có sẵn
    List<String> items = List.of("Java", "25", "Rocks");
    items.forEach(System.out::println);
}

4. Cải tiến API Collections

Làm việc với các bộ sưu tập giờ đây dễ hiểu hơn:

java Copy
void main() {
    List<String> languages = List.of("Java", "Python", "JavaScript", "Go");

    // Các phương thức tiện lợi mới
    System.out.println("Đầu tiên: " + languages.getFirst());
    System.out.println("Cuối cùng: " + languages.getLast());

    // Đảo ngược toàn bộ danh sách
    List<String> reversed = languages.reversed();
    System.out.println("Đảo ngược: " + reversed);
}

5. Biến không tên với dấu gạch dưới

Cho các biến không sử dụng trong xử lý ngoại lệ hoặc vòng lặp:

java Copy
void main() {
    try {
        int number = Integer.parseInt("không-phải-số");
    } catch (Exception _) {  // Sử dụng _ cho ngoại lệ không được sử dụng
        System.out.println("Đầu vào không hợp lệ");
        // Không cần tham chiếu đến đối tượng ngoại lệ
    }
}

6. API Hàm tạo Khóa (KDF) (JEP 504) Cuối cùng

Java 25 chuẩn hóa việc truy cập vào các nguyên lý mã hóa thường được sử dụng để tạo ra các khóa mã hóa từ mật khẩu người dùng:

java Copy
import javax.crypto.KDF;
import javax.crypto.spec.HKDFParameterSpec;

void deriveSecureKey() {
    KDF hkdf = KDF.getInstance("HKDF-SHA256");

    AlgorithmParameterSpec params = HKDFParameterSpec.ofExtract()
        .addIKM("user-password".getBytes())
        .addSalt("random-salt".getBytes())
        .thenExpand("app-context".getBytes(), 32);

    SecretKey derivedKey = hkdf.deriveKey("AES", params);
    System.out.println("Khóa an toàn đã được tạo thành công!");
}

Tất cả những rắc rối với SecretKeyFactory và PBEKeySpec cho PBKDF2 hoặc tranh cãi với HKDFParameterSpec giờ đã trở thành quá khứ. Một API để điều khiển tất cả.

Tính năng xem trước & ươm mầm

Giá trị theo phạm vi (JEP 506) - Lần xem trước thứ 5

Sự thay thế tốt hơn cho ThreadLocal:

java Copy
private static final ScopedValue<String> USER_CONTEXT = ScopedValue.newInstance();

void handleRequest(String userId) {
    ScopedValue.where(USER_CONTEXT, userId)
        .run(() -> {
            processOrder();
            sendNotification();
        });
}

void processOrder() {
    String currentUser = USER_CONTEXT.get(); // Có sẵn trong các cuộc gọi lồng nhau
    System.out.println("Đang xử lý đơn hàng cho: " + currentUser);
}

API Vector (JEP 508) - Lần ươm mầm thứ 10

API Vector cho phép thực hiện các phép toán vector toán học một cách đặc biệt hiệu quả cho các tải công việc AI/ML:

java Copy
import jdk.incubator.vector.*;

void vectorMath() {
    var species = FloatVector.SPECIES_256;
    float[] a = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
    float[] b = {2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f};
    float[] result = new float[8];

    var va = FloatVector.fromArray(species, a, 0);
    var vb = FloatVector.fromArray(species, b, 0);
    var vc = va.mul(vb); // Nhân vector hóa
    vc.intoArray(result, 0);
}

Hướng dẫn cài đặt

Tải xuống Java 25

Truy cập trang chính thức: https://jdk.java.net/25/

Cài đặt trên macOS

bash Copy
# Tải xuống và giải nén
curl -O https://download.java.net/java/GA/jdk25/...

# Di chuyển đến vị trí hệ thống
sudo mv jdk-25.jdk /Library/Java/JavaVirtualMachines/

# Cập nhật môi trường
echo 'export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home' >> ~/.zshrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

# Kiểm tra cài đặt
java --version

Cài đặt trên Windows

  1. Tải xuống tệp zip x64 cho Windows
  2. Giải nén vào C:\Program Files\Java\jdk-25
  3. Đặt biến môi trường JAVA_HOME
  4. Thêm %JAVA_HOME%\bin vào PATH
  5. Kiểm tra: java --version

Cài đặt trên Linux

bash Copy
# Tải xuống và giải nén
wget https://download.java.net/java/GA/jdk25/...
tar -xzf openjdk-25_linux-x64_bin.tar.gz

# Di chuyển và thiết lập
sudo mv jdk-25 /opt/
export JAVA_HOME=/opt/jdk-25
export PATH=$JAVA_HOME/bin:$PATH

# Làm cho nó vĩnh viễn
echo 'export JAVA_HOME=/opt/jdk-25' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc

Tài nguyên và những gì tiếp theo

Bạn nghĩ gì?

Tính năng nào của Java 25 mà bạn cảm thấy phấn khích nhất? Bạn có dự định nâng cấp các dự án của mình lên Java 25 không?

Hãy để lại ý kiến của bạn trong phần bình luận bên dưới!

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