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
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Với Java 25:
java
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
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
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
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
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
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
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
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
# 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
- Tải xuống tệp zip x64 cho Windows
- Giải nén vào
C:\Program Files\Java\jdk-25
- Đặt biến môi trường
JAVA_HOME
- Thêm
%JAVA_HOME%\bin
vào PATH - Kiểm tra:
java --version
Cài đặt trên Linux
bash
# 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
- Tải xuống chính thức: https://jdk.java.net/25/
- Tài liệu JEP: https://openjdk.org/projects/jdk/25/
- Repo GitHub của tôi với các ví dụ: https://github.com/bsanjuu/Java25
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!