Java 9 – Semua Yang Perlu Anda Ketahui Tentang Fitur Java Baru

Diterbitkan: 2018-04-24

Java, bahasa pemrograman yang sangat mudah diakses telah menjadi no-brainer bagi pengembang di seluruh dunia. Sejak dimulai pada tahun 1995, bahasa ini telah digunakan secara luas di berbagai industri.

Hari ini, Anda akan menemukan Java di ponsel Anda. Mendukung OS Android dan berbagai aplikasi yang ditawarkan Android. Ini digunakan untuk mengembangkan game seperti Minecraft yang memiliki basis pemain besar. Ini juga digunakan dalam aplikasi bisnis seperti membaca informasi kartu kredit di kasir toko dan memasukkan informasi antara sistem dan bank.

Setelah jeda 3 tahun, Java meluncurkan edisi barunya – Java SE 9. Dengan beberapa perubahan arsitektur utama dan fitur tambahan, Java SE 9 menawarkan solusi hebat yang telah lama diidamkan oleh para pengembang.

Java 7 menambahkan try-with-resource pada tahun 2011, menawarkan fungsionalitas manajemen sumber daya yang lebih baik.
Java 8 menambahkan ekspresi lambda, langkah yang baik tetapi sedikit cacat di bawah paradigma OOP.

Sekarang Solusi Java memungkinkan pemrogram untuk memiliki metode pribadi. Metode statis pribadi! YA, Anda membacanya dengan benar!

Java SE 8 menawarkan banyak perubahan struktural yang diterima dengan perasaan campur aduk oleh pengembang. Secara umum, ini adalah kekurangan Java SE 8 yang coba diatasi oleh Java SE 9:

  1. JDK tidak dapat dinavigasi untuk perangkat komputasi kecil
  2. Tidak ada peningkatan keseluruhan dalam kinerja aplikasi
  3. Tidak ada keamanan dan pemeliharaan keseluruhan JDK
  4. Pengembang Java menghadapi kesulitan untuk membangun dan menegakkan pustaka kode dan aplikasi yang lebih besar

Jadi, mari kita lihat perubahan dan peningkatan utama yang ditawarkan Java 9 dibandingkan pendahulunya

Memproses pembaruan API di Java 9

Secara tradisional, API Java bersifat primitif. Dukungan itu untuk meluncurkan proses baru, mengarahkan ulang output, dan aliran kesalahan. Di Java 9, pembaruan baru untuk API Proses mengaktifkan:

  1. Mendapatkan PID dari proses JVM saat ini dan lainnya
  2. Mengelola subproses
  3. Mengelola subproses
  4. Dapatkan informasi seperti PID, nama, dan penggunaan sumber daya dari proses yang berjalan di sistem.

Ini adalah kode contoh, yang mencetak PID saat ini serta informasi proses saat ini:

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 ini diharapkan akan direformasi dalam rilis berikutnya atau bahkan dapat dihapus sepenuhnya.
Sebelumnya developer akan mengandalkan library pihak ketiga, misalnya Apache HTTP, Jersey, dan lain sebagainya. HTTP API Java mendahului spesifikasi HTTP/1.1 dan sinkron serta sulit dipelihara. Keterbatasan ini menuntut perlunya menambahkan API baru. API klien HTTP baru menyediakan yang berikut ini:

  1. API sederhana dan ringkas untuk menangani sebagian besar permintaan HTTP
  2. Dukungan untuk spesifikasi HTTP/2
  3. Performa yang lebih baik
  4. Keamanan yang lebih baik
  5. Beberapa peningkatan lagi

Berikut adalah cuplikan kode untuk membuat permintaan HTTP GET menggunakan API baru. Ini adalah modul seperti yang didefinisikan dalam file module-info.java:

module newfeatures{
requires jdk.incubator.httpclient;
}

Kode berikut menggunakan HTTP Client API. Ini adalah 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(new 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("Status code:" + response.statusCode());
System.out.println("Response Body:" + response.body());
}
}
}

Lebih banyak fitur Pembaruan Konkurensi di Java 9

Dengan Java 9, kelas baru yang disebut – java.util.concurrent.Flow telah diperkenalkan, yang mendukung implementasi kerangka publish-subscribe. Kerangka kerja ini memungkinkan pengembang untuk membangun komponen. Komponen ini dapat secara asinkron menggunakan aliran data langsung dengan menyiapkan penerbit yang menghasilkan data dan pelanggan yang menggunakan data. Ini adalah antarmuka baru:

  • 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).

Java Shell Scripting (Baca-Eval-Cetak-Loop) di Java 9

