Fitur dan Peningkatan Java 9



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

Rilis fitur Java 9 dan Java 9 merupakan tonggak penting bagi ekosistem Java.Mengikuti rilis baru adalah penting untuk tetap mengikuti perkembangan teknologi dan memahami kebutuhan di balik apa yang diperkenalkan akan membawa Anda lebih dekat dengan Anda. .Kerangka kerja modular yang dikembangkan di bawah Project Jigsaw akan menjadi bagian dari rilis Java SE ini dan fitur utama di dalamnya adalah JShell (alat REPL), perubahan API penting, dan perubahan level JVM untuk meningkatkan kinerja dan kemampuan debuggability JVM.

Sebelum kita mengungkap fitur-fitur Java 9 secara rinci, mari kita intip versi Java sebelumnya dan melihat apa saja kekurangannya dan bagaimana Java 9 membantu mengatasi anomali tersebut: -





  • Platform Java Standard Edition dan JDK tidak dapat dinavigasi untuk perangkat komputasi kecil
  • Tidak ada keamanan dan pemeliharaan JDK secara keseluruhan
  • Tidak ada peningkatan kinerja aplikasi secara keseluruhan
  • Sulit bagi pengembang Java untuk membangun dan mempertahankan pustaka kode dan aplikasi yang lebih besar, baik untuk Platform Java SE dan EE

Dalam posting blog ini saya akan mengkategorikan fitur Java 9 dengan cara berikut:



  1. Proses pembaruan API di Java 9
  2. Klien HTTP / 2 di Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) di Java 9
  4. Fitur file JAR multi-rilis di Java 9
  5. Lebih banyak fitur Pembaruan Konkurensi di Java 9
  6. Project Jigsaw di Java 9

Apa yang baru di Java 9?

Saya telah memilih beberapa fitur Java 9 baru, yang menurut saya perlu diketahui. Mari kita lihat apa saja fitur-fitur ini: -

Proses pembaruan API di Java 9

Process API Java cukup primitif,dengan dukungan hanya untuk meluncurkan proses baru, mengarahkan kembali keluaran proses, dan aliran kesalahan. Dalam rilis ini, pembaruan pada Process API mengaktifkan yang berikut ini:

  • Mendapatkan PID dari proses JVM saat ini dan semua proses lain yang dihasilkan oleh JVM
  • Hitung proses yang berjalan di sistem untuk mendapatkan informasi seperti PID, nama, dan penggunaan sumber daya
  • Mengelola pohon proses
  • Mengelola subproses

Mari kita lihat kode contoh, yang mencetak PID saat ini serta informasi proses saat ini:



java cara keluar dari program
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 ('Info:' + currentProcessInfo)}

Klien HTTP / 2 di Java 9

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

Sebelumnya Pengembang sering kali menggunakan pustaka pihak ketiga, seperti Apache HTTP, Jersey, dan sebagainya. Selain itu, API HTTP Java mendahului spesifikasi HTTP / 1.1 dan sinkron serta sulit dipelihara. Batasan ini menuntut perlunya menambahkan API baru. API klien HTTP baru menyediakan berikut ini:

  • API sederhana dan ringkas untuk menangani sebagian besar permintaan HTTP
  • Dukungan untuk spesifikasi HTTP / 2
  • Performa lebih baik
  • Keamanan yang lebih baik
  • Beberapa penyempurnaan lagi

Mari kita lihat kode contoh untuk membuat permintaan HTTP GET menggunakan API baru. Di bawah ini adalah definisi modul yang ditentukan dalam file module-info.java:

module newfeatures {membutuhkan jdk.incubator.httpclient}

Kode berikut menggunakan HTTP Client API, yang merupakan bagian dari modul jdk.incubator.httpclient:

