Java 9 ada di sini: Semua yang perlu Anda ketahui

Java 9 — secara resmi, Java Platform Standard Edition versi 9 — akhirnya hadir, dan Java Development Kit (JDK) -nya tersedia untuk diunduh oleh pengembang.

Ini memiliki beberapa fitur baru yang penting jika kontroversial, tetapi juga yang terakhir dari baris untuk pengiriman Java gaya lama.

Tempat mengunduh Java 9 JDK

Oracle telah memposting Java SE 9 JDK dan dokumentasi untuk diunduh oleh pengembang.

Fitur-fitur baru utama di Java 9

Memulai debutnya hampir tiga tahun setelah Java SE 8, Java SE 9 memiliki beberapa perubahan arsitektural utama, serta sejumlah perbaikan.

Modularitas Java 9 adalah pengubah permainan

Kemampuan modularitas baru yang kontroversial, berdasarkan Project Jigsaw, pasti akan menarik minat toko-toko Java mutakhir yang ingin melihat apa yang ditawarkan JDK 9 sekarang, bahkan jika toko yang lebih konservatif memutuskan untuk menunggu modularitas matang.

Modularitas — dalam bentuk Sistem Modul Platform Java — membagi JDK menjadi sekumpulan modul untuk digabungkan saat dijalankan, dikompilasi, atau dibangun. Modularitas disebut sebagai perubahan "transitif", yang memungkinkan pemahaman tentang dependensi di seluruh modul.

Modularitas Java 9 diharapkan memungkinkan pengembang lebih mudah merakit dan memelihara aplikasi yang canggih. Selain itu, itu harus membuat Java lebih mampu menurunkan skala ke perangkat yang lebih kecil sementara keamanan dan kinerja ditingkatkan.

Aspek modularitas Java 9 mencakup pengemasan aplikasi, memodularisasi JDK itu sendiri, dan mengatur ulang kode sumber menjadi modul. Sistem build ditingkatkan untuk mengompilasi modul dan menerapkan batasan modul pada waktu build. Gambar JDK dan Java Runtime Environment (JRE) disusun ulang untuk menangani modul. Selain itu, kontrol JavaFX UI dan CSS API sekarang dapat diakses untuk modularitas.

Sejumlah konfigurasi didukung; sebagai hasilnya, skalabilitas, keamanan, dan kinerja aplikasi harus ditingkatkan. Penskalaan Java yang lebih mudah ke perangkat kecil adalah pendorong utama upaya modular.

Dengan modularitas, pengembang akan lebih mampu membangun dan memelihara pustaka dan aplikasi besar untuk Java SE (Edisi Standar) dan Java EE (Edisi Perusahaan). Tetapi selama pengembangan Java 9 Oracle, IBM, Red Hat, dan lainnya memiliki ketidaksepakatan besar tentang bagaimana membuat perubahan radikal dalam platform. Sistem modul itu sendiri ditolak pada Mei, hanya untuk disetujui pada pemungutan suara kedua pada bulan Juni, setelah kemajuan dibuat.

Bahkan dengan kesepakatan di antara vendor utama Java, masih ada kontroversi mengenai apakah modularitas akan sangat membantu pengembang Java, dengan beberapa ahli mengatakan ya dan yang lain mengatakan tidak. Terlepas dari itu, Java 9 sekarang termodulasi.

Untuk mempermudah migrasi ke modularized Java 9, Java 9 mengizinkan akses reflektif ilegal untuk kode di jalur kelas, yang digunakan oleh JRE untuk mencari kelas dan file sumber daya. Kemampuan ini tidak akan diizinkan setelah Java 9.

Peningkatan kompiler untuk kode Java 9

Upgrade Java 9 menampilkan beberapa kemampuan baru untuk mengkompilasi kode, di antaranya adalah kompilasi di depan waktu (AoT). Masih dalam tahap percobaan, kemampuan ini memungkinkan kompilasi kelas Java ke kode asli sebelum diluncurkan di mesin virtual. Fitur ini dimaksudkan untuk meningkatkan waktu pengaktifan aplikasi kecil dan besar, dengan dampak terbatas pada kinerja puncak.

Kompiler Just-in-time (JIT) sangat cepat, tetapi program Java telah menjadi begitu besar sehingga membutuhkan waktu lama untuk JIT untuk melakukan pemanasan sepenuhnya, meninggalkan beberapa metode Java tidak terkompilasi dan melemahkan kinerja. Kompilasi sebelumnya dimaksudkan untuk mengatasi masalah ini.

Namun Dmitry Leskov, direktur pemasaran di vendor teknologi Java Excelsior, khawatir bahwa teknologi kompilasi yang akan datang belum cukup matang dan berharap Oracle menunggu hingga Java 10 untuk versi yang lebih solid.

