/ / Java 21: Khám phá những cải tiến mới nhất

Java 21: Khám phá những cải tiến mới nhất

wallhaven

Thế giới lập trình Java không ngừng phát triển, đòi hỏi bạn phải luôn cập nhật để trở nên xuất sắc trong nghề của mình.




Java 21 mang đến làn sóng cải tiến thú vị giúp cách mạng hóa cách bạn tiếp cận đồng thời, thao tác thu thập và làm việc với bản ghi.



Giới thiệu chủ đề ảo

Mở rộng quy mô các ứng dụng máy chủ luôn đưa ra những thách thức, với các luồng thường trở thành nút cổ chai. Số lượng luồng hạn chế, kết hợp với việc thường xuyên chờ đợi các sự kiện hoặc khóa để bỏ chặn, cản trở hiệu suất tổng thể.

Trước đây, giải quyết vấn đề này liên quan đến việc sử dụng các cấu trúc như Tương lai hoàn thành hoặc khung phản ứngdẫn đến mã phức tạp khó hiểu và khó bảo trì.

May mắn thay, Java 19 đã giới thiệu các luồng ảo dưới dạng tính năng xem trước, Java 21 đã tinh chỉnh và củng cố thông qua Đề xuất cải tiến JDK 444.

Các luồng ảo cung cấp một giải pháp thay thế đầy hứa hẹn, cho phép bạn giải quyết các thách thức về khả năng mở rộng một cách hiệu quả hơn. Điều này dẫn đến hiệu suất được cải thiện và khả năng đáp ứng nâng cao của các ứng dụng máy chủ.

Bộ sưu tập theo trình tự có thể sử dụng nhiều hơn

Theo truyền thống, việc sử dụng danh sách liên kết trong lập trình Java của bạn yêu cầu mã khá dài dòng. Ví dụ: để tìm nạp phần tử cuối cùng, bạn phải sử dụng phương pháp rườm rà này:

 var last = list.get(list.size() - 1); 

Tuy nhiên, Java 21 giới thiệu một giải pháp thay thế ngắn gọn và thanh lịch:

 var last = list.getLast(); 

Tương tự, việc truy cập phần tử đầu tiên của LinkedHashSet yêu cầu một tuyến đường vòng:

 var first = linkedHashSet.iterator().next(); 

Nhưng với Java 21, công việc này trở nên đơn giản hơn rất nhiều:

 var first = linkedHashSet.getFirst(); 

Bạn cũng có thể truy cập phần tử cuối cùng của LinkedHashSet bằng cách sử dụng mới getLast phương pháp tránh lặp qua toàn bộ tập hợp.

Những cải tiến này trong các bộ sưu tập được sắp xếp theo trình tự không chỉ nâng cao khả năng đọc mã mà còn hợp lý hóa việc truy xuất phần tử, giúp lập trình Java hiệu quả hơn và thân thiện với nhà phát triển hơn.

Ghi lại các mẫu để thuận tiện

Các mẫu bản ghi, được giới thiệu dưới dạng tính năng xem trước trong Java 19, cung cấp một cơ chế thuận tiện để truy cập các trường của bản ghi trong Java mà không cần các phương thức truy cập hoặc truyền rõ ràng.

Họ hiệp đồng với Khớp mẫu cho instanceofKết hợp mẫu cho công tắcđơn giản hóa đáng kể mã và nâng cao khả năng đọc tổng thể.

Đây là minh họa cho khái niệm này, với một bản ghi đơn giản có tên Chức vụ:

 public record Position(int x, int y) {} 

Trước đây, việc thực hiện các hành động khác nhau dựa trên lớp của đối tượng được yêu cầu bằng cách sử dụng Khớp mẫu cho instanceofnhư được minh họa trong đoạn mã sau:

 public void print(Object o) {
    if (o instanceof Position p) {
        System.out.printf("o is a position: %d/%d%n", p.x(), p.y());
    } else if (o instanceof String s) {
        System.out.printf("o is a string: %s%n", s);
    } else {
        System.out.printf("o is something else: %s%n", o);
    }
}

