Tất tần tật những điều bạn cần biết về Java 9

2637

Sau hơn 3 năm kể từ Java 8, cuối cùng Java đã công bố phiên bản tiếp theo vào tháng 9 năm 2017 vừa qua.  

Java 9 được đánh giá là một bước ngoặt đối với chính bản thân Java. Bài này chúng ta sẽ thảo luận các tính năng mới của Java 9. Từ quan điểm hoạt động, những thay đổi và cải tiến trong hiệu suất và bảo mật.

Mô đun (Modularity)

Hãy bắt đầu với tính năng quan trọng nhất của Java 9 – Hệ thống Java Platform Module System. Vấn đề lớn nhất với Java là runtime library. Hai mươi năm phát triển trên một nền tảng lớn đã tạo ra nhiều đống lộn xộn với các classes bị chồng chéo vào nhau. Thậm chí còn không có cách nào tối ưu để triển khai các classes trong JDK. Điều đó dẫn đến việc phải dùng tới các thư viện phụ bên ngoài, khiến cho việc phát triển của nền tảng Java bị cản trở.

Với Java 9, JDK cũng chính là mô đun cũng như là đi kèm với 90 mô-đun riêng biệt khác. Chỉ các package được xuất ra một cách rõ ràng từ mô-đun mới có thể truy cập được tới các mô-đun khác. Cuối cùng, các classes thực hiện nội bộ giờ đây có thể được thực sự đóng gói. Ngoài ra, các mô-đun có thể express các dependencies vào các mô-đun khác. Những dependencies luôn được kiểm tra bởi hệ thống mô-đun cả trong quá trình compile và thực hiện.

Các module cũng có thể được sử dụng để mô đun hóa các ứng dụng chứ không chỉ là JDK. Thay vì sử dụng các đường dẫn (classpath) mong manh, bây giờ bạn có thể tạo ra các mô-đun riêng của mình.

Các mô-đun cung cấp một đường dẫn đến các ứng dụng có cấu trúc rõ ràng và đáng tin cậy hơn. Tuy nhiên, hệ thống mô-đun mới này sẽ không thay đổi Java trong một sớm một chiều. Sẽ mất một thời gian trước khi hệ thống mô đun được áp dụng rộng rãi. May mắn thay là cộng đồng đã chào đón sự thay đổi này rất tích cực.

Năng suất

Ngoài hệ thống mô-đun, Java 9 còn có các tính năng nhỏ để cải thiện năng suất. Ví dụ, các phương pháp collection factory cho phép bạn tạo các collection bất biến với các phần tử được xác định trước trong một câu lệnh. Nhờ đó mà Không cần phải giải quyết thêm nhiều phiền toái để tạo các collection nhỏ, được xác định trước.

Một tính năng giúp tăng tốc năng suất chính khác là JShell, một mã Read-Eval-Print-Loop cho Java. Thay vì compile và chạy các classes nhỏ để kiểm tra code, bạn có thể tương tác nhập và đánh giá các đoạn mã Java trong JShell với khả năng phản hồi tức thì. JShell đã được tích hợp với các IDE như IntelliJ IDEA, cho phép bạn mở một môi trường tương tác với quyền truy cập vào mã ứng dụng của bạn.

Hiệu suất

Khi chạy một phiên bản Java mới thường có nghĩa là bạn sẽ nhận được cải tiến về hiệu suất mà không cần thay đổi code. Java 9 cũng không ngoại lệ. Một ví dụ về sự cải tiến như vậy là tính năng Compact Strings. Bất kỳ chuỗi nào có thể được thấy rõ đầy đủ chỉ với bộ ký tự ASCII sẽ được lưu trữ với chỉ một byte cho mỗi ký tự. Các chuỗi có các ký tự nằm ngoài phạm vi ASCII sẽ lấy hai byte cho mỗi ký tự. Nếu chúng là các chuỗi đơn giản, điều này sẽ giúp làm giảm lượng bộ nhớ được dùng.

Một thay đổi quan trọng khác trong Java 9 là việc để Garbage Collector G1 (Garbage First) ở chế độ mặc định. Được thiết kế để sử dụng với qui mô lớn, bạn sẽ nhận được độ trễ thấp hơn khi code được thực hiện. Đổi lại, G1GC sử dụng tài nguyên CPU nhiều hơn để đạt được điều này.

Bảo mật

Bản thân nền tảng cũng đã có được nhiều tính năng mới được cập nhật để tăng cường bảo mật. Hầu hết các cải tiến về bảo mật trong Java 9 liên quan đến networking. Các phiên bản mới nhất của (D) TLS hiện được hỗ trợ cho các kết nối HTTPS an toàn.

Các tăng cường bảo mật khác bao gồm khả năng lọc dữ liệu tuần tự. Việc sắp xếp theo thứ tự vốn là điều mà Java luôn bỏ qua, dẫn đến nhiều cuộc tấn công an ninh trong những năm gần đây. Giờ đây, bạn có thể lọc các luồng dữ liệu tuần tự, giúp giảm thiểu mức độ tấn công của Java serialization.

Chu kỳ phát hành

Cho đến nay, chúng tôi đã tập trung vào các tính năng của Java 9. Nhưng có một lý do khác chứng minh việc Java 9 là một phiên bản quan trọng: Nó đánh dấu sự kết thúc của kỷ nguyên của các phiên bản Java chỉ tập trung vào “tính năng”. Trong quá khứ, một số tính năng quan trọng đã được chọn, và khi đã sẵn sàng, một phiên bản mới của Java mới được tạo ra. Trong thực tế, điều này đã dẫn đến khoảng cách ít nhất ba năm giữa các phiên bản chính. Điều này vốn là không thể chấp nhận được đối với thời đại ngày nay. Do đó, Oracle và OpenJDK đang chuyển sang việc phát hành các phiên bản dựa trên mốc thời gian.

Bây giờ, cứ mỗi 6 tháng, một phiên bản mới của Java sẽ được phát hành. Nó sẽ chứa tất cả các tính năng đã sẵn sàng tại thời điểm đó. Giữa những bản phát hành 6 tháng này, hãng cung sẽ tung ra bản cập nhật với các bản sửa lỗi quan trọng nếu cần. Lịch trình phát hành mới này có một số ý nghĩa. Hiện tại Java sẽ tung ra các bản cập nhật lớn vào tháng 3 và tháng 9 hàng năm. Có nghĩa là phiên bản tiếp theo vào tháng 3 năm 2018 sẽ là Java 10. Tuy nhiên, công ty vẫn chưa đưa ra thông tin chính thức xác nhận mốc thời điểm trên.

Tuy vậy, việc update thường xuyên Java cũng không phải là tin vui với nhiều công ty. Do đó, sẽ có các phiên bản dài hạn (LTSs) được chỉ định ba năm một lần. Phiên bản đầu tiên của LTS sẽ được phát hành tháng 9 năm 2018. Điều này cũng có nghĩa là Java 9 sẽ không có trong các phiên bản dài hạn được hỗ trợ.

Lời kết

Những chiến lược mới này làm cho Java trở nên linh hoạt hơn bao giờ hết. Các tính năng chính sẽ được chia thành các bước nhỏ và cập nhật mỗi 6 tháng một lần. Như vậy là ngay cả sau hơn 20 năm, Java vẫn tiếp tục phát triển với tốc độ sôi động và nhanh chóng.

Techtalk via dzone

  Java JDK 10: Có gì mới?
CHIA SẺ