Ngày 25 tháng 8 năm 2024 | Máy Tính
Bài viết này sẽ tập trung xem xét các tính năng chính mà Java 13 đã giới thiệu.
!Bản đồ tư duy các tính năng chính của Java 13 (Bản đồ tư duy các tính năng chính của Java 13)
1. Khối Văn Bản (Preview)
Java 13 đã giới thiệu tính năng khối văn bản (Text Blocks) trong giai đoạn thử nghiệm, nhằm đơn giản hóa cách biểu diễn chuỗi nhiều dòng. Khối văn bản được định nghĩa bằng ba dấu ngoặc kép """
, hỗ trợ định dạng và giữ nguyên các ký tự xuống dòng, nohu52 đăng nhập giúp xử lý chuỗi nhiều dòng một cách trực quan hơn. Nó còn tự động loại bỏ khoảng trắng ở đầu và cuối, làm cho chuỗi sạch hơn và tránh phải sử dụng các ký tự thoát truyền thống. Tính năng thử nghiệm này cung cấp khả năng đọc mã nguồn tốt hơn và dễ bảo trì hơn cho các nhà phát triển.
Dưới đây là tải game 789win một ví dụ minh họa:
// src/main/java/TextBlocksTest.java
public class TextBlocksTest {
public static void main(String[] args) {
// Trước Java 13, cách biểu diễn chuỗi nhiều dòng
String text = "Mục tiêu của Khối Văn Bản\n" +
"Đơn giản hóa việc viết chương trình Java bằng cách làm cho việc thể hiện chuỗi trải qua nhiều dòng mã nguồn trở nên dễ dàng hơn, đồng thời tránh các ký tự thoát trong các trường hợp thông thường.\n" +
"Cải thiện độ dễ đọc của các chuỗi trong chương trình Java biểu diễn mã từ các ngôn ngữ không phải Java.\n" +
"Hỗ trợ chuyển đổi từ chuỗi văn bản bằng cách quy định rằng bất kỳ cấu trúc mới nào có thể thể hiện cùng một tập hợp các chuỗi như một chuỗi văn bản, giải thích cùng các ký tự thoát và có thể thao tác giống như một chuỗi văn bản.";
// Sau khi Java 13 đưa vào khối văn bản, cách biểu diễn chuỗi nhiều dòng
String text1 = """
Mục tiêu của Khối Văn Bản
Đơn giản hóa việc viết chương trình Java bằng cách làm cho việc thể hiện chuỗi trải qua nhiều dòng mã nguồn trở nên dễ dàng hơn, đồng thời tránh các ký tự thoát trong các trường hợp thông thường.
Cải thiện độ dễ đọc của các chuỗi trong chương trình Java biểu diễn mã từ các ngôn ngữ không phải Java.
Hỗ trợ chuyển đổi từ chuỗi văn bản bằng cách quy định rằng bất kỳ cấu trúc mới nào có thể thể hiện cùng một tập hợp các chuỗi như một chuỗi văn bản, giải thích cùng các ký tự thoát và có thể thao tác giống như một chuỗi văn bản.
""";
}
}
Nhìn thấy rõ ràng rằng, nếu muốn biểu diễn một chuỗi nhiều dòng, trước Java 13 chúng ta cần dùng \n
để thực hiện xuống dòng và dùng dấu +
để nối các dòng, dẫn đến khả năng đọc mã nguồn kém; trong khi đó, với khối văn bản từ Java 13, chỉ cần bọc đoạn văn bản giữa """
là đủ, không cần xuống dòng hay nối chuỗi, đồng thời vẫn giữ nguyên định dạng đoạn văn bản.
2. Lưu Trữ CDS Động
Chúng ta đều biết rằng công nghệ CDS (Class Data Sharing) có thể lưu trữ dữ liệu lớp vào tệp lưu trữ chia sẻ, giúp khi khởi động chương trình có thể ánh xạ bộ nhớ trực tiếp từ tệp này, từ đó tăng tốc quá trình khởi động chương trình. Như phần trước “Tính Năng Mới của Java 12: Lưu Trữ Chia Sẻ Dữ Liệu Lớp Mặc Định”, Java 12 sẽ tạo sẵn lưu trữ CDS chứa các lớp cơ bản và tự động tải chúng khi khởi động, giúp người phát triển không cần phải tạo tệp lưu trữ thủ công.
Trong Java 13, một tính năng mới mang tên Lưu Trữ CDS Động (Dynamic CDS Archiving) đã được giới thiệu. Tính năng này cho phép thu thập và ghi lại các lớp và thư viện đang được sử dụng trong thời gian chạy ứng dụng, sau đó thêm chúng vào lưu trữ CDS hiện tại, giúp thực hiện chia sẻ lớp một cách động. Nhờ vậy, khi khởi động lại ứng dụng lần sau, có thể sử dụng lưu trữ CDS đã được cập nhật động, từ đó tăng tốc khởi động ứng dụng hơn nữa.
Cách sử dụng tính năng Lưu Trữ CDS Động như sau:
# Khởi động lần đầu tiên
java -XX:ArchiveClassesAtExit=app.jsa -cp app.jar Main
# Khởi động sau đó
java -XX:SharedArchiveFile=app.jsa -cp app.jar Main
Khi khởi động ứng dụng Java lần đầu tiên, chỉ cần chỉ định vị trí tệp lưu trữ, thì khi chương trình kết thúc, tệp JSA lưu trữ sẽ được tạo ra; lần khởi động tiếp theo, chỉ cần chỉ định vị trí tệp lưu trữ, từ đó tăng tốc quá trình khởi động.
3. ZGC: Giải Phóng Bộ Nhớ Không Sử Dụng (Thí Nghiệm)
Java 13 đã bổ sung một tính năng thí nghiệm mới dành cho ZGC (Garbage Collector), gọi là “Giải Phóng Bộ Nhớ Không Sử Dụng” (Uncommit Unused Memory). Mục đích của tính năng này là trong ZGC, giải phóng động những vùng bộ nhớ đã được phân bổ nhưng chưa được sử dụng, giúp tối ưu hiệu suất sử dụng bộ nhớ. Cụ thể, tính năng này giúp máy ảo Java giảm thiểu việc sử dụng bộ nhớ vật lý khi áp lực bộ nhớ cao bằng cách giải phóng những vùng bộ nhớ đã được phân bổ nhưng không cần thiết lúc đó. Tính năng này vẫn đang ở giai đoạn thí nghiệm và có thể được điều chỉnh dựa trên phản hồi từ thực tế.
4. Làm Lại Socket API Cũ
Socket API của Java ban đầu được giới thiệu trong phiên bản 1.0, mặc dù trong thời gian dài đã cung cấp hỗ trợ truyền thông mạng cho các ứng dụng Java, nhưng cách thức thực hiện bên dưới dần trở nên lỗi thời, thiếu hiệu quả và khó bảo trì. Java 13 nhắm đến việc thiết kế lại và tối ưu hóa các API cũ này để đáp ứng nhu cầu của các ứng dụng hiện đại.
Những thay đổi chính bao gồm:
- Thiết kế lại lớp Socket Làm lại lớp Socket và các lớp liên quan, cải thiện hiệu quả và sự linh hoạt trong truyền thông mạng. Thực hiện mới này giảm thiểu chi phí của các tầng trung gian bằng cách gọi hệ thống trực tiếp hơn.
- Tối ưu hóa tầng mạng thấp Tối ưu hóa cách thực hiện truyền thông mạng ở mức thấp hơn, giúp tận dụng tốt hơn mạng tầng của hệ điều hành hiện đại, từ đó nâng cao hiệu suất tổng thể.
- Cải tiến xử lý lỗi Cập nhật cơ chế xử lý ngoại lệ, làm cho việc xử lý lỗi trong các hoạt động mạng rõ ràng và nhất quán hơn.
- Cập nhật phương thức API Điều chỉnh một số phương thức API, bổ sung hỗ trợ cho các yêu cầu mạng hiện đại và đồng thời đơn giản hóa cách sử dụng giao diện.
Tóm lại, chúng ta đã nhanh chóng xem qua các tính năng chính hoặc điểm cải tiến mà Java 13 đã giới thiệu. Tất game bài đổi thưởng tặng quà khởi nghiệp cả các ví dụ mã nguồn trong bài viết này đã được gửi lên GitHub, mời bạn theo dõi hoặc Fork.
[1] Oracle: Ghi Chú Phát Hành JDK 13, Thay Đổi Quan Trọng Và Thông Tin - [2] OpenJDK: Tiêu Chuẩn Cuối Cùng Phát Hành Java SE 13 - [3] OpenJDK: JDK 13 - [4] Juejin: Đọc Một Lần Tất Cả Đặc Điểm Mới Từ Java 8 Đến Java 21 - [5] Juejin: Tổng Kết Đặc Điểm Mới Từ JDK 8 Đến JDK 17 -
#Java