import jdk.incubator.http. * import java.net.URI public class Http2Feature {public static void main (String [] args) throws Exception {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 response = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('Kode status:' + response.statusCode ())
System.out.println ('Badan Respons:' + response.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 dikirimkan dengan sebuah alat, yang sering disebut REPL ( Baca-Evaluasi-Cetak-Loop ). Alat REPL ini sangat berguna untuk mencoba fitur bahasa. Misalnya, di Scala, kita dapat menulis program Hello World sederhana sebagai scala> println ('Halo Dunia')

Beberapa keunggulan file JShell REPL adalah sebagai berikut:

  • Pengembang berpengalaman dapat membuat prototipe dan bereksperimen dengan cepat sebelum mengadopsinya dalam basis kode utama mereka
  • Pengembang Java sekarang dapat membanggakan REPL

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

Contoh JShell Hello World - Java 9 - Edureka

Fitur file JAR multi-rilis di Java 9

Saat ini, file JAR dapat berisi kelas yang hanya dapat dijalankan pada versi Java tempat mereka dikompilasi. Untuk memanfaatkan fitur baru dari platform Java pada versi yang lebih baru, pengembang perpustakaan harus merilis versi terbaru dari perpustakaan mereka. Sebentar lagi, akan ada beberapa versi pustaka yang dikelola oleh pengembang, yang bisa menjadi mimpi buruk. Untuk mengatasi batasan ini, fitur Java 9 dari file JAR multi-rilis ini memungkinkan pengembang membuat file JAR dengan versi file kelas yang berbeda untuk versi Java yang berbeda.Contoh berikut membuatnya lebih jelas.

Berikut adalah ilustrasi dari file JAR saat ini:

akar jar - Kelas - B. kelas - Kelas C.

Berikut adalah tampilan file JAR multi-rilis:

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

Dalam ilustrasi sebelumnya, file JAR mendukung file kelas untuk dua versi Java – 9 dan 10.

Jadi, ketika JAR sebelumnya dijalankan pada Java 9, kelas A. di bawah folder versi - 9 diambil untuk dieksekusi.

cara mengkloning objek di java

Pada platform yang tidak mendukung file JAR multi-rilis, class di bawah direktori versi tidak pernah digunakan. Jadi, jika Anda menjalankan file JAR multi-rilis di Java 8, itu sama baiknya dengan menjalankan file JAR sederhana.

Lebih banyak fitur Pembaruan Konkurensi di Java 9

Dalam pembaruan ini, kelas baru, java.util.concurrent.Flow telah diperkenalkan, yang memiliki antarmuka bersarang yang mendukung implementasi kerangka kerja publikasi-langganan. Kerangka kerja publikasi-langganan memungkinkan pengembang untuk membuat komponen yang dapat secara asinkron menggunakan aliran data langsung dengan menyiapkan penerbit yang menghasilkan data dan pelanggan yang menggunakan data melalui langganan, yang mengelolanya. Empat antarmuka baru tersebut adalah sebagai berikut:

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

Project Jigsaw di Java 9

Tujuan utama dari proyek ini adalah untuk memperkenalkan konsep modularitas dukung untuk membuat modul di Java 9 dan kemudian menerapkan yang sama ke JDK itu adalah, memodularkan JDK .

Beberapa dari manfaat dari modularitas adalah sebagai berikut:

  • Enkapsulasi yang kuat : Modul hanya dapat mengakses bagian dari modul yang telah disediakan untuk digunakan. Jadi, kelas publik dalam sebuah paket tidak bersifat publik kecuali paket tersebut secara eksplisit diekspor dalam file info modul.
  • Hapus Dependensi : Modul harus mendeklarasikan modul lain mana yang akan mereka gunakan melalui klausa Requirement.
  • Menggabungkan modul untuk membuat runtime yang lebih kecil, yang dapat dengan mudah diskalakan ke perangkat komputasi yang lebih kecil.
  • Andal : Aplikasi lebih andal dengan menghilangkan run-time kesalahan . Contoh:- Anda pasti pernah mengalami aplikasi Anda gagal selama run-time karena kelas yang hilang, yang mengakibatkan ClassNotFoundException .

Ada bermacam-macam JEP , yang merupakan bagian dari proyek ini, sebagai berikut:

  • JEP 200 - JDK modular : Ini menerapkan sistem modul platform Java untuk memodularisasi JDK menjadi sekumpulan modul yang dapat digabungkan pada waktu kompilasi, waktu pembuatan, atau waktu proses.
  • JEP 201 - kode sumber modular : Ini memodularisasi kode sumber JDK ke dalam modul dan menyempurnakan alat build untuk mengompilasi modul.
  • JEP 220 - gambar runtime modular : Ini merestrukturisasi gambar runtime JDK dan JRE untuk mengakomodasi modul dan untuk meningkatkan kinerja, keamanan, dan pemeliharaan.
  • JEP 260 - merangkum sebagian besar API internal : Ini memungkinkan banyak API internal untuk diakses secara langsung atau melalui refleksi. Mengakses API internal yang pasti akan berubah cukup berisiko. Untuk mencegah penggunaannya, mereka dienkapsulasi menjadi modul dan hanya API internal yang banyak digunakan yang akan tersedia sampai API yang tepat ada di tempatnya.
  • JEP 261 - sistem modul : Ini mengimplementasikan spesifikasi Java sistem modul dengan mengubah bahasa pemrograman Java, JVM, dan API standar lainnya
  • JEP 282: jlink, penaut Java : Ini memungkinkan modul pengemasan dan dependensinya menjadi waktu pengoperasian yang lebih kecil.

Jadi, ini semua tentang Java 9 dan fitur-fitur baru Java 9.

Sekarang Anda telah memahami fitur-fitur Java 9, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia.

G atau pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'Java 9' ini dan kami akan menghubungi Anda kembali secepatnya.