Các tính năng và cải tiến của Java 9



Khung mô-đun được phát triển theo Project Jigsaw và các tính năng chính của Java 9 trong blog này là JShell (công cụ REPL), các thay đổi quan trọng về API và các thay đổi ở cấp độ JVM.

Việc phát hành các tính năng của Java 9 và Java 9 là một cột mốc quan trọng đối với hệ sinh thái Java.Cập nhật các bản phát hành mới là điều quan trọng để luôn cập nhật công nghệ và hiểu được nhu cầu đằng sau những gì được giới thiệu sẽ đưa bạn đến gần hơn với .Khung mô-đun được phát triển theo Project Jigsaw sẽ là một phần của bản phát hành Java SE này và các tính năng chính trong bản này là JShell (công cụ REPL), các thay đổi API quan trọng và các thay đổi cấp JVM để cải thiện hiệu suất và khả năng gỡ lỗi của JVM.

Trước khi chúng tôi làm sáng tỏ các tính năng của Java 9 một cách chi tiết, chúng ta hãy xem qua các phiên bản Java trước đó và xem những thiếu sót là gì và cách Java 9 đã giúp khắc phục những bất thường đó: -





  • Nền tảng Java Standard Edition và JDK không thể điều hướng được cho các thiết bị máy tính nhỏ
  • Không có bảo mật và bảo trì tổng thể của JDK
  • Không có cải thiện tổng thể về hiệu suất ứng dụng
  • Các nhà phát triển Java đã gặp khó khăn trong việc xây dựng và duy trì các thư viện mã và các ứng dụng lớn hơn, cho cả Nền tảng Java SE và EE

tìm số lớn nhất trong mảng java

Trong bài đăng trên blog này, tôi sẽ phân loại các tính năng của Java 9 theo cách sau:



  1. Xử lý các bản cập nhật API trong Java 9
  2. Máy khách HTTP / 2 trong Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) trong Java 9
  4. Tính năng tệp JAR nhiều bản phát hành trong Java 9
  5. Tính năng cập nhật đồng thời khác trong Java 9
  6. Project Jigsaw trong Java 9

Java 9 có gì mới?

Tôi đã chọn một vài tính năng mới của Java 9 mà tôi cảm thấy rất đáng để biết. Hãy xem những tính năng này là gì: -

Xử lý các bản cập nhật API trong Java 9

API quy trình của Java còn khá sơ khai,chỉ hỗ trợ để khởi chạy các quy trình mới, chuyển hướng đầu ra của quy trình và các luồng lỗi. Trong bản phát hành này, các bản cập nhật cho API quy trình cho phép những điều sau:

  • Nhận PID của quy trình JVM hiện tại và bất kỳ quy trình nào khác do JVM tạo ra
  • Liệt kê các tiến trình đang chạy trong hệ thống để lấy thông tin như PID, tên và sử dụng tài nguyên
  • Quản lý cây quy trình
  • Quản lý các quy trình con

Hãy xem mã mẫu in PID hiện tại cũng như thông tin quy trình hiện tại:



public class NewFeatures {public static void main (String [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getPid ()) ProcessHandle.Info currentProcessInfo = currentProcess.info () System.out.println ('Thông tin:' + currentProcessInfo)}

Máy khách HTTP / 2 trong Java 9

Tính năng Java 9 này dự kiến ​​sẽ thay đổi trong các bản phát hành tiếp theo và thậm chí có thể bị gỡ bỏ hoàn toàn.

Sớm hơn Các nhà phát triển thường sử dụng thư viện của bên thứ ba, chẳng hạn như Apache HTTP, Jersey, v.v. Ngoài ra, API HTTP của Java có trước thông số kỹ thuật HTTP / 1.1 và đồng bộ và khó bảo trì. Những hạn chế này đòi hỏi sự cần thiết phải thêm một API mới. API ứng dụng khách HTTP mới cung cấp những điều sau:

