JDK 18: Các tính năng mới trong Java 18
21/03/2022 07:27
Phiên bản mới của Java tiêu chuẩn sẽ có trong bản phát hành cuối cùng vào ngày 22 tháng 3 năm 2022, sẽ có chín tính năng mới. Cùng khám phá ngay những tính năng này trong bài viết dưới đây!
Bộ công cụ phát triển Java (JDK) 18 đã chuyển sang giai đoạn phát hành cuối cùng, kể từ ngày 24 tháng 2. Phiên bản mới của Java tiêu chuẩn sẽ có trong bản phát hành cuối cùng vào ngày 22 tháng 3 năm 2022, sẽ có chín tính năng mới. Cùng khám phá ngay những tính năng này trong bài viết dưới đây!
Tính năng mới Java JDK 18: Không chấp nhận Finalization cho quá trình removal
Finalizer có các sai sót gây ra các vấn đề nghiêm trọng trong thế giới thực về bảo mật, hiệu suất, độ tin cậy và khả năng bảo trì. Nó cũng có một mô hình lập trình khó. Tính năng hoàn thiện được bật theo mặc định ngay bây giờ nhưng có thể bị tắt để tạo điều kiện cho quá trình thử nghiệm sớm. Nó sẽ bị tắt theo mặc định trong bản phát hành tính năng và bị xóa hoàn toàn trong bản phát hành sau.
Đề xuất yêu cầu một tùy chọn dòng lệnh để vô hiệu hóa việc hoàn thiện và ngừng sử dụng tất cả các trình hoàn thiện và phương thức hoàn thiện trong API Java tiêu chuẩn. Các mục tiêu của đề xuất bao gồm giúp các nhà phát triển hiểu được sự nguy hiểm của việc hoàn thiện, chuẩn bị cho các nhà phát triển trước việc loại bỏ cuối cùng của nó và cung cấp các công cụ đơn giản để giúp phát hiện sự phụ thuộc vào quá trình hoàn thiện
Được giới thiệu trong Java 1.0, việc hoàn thiện nhằm giúp tránh rò rỉ tài nguyên. Một lớp có thể khai báo một trình hoàn thiện - phương thứcprotected void finalize()- cơ quan giải phóng bất kỳ tài nguyên cơ bản nào. Bộ thu gom rác sẽ lên lịch trình hoàn thiện của một đối tượng không thể truy cập được sẽ được gọi trước khi nó lấy lại bộ nhớ đối tượng; đến lượt nó, finalizephương thức có thể thực hiện các hành động chẳng hạn như gọi đối tượng củaclose.
Do các vấn đề với quá trình hoàn thiện, các nhà phát triển nên sử dụng các kỹ thuật thay thế để tránh rò rỉ tài nguyên, cụ thể là các câu lệnh thử với tài nguyên và trình dọn dẹp.
Tính năng mới Java JDK 18: Internet Address Resolution
Đối với SPI độ phân giải địa chỉ Internet , đề xuất là xác định SPI cho độ phân giải địa chỉ máy chủ và tên để Inet.Addresscó thể sử dụng các bộ phân giải khác với bộ phân giải tích hợp sẵn của nền tảng. Động lực cho nỗ lực này bao gồm việc kích hoạt tốt hơn Project Loom , cho đồng thời và các mô hình lập trình mới trong Java, cùng với việc tích hợp các giao thức mạng mới, tùy chỉnh và cho phép thử nghiệm. Đề xuất không liên quan đến việc phát triển một trình phân giải thay thế cho JDK.
Tính năng mới Java JDK 18:Pattern Matching for Switch
Bản xem trước thứ hai về đối sánh mẫu cho switch , trong đó ngôn ngữ Java sẽ được cải tiến với đối sánh mẫu cho các switch biểu thức và câu lệnh, cùng với các phần mở rộng cho ngôn ngữ của các mẫu. Điều này đã được xem trước trong JDK 17 . Mở rộng đối sánh mẫu để switch cho phép một biểu thức được kiểm tra dựa trên một số mẫu, mỗi mẫu có một hành động cụ thể, do đó, các truy vấn hướng dữ liệu phức tạp có thể được thể hiện một cách ngắn gọn và an toàn.
>>> Đọc thêm: 5 câu hỏi phỏng vấn quan trọng về Java Multithreading
Tính năng mới Java JDK 18: Implement Cor Reflection
Việc thực hiện lại phản xạ lõi với các chốt phương thức sẽ thực hiện lại lang.reflect.Methodvà Constructortrên Fieldđầu các java.lang.invokechốt phương thức. Có các xử lý phương thức đóng vai trò là cơ chế cơ bản để phản ánh sẽ giảm chi phí bảo trì và phát triển của cả API java.lang.reflectvà java.lang.invokeAPI.
Tính năng mới Java JDK 18: Simple web server
Với đề xuất máy chủ web đơn giản , một công cụ dòng lệnh sẽ được cung cấp để khởi động một máy chủ web tối thiểu chỉ phục vụ các tệp tĩnh. Không có CGI hoặc chức năng giống như servlet nào. Công cụ này sẽ hữu ích cho việc tạo mẫu, mã hóa đặc biệt và thử nghiệm, đặc biệt là trong các bối cảnh giáo dục.
Các mục tiêu của kế hoạch bao gồm cung cấp máy chủ tệp HTTP tĩnh ngoài hộp với thiết lập dễ dàng và chức năng tối thiểu, giảm năng lượng kích hoạt của nhà phát triển và làm cho JDK dễ tiếp cận hơn và cung cấp triển khai mặc định thông qua dòng lệnh cùng với một API nhỏ để tạo và tùy chỉnh có lập trình. Cung cấp một máy chủ giàu tính năng hoặc cấp thương mại không phải là mục tiêu của đề xuất.
Tính năng mới Java JDK 18: Foreign Function và Memory API
Sự ấp ủ thứ hai của một hàm ngoại và API bộ nhớ , trong đó một API được giới thiệu qua đó các chương trình Java có thể tương tác với mã và dữ liệu bên ngoài thời gian chạy Java. Bằng cách gọi các hàm ngoại - mã bên ngoài JVM - và bằng cách truy cập an toàn vào bộ nhớ ngoại - bộ nhớ không được quản lý bởi JVM - API cho phép các chương trình Java gọi các thư viện gốc và xử lý dữ liệu gốc mà không có sự nguy hiểm và dễ vỡ của JNI (Java Native Interface).
Mục đích là thay thế JNI bằng một mô hình phát triển Java thuần túy, ưu việt hơn. API này được ấp ủ trong JDK 17. Đối với JDK 18, các cải tiến sẽ được kết hợp dựa trên phản hồi, chẳng hạn như hỗ trợ cho nhiều nhà cung cấp dịch vụ hơn như Boolean và MemoryAddress trong các chốt var truy cập bộ nhớ và một API mới để sao chép mảng Java vào và từ bộ nhớ các phân đoạn.
>>> Tham khảo: Khóa học lập trình Java
Tính năng mới Java JDK 18: API Vector
API vectơ sẽ được ủ lần thứ ba trong JDK 18, trước đó đã được ủ trong JDK 16 và JDK 17 . Đề xuất này sẽ thể hiện các phép tính vectơ biên dịch tại thời điểm chạy thành các lệnh vectơ tối ưu trên các kiến trúc CPU được hỗ trợ, đạt được hiệu suất vượt trội so với các phép tính vô hướng tương đương.
Các hoạt động vectơ thể hiện mức độ song song cho phép thực hiện nhiều công việc hơn trên một chu kỳ CPU, do đó tạo ra những cải tiến hiệu suất đáng kể.
API vectơ bất khả trị nền tảng nhằm mục đích cung cấp cách viết các thuật toán phức tạp trong Java, sử dụng công cụ vẽ vectơ tự động HotSpot hiện có nhưng với mô hình người dùng giúp vectơ hóa dễ đoán hơn.
JDK 18 cũng sẽ hỗ trợ thêm cho phần mở rộng vectơ vô hướng ARMs nền tảng và cải thiện hiệu suất của các hoạt động vectơ chấp nhận mặt nạ trên các kiến trúc hỗ trợ tạo mặt nạ trong phần cứng.
Tính năng mới Java JDK 18: JEP 400
Chỉ định UTF-8 làm bộ ký tự mặc định của các API Java tiêu chuẩn. UTF-8 là một mã hóa ký tự có độ rộng thay đổi cho giao tiếp điện tử và được coi là bộ ký tự tiêu chuẩn của web. Charset là mã hóa ký tự có khả năng mã hóa tất cả các ký tự trên web.
Thông qua thay đổi này, các API phụ thuộc vào bộ ký tự mặc định sẽ hoạt động nhất quán trên tất cả các triển khai, hệ điều hành, ngôn ngữ và cấu hình. Đề xuất không nhằm xác định các API mới theo tiêu chuẩn Java hoặc JDK cụ thể.
Những người ủng hộ đề xuất hy vọng rằng các ứng dụng trong nhiều môi trường sẽ không bị ảnh hưởng bởi sự lựa chọn UTF-8 của Java, vì MacOS, nhiều bản phân phối Linux và nhiều ứng dụng máy chủ đã hỗ trợ UTF-8. Tuy nhiên, có rủi ro trong các môi trường khác, rõ ràng nhất là các ứng dụng phụ thuộc vào bộ mã mặc định sẽ hoạt động không chính xác khi xử lý dữ liệu được tạo ra khi bộ mã mặc định không được chỉ định.
Tham nhũng dữ liệu có thể âm thầm xảy ra. Tác động chính dự kiến sẽ rơi vào người dùng hệ thống Windows ở ngôn ngữ châu Á và có thể là một số môi trường máy chủ ở châu Á và các ngôn ngữ khác.
Tính năng mới Java JDK 18: Code Snippets
Các đoạn mã trong tài liệu API Java , liên quan đến việc giới thiệu @snippetthẻ cho Tài liệu chuẩn của JavaDoc, để đơn giản hóa việc đưa mã nguồn mẫu vào tài liệu API.
Trong số các mục tiêu của kế hoạch là tạo điều kiện thuận lợi cho việc xác thực các đoạn mã nguồn bằng cách cung cấp quyền truy cập API vào các đoạn đó. Mặc dù tính đúng đắn là trách nhiệm của tác giả, hỗ trợ nâng cao trong JavaDoc và các công cụ liên quan có thể giúp bạn đạt được điều đó dễ dàng hơn.
Các mục tiêu khác bao gồm cho phép tạo kiểu hiện đại, chẳng hạn như đánh dấu cú pháp, cũng như liên kết tự động của tên với khai báo và cho phép hỗ trợ IDE tốt hơn để tạo và chỉnh sửa đoạn mã. Đề xuất lưu ý rằng các tác giả của tài liệu API thường bao gồm các đoạn mã nguồn trong các nhận xét tài liệu.
Kết luận:
T3H hy vọng bạn thấy bài viết này hữu ích. Nếu bạn biết bất kỳ câu hỏi nào về JDK18 nào, hãy cho chúng tôi biết trong phần bình luận bên dưới. Tham khảo thêm các khóa học lập trình tại T3H ngay hôm nay!