Quên Java 11 đi, Java 17 là giành cho bạn

Giới Thiệu Hôm này mình xin giới thiệu các tính năng mới nổi bật từ bản java 11 trở đi, giúp bạn tự tin hơn để nâng cấp lên java 17 nhé. Text Blocks (Java 15) Text Blocks là tính năng được phát triển từ java 13, tuy nhiên phải tới java 15 nó mới

Giới Thiệu

Hôm này mình xin giới thiệu các tính năng mới nổi bật từ bản java 11 trở đi, giúp bạn tự tin hơn để nâng cấp lên java 17 nhé.

Text Blocks (Java 15)

Text Blocks là tính năng được phát triển từ java 13, tuy nhiên phải tới java 15 nó mới được chính thức đưa vào sử dụng.
Text Blocks giúp viện sử dụng chuỗi trong java dễ dành hơn

Java old version

String demo = "Hoàng Phúc International"
      + "n" 
      + "kafkan"
      + "kafkan";

Java new version

String demo = """
    Hoàng Phúc International
    
      kafka
      kafka
      """;

Để sử dụng các giá trị biến trong Text Blocks bạn có thể dùng hàm String.format, ví dụ:

    String demo = """
            Some parameter: %s
            """.formatted("HPI");

Records

record là một kiểu mới trong java 15, giúp bạn khởi tạo nhanh object.
Mình cùng làm 1 ví dụ để thấy sự tiện lợi so với sử dụng Class nhé

Sử dụng Class, khởi tạo tương đối dài và cồng kềnh =))

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

Sử dụng Records, cú pháp rất tính gọn và không cần tới thư viện thứ 3 như lombok, biến name và age sẽ được record lưu trữ lại.

public record Person(String name, int age) {
}

Person p = new Person("hpi",32);
p.name();

Sealed Classes

các Class khi được khai báo trong java sẽ không kiểm soát đường quyền thừa kế, bất cứ Class nào cũng có thể kế thừa được Class của bạn, để khắc phúc vấn đề này Sealed Classes được cho ra mắt trong java 15.

Sealed Classes kiểm soát việc kế thừa, các lớp chỉ được kế thừa lớp Sealed Classes khi Sealed Classes cấp quyền kế thừa

public abstract sealed class Person
    permits ClassA, ClassB {
 
}

Khi sử dụng permits ClassA, ClassB bạn đang cấp quyền cho ClassA, ClassB được phép kế thừa từ classs Person bất kỳ class khác khi kế thừa sẽ nhận được thông báo lỗi.

Pattern Matching Type Checks

từ phiên bản java 14 trở lên, việc kiểm tra Type sẽ trở nên đơn giản hơn về mặt cú pháp, thay đổi này thường không tạo ra sự khác biệt về hiệu năng tuy nhiên giúp code bạn minh bạc hơn khá nhiều

/// OLD
if (person instanceof Employee) {
    Employee employee = (Employee) person;
}

/// NEW
if (person instanceof Employee employee) {
    Date hireDate = employee.getHireDate();
}

Vector API

API Vector được phát triển lần đầu ở java 16. Ý tưởng của API này là cung cấp một phương tiện tính toán vector cuối cùng sẽ có thể hoạt động tối ưu hơn so với phương pháp tính toán vô hướng truyền thống.

int[] a = {1, 2, 3, 4};
int[] b = {5, 6, 7, 8};

var c = new int[a.length];

for (int i = 0; i < a.length; i++) {
    c[i] = a[i] * b[i];
}

Ví dụ về tính toán này, đối với một mảng có độ dài 4, sẽ thực thi trong 4 chu kỳ. Bây giờ, chúng ta hãy xem xét phép tính dựa trên Vector:

int[] a = {1, 2, 3, 4};
int[] b = {5, 6, 7, 8};

var vectorA = IntVector.fromArray(IntVector.SPECIES_128, a, 0);
var vectorB = IntVector.fromArray(IntVector.SPECIES_128, b, 0);
var vectorC = vectorA.mul(vectorB);
vectorC.intoArray(c, 0);

Vector giúp bạn tối ưu hơn khi bạn làm việc với mảng.

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