  • Một API đơn giản và ngắn gọn để xử lý hầu hết các yêu cầu HTTP
  • Hỗ trợ đặc tả HTTP / 2
  • Hiệu suất tốt hơn
  • An ninh tốt hơn
  • Thêm một số cải tiến

Hãy xem mã mẫu để thực hiện yêu cầu HTTP GET bằng cách sử dụng các API mới. Dưới đây là định nghĩa mô-đun được xác định trong tệp module-info.java:

mô-đun newfeatures {yêu cầu jdk.incubator.httpclient}

Đoạn mã sau sử dụng HTTP Client API, là một phần của mô-đun jdk.incubator.httpclient:

import jdk.incubator.http. * import java.net.URI public class Http2Feature {public static void main (String [] args) ném Exception {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( mới URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('Mã trạng thái:' + response.statusCode ())
System.out.println ('Nội dung phản hồi:' + response.body ())}}}

Java Shell Scripting (Read-Eval-Print-Loop) trong Java 9

Bạn hẳn đã thấy các ngôn ngữ, chẳng hạn như Ruby, Scala, Groovy, Clojure và những ngôn ngữ khác vận chuyển bằng một công cụ, thường được gọi là TRẢ LỜI ( Đọc-Đánh giá-In-Vòng lặp ). Công cụ REPL này cực kỳ hữu ích trong việc thử các tính năng của ngôn ngữ. Ví dụ, trong Scala, chúng ta có thể viết một chương trình Hello World đơn giản như scala> println (“Xin chào Thế giới”)

Một số lợi thế của JShell REPL như sau:

  • Các nhà phát triển có kinh nghiệm có thể nhanh chóng tạo nguyên mẫu và thử nghiệm trước khi áp dụng nó trong cơ sở mã chính của họ
  • Các nhà phát triển Java hiện có thể tự hào về REPL

Hãy chạy lệnh JShell, như được hiển thị trong hình ảnh sau:

sự khác biệt giữa lớp trừu tượng và giao diện

Ví dụ về JShell Hello World - Java 9 - Edureka

Tính năng tệp JAR nhiều bản phát hành trong Java 9

Hiện tại, các tệp JAR có thể chứa các lớp chỉ có thể chạy trên phiên bản Java mà chúng đã được biên dịch. Để tận dụng các tính năng mới của nền tảng Java trên các phiên bản mới hơn, các nhà phát triển thư viện phải phát hành phiên bản thư viện mới hơn của họ. Chẳng bao lâu nữa, sẽ có nhiều phiên bản của thư viện được các nhà phát triển duy trì, điều này có thể là một cơn ác mộng. Để khắc phục hạn chế này, các tính năng Java 9 này của tệp JAR nhiều bản phát hành cho phép các nhà phát triển xây dựng tệp JAR với các phiên bản tệp lớp khác nhau cho các phiên bản Java khác nhau.Ví dụ sau đây làm rõ hơn.

Đây là hình minh họa về các tệp JAR hiện tại:

gốc bình - Một lớp học - B.class - C.class

Đây là giao diện của các tệp JAR nhiều bản phát hành:

gốc bình - Một lớp học - B.class - C.class - META-INF - phiên bản - 9 - Một lớp học - 10 - B.class

Trong hình minh họa trước, các tệp JAR hỗ trợ các tệp lớp cho hai phiên bản Java – 9 và 10.

Vì vậy, khi JAR trước đó được thực thi trên Java 9, A.class trong các phiên bản - thư mục 9 sẽ được chọn để thực thi.

Trên nền tảng không hỗ trợ tệp JAR nhiều bản phát hành, các lớp trong thư mục phiên bản sẽ không bao giờ được sử dụng. Vì vậy, nếu bạn chạy tệp JAR nhiều bản phát hành trên Java 8, nó cũng tốt như chạy một tệp JAR đơn giản.

Tính năng cập nhật đồng thời khác trong Java 9

Trong bản cập nhật này, một lớp mới, java.util.concurrent.Flow đã được giới thiệu, có các giao diện lồng nhau hỗ trợ việc triển khai khung đăng ký xuất bản. Khung đăng ký xuất bản cho phép nhà phát triển xây dựng các thành phần có thể sử dụng luồng dữ liệu trực tiếp không đồng bộ bằng cách thiết lập nhà xuất bản sản xuất dữ liệu và người đăng ký sử dụng dữ liệu thông qua đăng ký, đơn vị quản lý chúng. Bốn giao diện mới như sau:

bạn có thể mở rộng và triển khai trong java không
  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (hoạt động như cả Nhà xuất bản và Người đăng ký).

Project Jigsaw trong Java 9

Mục đích chính của dự án này là giới thiệu khái niệm mô đun ủng hộ để tạo mô-đun trong Java 9 và sau đó áp dụng tương tự cho JDK đó là, mô đun hóa JDK .

Một số những lợi ích của mô đun như sau:

