Phiên bản Open JDK 12 vừa được Oracle chính thức phát hành. Cộng đồng lập trình Java sẽ được đón nhận những điều mới mẻ gì từ bản cập nhật này ?

Đến hẹn lại lên mỗi chu kỳ 6 tháng Oracle lại giới thiệu những bản cập nhật mới của ngôn ngữ lập trình con cưng của mình, bên cạnh đó cộng đồng Open Source cũng hào hứng không kém với những bản cập nhật của Open JDK.

Với những bạn chưa hiểu rõ sự khác nhau giữa Oracle JDK và Open JDK bài viết xin được phép tóm tắt nhanh: cả 2 đều là những phiên bản chuẩn của ngôn ngữ lập trình Java và đểu được xây dựng bởi Oracle. Sự khác nhau tí ti ở chỗ là Oracle JDK sẽ có những function mà bạn phải trả phí để sử dụng (và được sự hỗ trợ của Oracle - dành cho các doanh nghiệp) còn với Open JDK thì bạn được phép dùng free hoàn toàn với mục đích như thế nào tùy bạn và hiển nhiên bạn sẽ phải tự xử lý lấy những vấn đề của mình.

Giới hạn bài viết sẽ chỉ giới thiệu 1 số những tính năng mới mà không giới thiệu hết vì đó là những tính năng nội tại, nói nôm na là những điểm cải thiện được Oracle bổ sung, giúp cho chương trình Java hoạt động mượt mà hơn, xử lý bộ nhớ tối ưu hơn, ... mà không cần sự can thiệp từ phía lập trình viên.

Chúng ta vào tiết mục chính:

1. JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental):

Cơ chế dọn rác Shenandoah, như các ban đã biết thì Java vốn có tích hợp sẵn trình dọn rác trong quá trình thực thi hay còn gọi là Garbage Collector, lập trình viên chỉ việc định nghĩa các biến, các hàm và kết hợp logic của chúng với nhau để tạo thành chương trình hoàn chỉnh mà không cần quan tâm đến việc cấp phát và thu hồi bộ nhớ như lập trình với C, C++, ... Shenandoah được cho là sẽ tiết kiệm được thời gian dọn dẹp bẳng cách thực thi cùng lúc nhiều bộ dọn dẹp cùng lúc thay vì 1, với cơ chế mới này việc dọn dẹp 1 chương trình có Heap size 200GB sẽ bằng với 1 chương trình chỉ có 2GB Heap Size.

Tuy tính năng mới này là 1 tính năng hoàn toàn "nội tại" nhưng việc đem lại hiệu quả trước mắt cải thiện được hiệu suất của việc thực thi chương trình rất đáng quan tâm.

2. JEP 325: Switch Expressions (Preview)

Open JDK 12 mang lại cho chúng ta sự thuận tiện hơn trong việc sử dụng lệnh rẽ nhánh switch case, hãy cùng so sánh qua 2 ví dụ:

Trước đây (hiện tại) chúng ta viết:

switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}

Với Open JDK 12:

switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}

Cách viết mới đem lại sự trực quan, rõ ràng hơn nhiều trong việc viết và review code. Nhưng đây vẫn chưa phải là điểm hay nhất.

int numLetters;
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        numLetters = 6;
        break;
    case TUESDAY:
        numLetters = 7;
        break;
    case THURSDAY:
    case SATURDAY:
        numLetters = 8;
        break;
    case WEDNESDAY:
        numLetters = 9;
        break;
    default:
        throw new IllegalStateException("Wat: " + day);
}

Giả sử bạn muốn xử lý những case khác nhau tương ứng với các giá trị khác nhau của biến "day". Khi biến "numLetters" đi qua các case giá trị của nó thật sự bị thay đổi đến 7 lần chứ không phải là 4, hay nói cách khác khi vào mỗi nhóm case giá trị của biến sẽ được thay đổi qua mỗi giá trị con. Do đó Open JDK 12 cải thiện vấn đề này bằng cú pháp mới:

int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY                -> 7;
    case THURSDAY, SATURDAY     -> 8;
    case WEDNESDAY              -> 9;
};

Không những trực quan hơn mà còn tiết kiệm performance hơn.

JEP 230: Microbenchmark Suite

Trước phiên bản JDK 12, lập trình viên phải add thêm thư viện Java Microbenchmark Harness (JMH), bây giờ JDK 12 đã tích hợp sãn 1 phiên bản basic của thư viện JMH để lập trình viên có thể thực hiện ngay những bài test benchmark đơn giản mà không cần phải thêm cả bộ thư viện vào trong project của mình.

Tham khảo link https://www.mkyong.com/java/java-jmh-benchmark-tutorial/ để hiểu thêm về cách test benchmark cho chương trình Java.

Chúc các bạn thành công.

Thông tin đầy đủ về Open JDK 12 các bạn tham khảo tại trang gốc: https://openjdk.java.net/projects/jdk/12/

thecoderoot

 

minhnhatict@gmail.com Java Programming