Java 9 juga menawarkan fase kedua dari penyebaran kompilasi cerdas Oracle. Fitur ini melibatkan peningkatan  s javac stabilitas dan portabilitas alat sehingga dapat digunakan di JVM (Java Virtual Machine) secara default. Alat tersebut juga akan digeneralisasikan sehingga dapat digunakan untuk proyek besar di luar JDK. JDK 9 juga telah memperbarui  javac kompiler sehingga dapat mengkompilasi program Java 9 untuk dijalankan pada beberapa versi Java yang lebih lama.

Fitur kompilasi baru — tetapi eksperimental — lainnya adalah JVM Compiler Interface (JVMCI) tingkat Java. Antarmuka ini memungkinkan kompilator yang ditulis dalam Java digunakan sebagai kompilator dinamis oleh JVM. API JVMCI menyediakan mekanisme untuk mengakses struktur VM, menginstal kode yang dikompilasi, dan menghubungkannya ke sistem kompilasi JVM.

Menulis kompiler JVM di Java harus memungkinkan kompiler berkualitas tinggi yang lebih mudah dipelihara dan ditingkatkan daripada kompiler yang sudah ada yang ditulis dalam C atau C ++. Akibatnya, compiler yang ditulis dalam Java sendiri akan lebih mudah dipelihara dan ditingkatkan. Upaya lain yang ada untuk mengaktifkan penyusun di Jawa termasuk Proyek Graal dan Proyek Metropolis.

Kemampuan kontrol compiler baru dimaksudkan untuk menyediakan kontrol compiler JVM yang sangat detail dan bergantung pada metode konteks, yang memungkinkan developer mengubah opsi kontrol compiler dalam waktu proses tanpa penurunan performa. Alat ini juga memungkinkan solusi untuk bug compiler JVM.

REPL akhirnya hadir di Java 9

Java 9 memiliki fitur read-eval-print loop (REPL) —sasaran jangka panjang lain untuk Java yang menjadi nyata dalam versi ini, setelah bertahun-tahun dikembangkan di bawah Project Kulia.

Disebut jShell, REPL Java 9 secara interaktif mengevaluasi pernyataan dan ekspresi deklaratif. Pengembang bisa mendapatkan umpan balik tentang program sebelum kompilasi hanya dengan memasukkan beberapa baris kode.

Kemampuan alat baris perintah mencakup penyelesaian tab dan penambahan otomatis titik koma terminal yang diperlukan. API jShell memungkinkan fungsionalitas jShell di IDE dan alat lainnya, meskipun alat itu sendiri bukan IDE.

Kurangnya REPL disebut-sebut sebagai alasan sekolah-sekolah pindah dari Jawa. (Bahasa seperti Python dan Scala telah lama memiliki REPL.) Namun pendiri bahasa Scala, Martin Odersky mempertanyakan kegunaan REPL di Java, mengatakan Java berorientasi pada pernyataan sedangkan REPL berorientasi pada ekspresi.

Peningkatan pada Streams API di Java 9

Stream di Java memungkinkan developer mengekspresikan penghitungan sehingga paralelisme data dapat dimanfaatkan secara efisien. Kemampuan Stream di Java 8 adalah untuk memproses data secara deklaratif sambil memanfaatkan arsitektur multicore.

Di Java 9, Streams API menambahkan metode untuk mengambil dan melepaskan item secara bersyarat dari Stream, melakukan iterasi pada elemen Stream, dan membuat aliran dari nilai nullable sambil memperluas kumpulan Java SE API yang dapat berfungsi sebagai sumber Stream.

Cache kode dapat dibagi di Java 9

JDK 9 memungkinkan cache kode dibagi menjadi beberapa segmen untuk meningkatkan kinerja dan memungkinkan ekstensi seperti penguncian terperinci. Hasil harus ditingkatkan waktu sapuan karena iterator khusus melewatkan kode non-metode; memisahkan kode non-metode, profil, dan non-profil; dan meningkatkan waktu eksekusi untuk beberapa tolok ukur. 

Dukungan JavaScript yang lebih baik di Java 9 melalui Project Nashorn

Project Nashorn, yang menyediakan runtime JavaScript ringan untuk Java, sedang ditingkatkan di JDK 9. Project Nashorn adalah upaya untuk mengimplementasikan runtime JavaScript berkinerja tinggi namun ringan di Java, menindaklanjuti proyek Rhino yang dimulai di Netscape. Project Nashorn ditugaskan untuk mengaktifkan penyematan JavaScript di aplikasi Java. Ini menyediakan Java dengan mesin JavaScript di JDK 8.

JDK 9 menyertakan API parser untuk pohon sintaks ECMAScript Nashorn. API memungkinkan analisis kode ECMAScript oleh IDE dan kerangka kerja sisi server tanpa bergantung pada kelas implementasi internal Project Nashorn.

API klien HTTP / 2 hadir di Java 9

API klien HTTP / 2 beta telah hadir di JDK 9, menerapkan di Java peningkatan ke protokol HTTP inti web. WebSocket juga didukung oleh API.

API HTTP / 2 dapat menggantikan API HttpURLConnection, yang memiliki masalah, termasuk dirancang dengan protokol yang sekarang sudah tidak berfungsi, mendahului HTTP / 1, terlalu abstrak, dan sulit digunakan.

Peningkatan dukungan HTML5 dan Unicode di Java 9

Di JDK 9, alat dokumentasi Javadoc ditingkatkan untuk menghasilkan markup HTML5. Standar pengkodean Unicode 8.0 — yang menambahkan 8.000 karakter, 10 blok, dan enam skrip — juga didukung.

DTLS security API ditambahkan ke Java 9

Untuk keamanan, Java 9 menambahkan API untuk DTLS (Datagram Transport Layer Security). Protokol telah dirancang untuk mencegah penyadapan, gangguan, dan pemalsuan pesan dalam komunikasi klien / server. Implementasi disediakan untuk mode klien dan server.

Apa yang tidak digunakan lagi dan dihapus oleh Java 9

Java 9 menghentikan atau menghapus beberapa fitur yang tidak lagi populer. Yang paling utama di antaranya adalah API Applet, yang sudah tidak digunakan lagi. Sekarang sudah ketinggalan zaman karena pembuat browser yang sadar keamanan telah menghapus dukungan untuk plug-in browser Java. Munculnya HTML5 juga membantu meruntuhkannya. Pengembang sekarang dipandu ke alternatif seperti Java Web Start, untuk meluncurkan aplikasi dari browser, atau aplikasi yang dapat diinstal. 

Alat appletviewer juga sudah tidak digunakan lagi.

Java 9 juga menghentikan pengumpul sampah Concurrent Mark Sweep (CMS), dengan dukungan untuk dihentikan pada rilis mendatang. Tujuannya adalah untuk mempercepat pengembangan pengumpul sampah lainnya di mesin virtual HotSpot. Pengumpul sampah G1 dengan jeda rendah dimaksudkan sebagai pengganti jangka panjang untuk CMS.

Sementara itu, kombinasi pengumpulan sampah yang sebelumnya tidak digunakan lagi di JDK 8 akan dihapus di JDK 9. Ini termasuk kombinasi yang jarang digunakan seperti Incremental CMS, ParNew + SerialOld, dan DefNew + CMS, yang menambahkan kompleksitas ekstra ke basis kode pengumpul sampah.

Java 9 juga menghilangkan peringatan Java pada pernyataan import, untuk membantu membuat basis kode besar bersih dari peringatan lint. Dengan basis kode ini, fungsionalitas yang tidak digunakan lagi sering kali harus didukung untuk beberapa waktu, tetapi mengimpor konstruksi yang tidak digunakan lagi tidak menjamin pesan peringatan jika penggunaan konstruksi disengaja dan disembunyikan.

Juga dihapus di Java 9 adalah kemampuan untuk memilih JRE pada waktu peluncuran melalui fitur Multiple JRE (mJRE). Kemampuan tersebut jarang digunakan, memperumit implementasi Java launcher, dan tidak pernah didokumentasikan sepenuhnya saat diluncurkan di JDK 5.

Oracle telah menghapus agen JVM TI (Tool Interface) hprof (Heap Profiling), yang telah digantikan di JVM. Alat jhat juga telah dihapus, karena telah menjadi usang oleh penganalisis dan visualisator heap yang unggul.

Java 9 adalah akhir barisnya saat baris baru Java 9 dimulai

Anda bisa mengatakan bahwa Java 9 akan keluar dengan sangat baik, dengan semua kemampuan baru. Oracle baru-baru ini mengungkapkan bahwa Java 9 adalah yang terakhir dari jenisnya, dalam hal penunjukannya dan waktu yang telah berlalu antara rilis utama.

Mulai saat ini, Java direncanakan memiliki irama rilis enam bulan, dengan versi utama berikutnya, disebut Java 18.3, jatuh tempo Maret 2018, diikuti oleh Java 18.9 enam bulan kemudian.

Irama rilis baru Java juga berarti JDK 9 tidak akan ditetapkan sebagai rilis dukungan jangka panjang. Sebaliknya, rilis jangka panjang berikutnya adalah Java 18.9.

Irama rilis Java yang lebih cepat berarti pengembang tidak perlu menunggu lama untuk rilis utama. Ini juga berarti bahwa pengembang akan melewatkan Java 9 dan fitur modularitas "yang belum matang" dan menunggu enam bulan untuk versi baru, yang kemungkinan besar akan meniadakan semua Kinks, kata Simon Maple, direktur advokasi Java di vendor alat Java ZeroTurnaround.