  • Đóng gói mạnh mẽ : Các mô-đun chỉ có thể truy cập những phần của mô-đun đã được tạo sẵn để sử dụng. Vì vậy, các lớp công khai trong một gói không phải là công khai trừ khi gói được xuất một cách rõ ràng trong tệp thông tin mô-đun.
  • Xóa phụ thuộc : Các mô-đun phải khai báo những mô-đun nào khác mà chúng sẽ được sử dụng thông qua mệnh đề yêu cầu.
  • Kết hợp các mô-đun để tạo ra thời gian chạy nhỏ hơn, có thể dễ dàng thu nhỏ cho các thiết bị tính toán nhỏ hơn.
  • Đáng tin cậy : Các ứng dụng đáng tin cậy hơn bằng cách loại bỏ thời gian chạy sai sót . Thí dụ:- chắc hẳn bạn đã gặp lỗi ứng dụng của mình trong thời gian chạy do thiếu lớp, dẫn đến ClassNotFoundException .

Có nhiều JEP , là một phần của dự án này, như sau:

  • JEP 200 - JDK mô-đun : Điều này áp dụng hệ thống mô-đun nền tảng Java để mô-đun hóa JDK thành một tập hợp các mô-đun có thể được kết hợp tại thời điểm biên dịch, thời gian xây dựng hoặc thời gian chạy.
  • JEP 201 - mã nguồn mô-đun : Điều này mô-đun hóa mã nguồn JDK thành các mô-đun và nâng cao các công cụ xây dựng để biên dịch các mô-đun.
  • JEP 220 - hình ảnh thời gian chạy mô-đun : Điều này tái cấu trúc hình ảnh thời gian chạy JDK và JRE để phù hợp với các mô-đun và để cải thiện hiệu suất, bảo mật và khả năng bảo trì.
  • JEP 260 - đóng gói hầu hết các API nội bộ : Điều này cho phép rất nhiều API nội bộ được truy cập trực tiếp hoặc thông qua phản chiếu. Việc truy cập các API nội bộ bị ràng buộc phải thay đổi là khá rủi ro. Để ngăn chặn việc sử dụng nó, chúng đang được đóng gói thành các mô-đun và chỉ những API nội bộ được sử dụng rộng rãi mới được cung cấp cho đến khi có một API thích hợp.
  • JEP 261 - hệ thống mô-đun : Điều này thực hiện đặc tả Java của hệ thống mô-đun bằng cách thay đổi ngôn ngữ lập trình Java, JVM và các API tiêu chuẩn khác
  • JEP 282: jlink, trình liên kết Java : Điều này cho phép đóng gói các mô-đun và sự phụ thuộc của chúng vào thời gian chạy nhỏ hơn.

Vì vậy, đây là tất cả về Java 9 và các tính năng mới của Java 9.

Bây giờ bạn đã hiểu các tính năng của Java 9, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu.

G ot một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Java 9” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.