Tujuan dari Project Kulla adalah untuk menyelidiki penambahan alat REPL (Read-Eval-Print-Loop) untuk Java 9. Rilis Java ini menampilkan alat baris perintah khusus yang disebut JShell. Tujuannya di sini adalah untuk mempopulerkan dan memaksimalkan penggunaan REPL. Jadi, apa artinya? Sekarang, Anda tidak perlu membungkus beberapa baris kode dalam metode terpisah untuk menjalankannya. Efisien? Saya katakan YA.
Misalnya, di Scala, program Hello World sederhana ditulis sebagai scala>println(“Hello World”);
Mari kita jalankan perintah JShell, seperti yang ditunjukkan pada gambar berikut:

bahasa pemrograman, java 9

Proyek Jigsaw di Jawa 9

Kartu truf dari fitur-fitur baru di Java 9 adalah sistem modul baru. Membuat sistem yang kompleks sering kali melibatkan kode tingkat tinggi dan kompleks yang menghasilkan ambiguitas. Dengan kompleksitas kode, dua masalah mendasar dihadapi: Enkapsulasi kode sulit, dan tidak ada gagasan ketergantungan eksplisit antara file JAR yang berbeda dari suatu sistem. Setiap kelas publik dapat diakses oleh kelas publik lainnya di classpath. Ini mengarah pada penggunaan kelas yang tidak perlu yang tidak dimaksudkan sebagai API publik. Selanjutnya, classpath itu sendiri bermasalah: Bagaimana Anda tahu apakah semua JAR yang diperlukan ada di sana, dan bagaimana dengan entri duplikat? Sistem modul menyelesaikan kedua masalah tersebut.
Di sinilah sifat kuat Java 9 terlihat. File JAR modular berisi deskriptor modul tambahan. Dalam deskriptor modul ini, pernyataan `requires` digunakan untuk mengekspresikan dependensi pada modul lain. Selain itu, pernyataan `ekspor` mengontrol paket mana yang dapat diakses oleh modul yang berbeda. Secara default, semua paket yang tidak diekspor dienkapsulasi dalam modul.

Ada berbagai JEP yang merupakan bagian dari proyek ini, sebagai berikut:

JEP 200 – JDK modular: Ini menerapkan sistem modul platform Java untuk memodulasi JDK yang dapat digabungkan pada waktu kompilasi, waktu pembuatan, atau waktu proses.
JEP 201 – kode sumber modular: digunakan untuk membuat modul dan memungkinkan alat pembangun untuk mengkompilasi modul yang dibuat
JEP 220 – gambar runtime modular: JEP ini meningkatkan kinerja, keamanan, dan pemeliharaan dengan merestrukturisasi gambar runtime JDK dan JRE untuk mengakomodasi modul
JEP 282 – Jlink, yang dikenal sebagai Java linker: digunakan sebagai modul pengemasan & dependensinya menjadi lebih sedikit waktu proses.

File JAR multi-rilis

Untuk memanfaatkan fitur baru platform Java pada versi yang lebih baru, pengembang perpustakaan harus merilis versi perpustakaan mereka yang lebih baru. Segera, akan ada beberapa versi perpustakaan yang dikelola oleh pengembang, yang dapat menjadi bencana besar. Untuk mengatasi keterbatasan ini, Java 9 memiliki fitur multi-rilis file JAR yang memungkinkan pengembang membangun file JAR dengan versi file kelas yang berbeda untuk versi Java yang berbeda. Lihatlah contoh ini.

Ilustrasi file JAR saat ini sebagai berikut:

akar jar
- Kelas
– Kelas B
– Kelas C

Berikut adalah tampilan file JAR multi-rilis:

akar jar

- Kelas
– Kelas B
– Kelas C
– META-INF
– versi
– – 9
- - - - Kelas
– – 10
– – – – B.kelas

Dalam ilustrasi sebelumnya, file JAR mendukung file kelas untuk dua Java versi 9 dan 10. Jadi, ketika JAR dijalankan pada Java versi 9, folder A.class di bawah versi – 9 diambil untuk dieksekusi.

Versi Java sebelumnya yang tidak mendukung file JAR multi-rilis, kelas di bawah direktori versi tidak pernah digunakan. Jadi, jika Anda menjalankan file JAR multi-rilis di Java 8, sama baiknya dengan menjalankan file JAR sederhana.

Menurut pendapat saya, banyak hal mulai berubah dengan Java. Dan ini adalah tren yang berkembang. Apakah ini berarti popularitas Java dan penggunaannya akan terpengaruh? Tidak semuanya. Java telah dan masih merupakan bahasa pemrograman yang sangat kuat dan tangguh di industri teknologi saat ini. Mulailah belajar Java dan lihat perubahannya dalam karier Anda. Semoga berhasil!

Catatan penulis:
Artikel teknologi itu disumbangkan oleh Sumit yang bekerja pada teknologi yang sedang tren seperti DevOps, Big Data, dan Python. Dan di tim Digital Marketing di Edureka.