Với Ghi mẫubây giờ bạn có thể khớp trực tiếp một mẫu bản ghi chẳng hạn như Vị trí (int x, int y) thay vì sử dụng Vị trí p mẫu. Điều này cho phép bạn truy cập các biến xy trực tiếp trong mã, loại bỏ sự cần thiết của px()py():

 public void print(Object o) {
    if (o instanceof Position(int x, int y)) {
        System.out.printf("o is a position: %d/%d%n", x, y);
    } else if (o instanceof String s) {
        System.out.printf("o is a string: %s%n", s);
    } else {
        System.out.printf("o is something else: %s%n", o);
    }
}

Hơn nữa, bạn có thể sử dụng Ghi mẫu kết hợp với Kết hợp mẫu cho công tắcđể đơn giản hóa hơn nữa mã của bạn:

 public void print(Object o) {
    switch (o) {
        case Position(int x, int y) - > System.out.printf("o is a position: %d/%d%n", x, y);
        case String s - > System.out.printf("o is a string: %s%n", s);
        default - > System.out.printf("o is something else: %s%n", o);
    }
}

Các mẫu bản ghi lồng nhau cho phép bạn so khớp trên các bản ghi có các trường chính là bản ghi. Chẳng hạn, hãy xem xét một bản ghi có tên Con đường bao gồm một từĐẾN chức vụ:

 public record Path(Position from, Position to) {} 

Bằng cách sử dụng các mẫu bản ghi, in một Con đường đối tượng trở nên ngắn gọn hơn:

 public void print(Object o) {
    switch (o) {
        case Path(Position from, Position to) - > System.out.printf("o is a path: %d/%d -> %d/%d%n", from.x(), from.y(), to.x(), to.y());
       
    }
}

Với sự trợ giúp của Ghi mẫu, việc xử lý các bản ghi với các trường thuộc các loại khác nhau trở nên rõ ràng và dễ đọc hơn. Giả sử bạn có các bản ghi đã sửa đổi, Vị trí2DVị trí3DỞ đâu Chức vụ là một giao diện Java mà cả hai đều thực hiện:

 public sealed interface Position permits Position2D, Position3D {}
public record Position2D(int x, int y) implements Position {}
public record Position3D(int x, int y, int z) implements Position {}
public record Path < P extends Position > (P from, P to) {}

Để phân biệt hành vi in ​​cho đường dẫn 2D và 3D, bạn có thể sử dụng các mẫu bản ghi:

 public void print(Object o) {
    switch (o) {
        case Path(Position2D from, Position2D to) - > System.out.printf("o is a 2D path: %d/%d -> %d/%d%n", from.x(), from.y(), to.x(), to.y());
        case Path(Position3D from, Position3D to) - > System.out.printf("o is a 3D path: %d/%d/%d -> %d/%d/%d%n", from.x(), from.y(), from.z(), to.x(), to.y(), to.z());
       
    }
}

Các mẫu bản ghi làm giảm đáng kể mức độ chi tiết và nâng cao khả năng đọc mã khi xử lý các bản ghi chứa các trường thuộc nhiều loại khác nhau.

Mở khóa những khả năng mới với Java 21

Java 21 giới thiệu một loạt các tính năng mạnh mẽ giúp tăng cường khả năng của ngôn ngữ lập trình Java. Bằng cách áp dụng các cải tiến này, bạn có thể sắp xếp hợp lý các quy trình phát triển của mình và mở khóa các khả năng mới cho các ứng dụng của mình.

Luôn cập nhật các tính năng ngôn ngữ và khung công tác Java mới nhất giúp bạn duy trì mã hiệu quả và có thể bảo trì, đảm bảo bạn luôn ở vị trí tiên phong trong lập trình Java.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *