Ciri dan Penambahbaikan Java 9

Kerangka modular yang dikembangkan di bawah Project Jigsaw & ciri Java 9 utama dalam blog ini adalah JShell (alat REPL), perubahan API penting & perubahan tahap JVM.

Pelepasan fitur Java 9 dan Java 9 adalah tonggak untuk ekosistem Java.Mengikuti rilis baru adalah penting untuk mengikuti perkembangan teknologi dan memahami keperluan di sebalik apa yang diperkenalkan akan menjadikan anda lebih dekat dengan .Kerangka modular yang dikembangkan di bawah Project Jigsaw akan menjadi sebahagian daripada pelepasan Java SE ini dan ciri-ciri utama dalam ini adalah JShell (alat REPL), perubahan API penting dan perubahan tahap JVM untuk meningkatkan prestasi dan debugabilitas JVM.

Sebelum kita menguraikan fitur Java 9 secara terperinci, mari kita lihat versi Java sebelumnya dan lihat apa kekurangannya dan bagaimana Java 9 membantu mengatasi anomali tersebut: -





  • Platform Java Standard Edition dan JDK tidak dapat dilayari untuk peranti pengkomputeran kecil
  • Tidak ada keselamatan dan penyelenggaraan JDK secara keseluruhan
  • Tidak ada peningkatan keseluruhan prestasi aplikasi
  • Sukar bagi pengembang Java untuk membangun dan menjunjung perpustakaan kod dan aplikasi yang lebih besar, baik untuk Java SE dan EE Platform

Dalam catatan blog ini saya akan mengkategorikan ciri Java 9 dengan cara berikut:



  1. Memproses kemas kini API di Java 9
  2. Pelanggan HTTP / 2 di Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) di Java 9
  4. Ciri fail JAR berbilang pelepasan di Java 9
  5. Lebih banyak ciri Kemas kini Serentak di Java 9
  6. Jigsaw Projek di Java 9

Apa yang baru di Java 9?

Saya telah memilih beberapa ciri Java 9 baru, yang saya rasa patut saya ketahui. Mari lihat apa ciri-ciri ini: -

Memproses kemas kini API di Java 9

API Proses Java cukup primitif,dengan sokongan hanya untuk melancarkan proses baru, ubah hala output proses, dan aliran ralat. Dalam siaran ini, kemas kini ke API Proses memungkinkan yang berikut:

  • Mendapatkan PID proses JVM semasa dan proses lain yang dihasilkan oleh JVM
  • Hitung proses yang berjalan dalam sistem untuk mendapatkan maklumat seperti PID, nama, dan penggunaan sumber
  • Menguruskan pokok proses
  • Menguruskan subproses

Mari kita lihat contoh kod, yang mencetak PID semasa dan juga maklumat proses semasa:



kelas awam 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 ('Info:' + currentProcessInfo)}

Pelanggan HTTP / 2 di Java 9

Fitur Java 9 ini diharapkan dapat berubah pada rilis berikutnya dan bahkan dapat dihapus sepenuhnya.

Lebih awal Pembangun sering menggunakan perpustakaan pihak ketiga, seperti HTTP Apache, Jersey, dan sebagainya. Selain itu, API HTTP Java mendahului spesifikasi HTTP / 1.1 dan segerak dan sukar untuk dipelihara. Batasan ini memerlukan keperluan untuk menambahkan API baru. API klien HTTP baru menyediakan yang berikut:

  • API yang ringkas dan ringkas untuk menangani kebanyakan permintaan HTTP
  • Sokongan untuk spesifikasi HTTP / 2
  • Prestasi yang lebih baik
  • Keselamatan yang lebih baik
  • Beberapa tambahan lagi

Mari kita lihat contoh kod untuk membuat permintaan HTTP GET menggunakan API baru. Berikut adalah definisi modul yang ditakrifkan dalam modul file-info.java:

perbezaan antara kelas dan antara muka di java
ciri baru modul {memerlukan jdk.incubator.httpclient}

Kod berikut menggunakan API Pelanggan HTTP, yang merupakan sebahagian daripada modul jdk.incubator.httpclient:

import jdk.incubator.http. * import java.net.URI kelas awam Http2Feature {public static void main (String [] args) membuang Pengecualian {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder URI baru (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String Respons = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('Status code:' + response.statusCode ())
System.out.println ('Badan Respons:' + respons.body ())}}}

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

Anda pasti pernah melihat bahasa, seperti Ruby, Scala, Groovy, Clojure, dan lain-lain yang dihantar dengan alat, yang sering disebut REPL ( Baca-Eval-Cetak-Gelung ). Alat REPL ini sangat berguna dalam mencuba ciri bahasa. Sebagai contoh, di Scala, kita boleh menulis program Hello World ringkas sebagai scala> println ('Hello World')

Sebilangan kelebihan JShell REPL adalah seperti berikut:

  • Pembangun yang berpengalaman dapat membuat prototaip dan bereksperimen dengan cepat sebelum menggunakannya dalam pangkalan kod utama mereka
  • Pembangun Java kini boleh membanggakan REPL

Mari jalankan perintah JShell, seperti yang ditunjukkan dalam gambar berikut:

Contoh JShell Hello World - Java 9 - Edureka

Ciri fail JAR berbilang pelepasan di Java 9

Setakat ini, fail JAR dapat berisi kelas yang hanya dapat dijalankan pada versi Java yang mereka kumpulkan. Untuk memanfaatkan fitur baru platform Java pada versi yang lebih baru, pengembang perpustakaan harus melepaskan versi perpustakaan mereka yang lebih baru. Tidak lama lagi, akan ada beberapa versi perpustakaan yang dikendalikan oleh pemaju, yang boleh menjadi mimpi buruk. Untuk mengatasi batasan ini, ciri Java 9 fail JAR berbilang pelepasan ini membolehkan pembangun membina fail JAR dengan versi fail kelas yang berbeza untuk versi Java yang berbeza.Contoh berikut menjadikannya lebih jelas.

Berikut adalah gambaran mengenai fail JAR semasa:

akar balang - Kelas - Kelas B. - C. kelas

Inilah rupa fail JAR berbilang pelepasan:

akar balang - Kelas - Kelas B. - C. kelas - META-INF - versi - 9 - Kelas - 10 - Kelas B.

Dalam ilustrasi sebelumnya, fail JAR menyokong fail kelas untuk dua versi Java – 9 dan 10.

Jadi, apabila JAR yang lebih awal dijalankan di Java 9, A.class di bawah versi - 9 folder diambil untuk pelaksanaan.

Pada platform yang tidak menyokong fail JAR multi-pelepasan, kelas di bawah direktori versi tidak pernah digunakan. Jadi, jika anda menjalankan fail JAR multi-pelepasan di Java 8, sama baiknya dengan menjalankan fail JAR sederhana.

Lebih banyak ciri Kemas kini Serentak di Java 9

Dalam kemas kini ini, kelas baru, java.util.concurrent.Flow telah diperkenalkan, yang memiliki antarmuka bersarang yang mendukung pelaksanaan kerangka penerbitan-langganan. Kerangka penerbitan-langganan membolehkan pemaju membina komponen yang dapat menggunakan aliran data langsung secara serentak dengan menubuhkan penerbit yang menghasilkan data dan pelanggan yang menggunakan data melalui langganan, yang mengurusnya. Empat antara muka baru adalah seperti berikut:

  • java.util.concurrent.Flow.Penerbit
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (yang bertindak sebagai Penerbit dan Pelanggan).

Jigsaw Projek di Java 9

Tujuan utama projek ini adalah untuk memperkenalkan konsep modulariti sokongan untuk membuat modul di Java 9 dan kemudian menerapkan yang sama pada JDK itu dia, memodulasi JDK .

cara memasang hadoop pada linux

Sesetengah faedah daripada modulariti adalah seperti berikut:

  • Enkapsulasi yang kuat : Modul hanya dapat mengakses bahagian-bahagian modul yang telah tersedia untuk digunakan. Jadi, kelas awam dalam pakej tidak umum kecuali pakej dieksport secara eksplisit dalam fail maklumat modul.
  • Ketergantungan yang jelas : Modul mesti menyatakan modul lain yang akan mereka gunakan melalui klausa memerlukan.
  • Menggabungkan modul untuk membuat jangka masa yang lebih kecil, yang dapat dengan mudah ditingkatkan ke peranti pengkomputeran yang lebih kecil.
  • Boleh dipercayai : Aplikasi lebih dipercayai dengan menghapuskan masa larian kesilapan . Contoh: - anda pasti mengalami kegagalan aplikasi anda semasa waktu larian kerana tiada kelas, mengakibatkan ClassNotFoundException .

Terdapat pelbagai JEP , yang merupakan sebahagian daripada projek ini, seperti berikut:

  • JEP 200 - JDK modular : Ini menerapkan sistem modul platform Java untuk memodulasi JDK menjadi sekumpulan modul yang dapat digabungkan pada waktu kompilasi, waktu binaan, atau waktu berjalan.
  • JEP 201 - kod sumber modular : Ini memodulasi kod sumber JDK menjadi modul dan meningkatkan alat binaan untuk menyusun modul.
  • JEP 220 - gambar jangka masa modular : Ini menyusun semula imej jangka masa JDK dan JRE untuk menampung modul dan untuk meningkatkan prestasi, keselamatan, dan pemeliharaan.
  • JEP 260 - merangkumi kebanyakan API dalaman : Ini membolehkan banyak API dalaman diakses secara langsung atau melalui refleksi. Mengakses API dalaman yang pasti berubah cukup berisiko. Untuk mencegah penggunaannya, mereka dienkapsulasi ke dalam modul dan hanya API dalaman yang digunakan secara meluas yang tersedia hingga API yang tepat ada di tempatnya.
  • JEP 261 - sistem modul : Ini menerapkan spesifikasi Java sistem modul dengan mengubah bahasa pemrograman Java, JVM, dan API standar lainnya
  • JEP 282: jlink, penghubung Java : Ini membolehkan modul pembungkusan dan pergantungannya menjadi masa berjalan yang lebih kecil.

Jadi, ini semua mengenai ciri Java 9 dan Java 9 yang baru.

Sekarang setelah anda memahami ciri-ciri Java 9, periksa oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia.

G atau soalan untuk kita? Sila sebutkan di bahagian komen blog 'Java 9' ini dan kami akan menghubungi anda secepat mungkin.