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

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,