Bản phát hành Java SE 18

Sau sáu tháng phát triển, Oracle đã phát hành Java SE 18 (Nền tảng Java, Phiên bản tiêu chuẩn 18), sử dụng dự án nguồn mở OpenJDK làm triển khai tham chiếu. Ngoại trừ việc loại bỏ một số tính năng không dùng nữa, Java SE 18 duy trì khả năng tương thích ngược với các bản phát hành trước đó của nền tảng Java—hầu hết các dự án Java được viết trước đây sẽ vẫn hoạt động mà không cần sửa đổi khi chạy phiên bản mới. Các bản dựng có thể cài đặt của Java SE 18 (JDK, JRE và Server JRE) được chuẩn bị cho Linux (x86_64, AArch64), Windows (x86_64) và macOS (x86_64, AArch64). Được phát triển bởi dự án OpenJDK, triển khai tham chiếu Java 18 hoàn toàn mở theo giấy phép GPLv2 với các ngoại lệ GNU ClassPath để cho phép liên kết động tới các sản phẩm thương mại.

Java SE 18 được phân loại là bản phát hành hỗ trợ thường xuyên và sẽ tiếp tục nhận được các bản cập nhật cho đến bản phát hành tiếp theo. Nhánh Hỗ trợ Dài hạn (LTS) phải là Java SE 17, sẽ tiếp tục nhận được các bản cập nhật cho đến năm 2029. Hãy để chúng tôi nhắc bạn rằng bắt đầu từ việc phát hành Java 10, dự án đã chuyển sang một quy trình phát triển mới, ngụ ý rằng chu kỳ hình thành các bản phát hành mới sẽ ngắn hơn. Chức năng mới hiện được phát triển trong một nhánh chính được cập nhật liên tục, bao gồm các thay đổi được thực hiện sẵn và từ đó các nhánh được phân nhánh sáu tháng một lần để ổn định các bản phát hành mới.

Các tính năng mới trong Java 18 bao gồm:

  • Theo mặc định, mã hóa là UTF-8. Các API Java xử lý dữ liệu văn bản dựa trên mã hóa ký tự giờ đây sẽ sử dụng UTF-8 theo mặc định trên tất cả các nền tảng, bất kể cài đặt hệ thống và cài đặt ngôn ngữ. Để hoàn nguyên về hành vi cũ, trong đó mã hóa được chọn dựa trên ngôn ngữ hệ thống, bạn có thể sử dụng tùy chọn "-Dfile.encoding=COMPAT".
  • Gói này bao gồm gói com.sun.net.httpserver, bao gồm tiện ích jwebserver và API thư viện với việc triển khai một máy chủ http đơn giản để phục vụ nội dung tĩnh (các trình xử lý giống như CGI và servlet không được hỗ trợ). Máy chủ HTTP tích hợp không được tối ưu hóa cho khối lượng công việc và không hỗ trợ kiểm soát truy cập và xác thực, vì nó chủ yếu nhằm mục đích sử dụng trong quá trình phát triển các dự án tạo mẫu, gỡ lỗi và thử nghiệm.
  • JavaDoc cung cấp hỗ trợ cho thẻ "@snippet" để nhúng các ví dụ hoạt động và đoạn mã vào tài liệu API, nơi bạn có thể sử dụng các công cụ xác thực, đánh dấu cú pháp và tích hợp IDE.
  • Việc triển khai API java.lang.reflect (Core Reflection), được thiết kế để lấy thông tin về các phương thức, trường và hàm tạo lớp, cũng như quyền truy cập vào cấu trúc bên trong của các lớp, đã được thiết kế lại. Bản thân API java.lang.reflect vẫn không thay đổi nhưng hiện được triển khai bằng cách sử dụng các thẻ điều khiển phương thức do mô-đun java.lang.invoke cung cấp, thay vì sử dụng trình tạo mã byte. Thay đổi này cho phép chúng tôi thống nhất việc triển khai java.lang.reflect và java.lang.invoke, đồng thời đơn giản hóa việc bảo trì chúng.
  • Bản xem trước thứ ba của API Vector đã được đề xuất, cung cấp các chức năng tính toán vectơ được thực thi bằng cách sử dụng hướng dẫn vectơ trên bộ xử lý x86_64 và AArch64, đồng thời cho phép áp dụng đồng thời các thao tác cho nhiều giá trị (SIMD). Không giống như các khả năng được cung cấp trong trình biên dịch HotSpot JIT để tự động vector hóa các phép toán vô hướng, API mới cho phép kiểm soát vector hóa một cách rõ ràng để xử lý dữ liệu song song.
  • Đã thêm giao diện SPI (giao diện nhà cung cấp dịch vụ) để phân giải tên máy chủ và địa chỉ IP, cho phép bạn sử dụng các trình phân giải thay thế trong java.net.InetAddress không bị ràng buộc với các trình xử lý do hệ điều hành cung cấp.
  • Bản xem trước thứ hai của API Bộ nhớ & Chức năng Ngoại được cung cấp, cho phép các ứng dụng tương tác với mã và dữ liệu bên ngoài thời gian chạy Java. API mới cho phép bạn gọi các hàm không phải JVM một cách hiệu quả và truy cập bộ nhớ không do JVM quản lý. Ví dụ: bạn có thể gọi các hàm từ thư viện dùng chung bên ngoài và truy cập dữ liệu quy trình mà không cần sử dụng JNI.
  • Đã thêm triển khai thử nghiệm thứ hai về khớp mẫu trong biểu thức "chuyển đổi", cho phép sử dụng các mẫu linh hoạt trong nhãn "trường hợp" thay vì các giá trị chính xác, bao gồm một loạt giá trị cùng một lúc, mà trước đây cần phải sử dụng chuỗi biểu thức “if...else” rườm rà. Vật o = 123L; Chuỗi được định dạng = switch (o) { case Integer i -> String.format("int %d", i); case Dài l -> String.format("dài %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("Chuỗi %s", s); mặc định -> o.toString(); };
  • Cơ chế quyết toán và các phương thức liên quan của nó như Object.finalize(), Enum.finalize(), Runtime.runFinalization() và System.runFinalization() không được dùng nữa và sẽ bị tắt trong bản phát hành trong tương lai.
  • Bộ thu gom rác ZGC (Z Garbage Collector), SerialGC và ParallelGC hỗ trợ tính năng chống trùng lặp hàng.

Nguồn: opennet.ru

Thêm một lời nhận xét