JDK 14: Fitur baru di Java 14

Java Development Kit (JDK) 14 telah mencapai GA, hadir dalam rilis ketersediaan umum untuk penerapan produksi. Peningkatan ke Java standar mencakup kemampuan baru seperti streaming acara JDK Flight Recorder, pencocokan pola, dan ekspresi sakelar. 

JDK 14 adalah rilis fitur Java, bukan rilis dukungan jangka panjang (LTS), mengikuti irama rilis enam bulan yang ditetapkan untuk Java. JDK 14 akan menerima pembaruan keamanan pada bulan April dan Juli sebelum digantikan oleh JDK 15, juga rilis non-LTS, yang akan jatuh tempo pada bulan September. Rilis LTS saat ini adalah JDK 11. 

Fitur dan peningkatan baru di JDK 14 meliputi:

  • JFR Event Streaming menyediakan API untuk konsumsi data JFR secara terus-menerus baik dari aplikasi dalam proses maupun di luar proses. JFR adalah alat untuk mengumpulkan data profil dan diagnostik tentang aplikasi Java dan JVM saat dijalankan. Proposal streaming acara merekam rangkaian acara yang sama seperti kasus non-streaming, dengan overhead kurang dari satu persen jika memungkinkan. Streaming acara harus berdampingan dengan rekaman non-streaming, baik berbasis disk maupun berbasis memori. Yang memotivasi proposal ini adalah situasi di mana HotSpot VM memancarkan lebih dari 500 titik data menggunakan JFR, kebanyakan dari mereka hanya tersedia dengan mengurai file log. Saat ini, pengguna harus memulai rekaman, menghentikannya, membuang konten ke disk, lalu mengurai file rekaman. Ini berfungsi dengan baik untuk pembuatan profil aplikasi, tetapi tidak untuk tujuan pemantauan.Contoh penggunaan pemantauan adalah dasbor yang menampilkan pembaruan dinamis untuk data. Ada overhead dengan pembuatan rekaman, seperti menyalin data dari penyimpanan disk ke file rekaman terpisah. Jika ada cara untuk membaca data yang direkam dari repositori disk tanpa membuat file perekaman baru, banyak overhead yang dapat dihindari.
  • Perbaikan yang direncanakan  NullPointerExceptionsberkaitan dengan meningkatkan kegunaan pengecualian yang dihasilkan oleh JVM dengan menjelaskan secara tepat variabel mana yang nol. Penulis proposal ingin memberikan informasi yang berguna kepada pengembang dan staf pendukung tentang penghentian program yang terlalu dini dan meningkatkan pemahaman program dengan lebih jelas mengaitkan pengecualian dinamis dengan kode program statis. Salah satu tujuannya adalah untuk mengurangi kebingungan dan kekhawatiran pengembang tentang NullPointerExceptions.
  • Buffer byte yang dipetakan non-volatil akan menambahkan mode pemetaan file khusus JDK baru yang memungkinkan API FileChannel digunakan untuk membuat MappedByteBufferinstance yang merujuk ke memori non-volatile (NVM). NVM memungkinkan pemrogram untuk membangun dan memperbarui status program di seluruh program yang berjalan tanpa menimbulkan biaya penyalinan atau terjemahan yang signifikan yang biasanya diperlukan oleh operasi input dan output. Ini sangat penting untuk program transaksional. Dengan demikian, tujuan utama Proposal Peningkatan JDK ini adalah untuk memastikan bahwa klien dapat mengakses dan memperbarui NVM dari program Java secara koheren dan efisien. Tujuan kedua adalah untuk mengimplementasikan perilaku komit ini menggunakan API internal JDK terbatas yang ditentukan di kelas Unsafe, sehingga dapat digunakan kembali oleh kelas selainMappedByteBufferyang mungkin perlu berkomitmen pada NVM. Sasaran lainnya adalah memungkinkan buffer yang dipetakan di atas NVM dilacak oleh API yang ada untuk pemantauan dan pengelolaan. Platform OS / CPU target termasuk Linux / x64 dan Linux / AArch64.
  • Tukar ekspresi menyederhanakan pengkodean dengan memperluas  switchsehingga dapat digunakan sebagai pernyataan atau ekspresi. Ekspresi switch diharapkan menjadi fitur permanen di JDK 14, setelah dipratinjau di JDK 12 dan JDK 13. Ekspresi switch juga mempersiapkan penggunaan pencocokan pola di switch. Pencocokan pola memungkinkan pengembang mengekstrak komponen secara bersyarat dari objek secara lebih ringkas dan aman. 
  • Alokasi memori yang sadar NUMA untuk pengumpul sampah G1, yang dimaksudkan untuk meningkatkan kinerja G1 pada mesin besar. 
  • Penghapusan pengumpul sampah Concurrent Mark Sweep (CMS), yang sebelumnya tidak digunakan lagi dan dijadwalkan untuk dihapus. Penerus CMS telah muncul termasuk ZGC dan Shenandoah. 
  • Porting ZGC ke MacOS. Sejauh ini hanya didukung di Linux.
  • Penghapusan alat pack200 dan unpack200 dan API Pack200 dalam java.util.jarpaket. Ini semua sudah tidak digunakan lagi di Java SE 11 dengan maksud untuk menghapusnya di masa mendatang. Pack200 adalah skema kompresi untuk file JAR.
  • Rekaman, yang akan menyediakan sintaksis ringkas untuk mendeklarasikan kelas yang merupakan pemegang transparan untuk data yang dangkal tidak dapat diubah. Catatan memudahkan pembuatan kelas yang pada dasarnya adalah pembawa data tanpa harus menulis banyak boilerplate. Proposal tersebut menyatakan bahwa harus mudah dan ringkas untuk menyatakan kumpulan data nominal yang tidak dapat diubah, berperilaku baik, dan dangkal.
  • Alat pengemasan, dalam fase pengembangan inkubator, untuk pengemasan aplikasi Java yang berdiri sendiri. Alat tersebut akan didasarkan pada JavaFX javapackager. Alat semacam itu telah disertakan di Java tetapi dipotong dari JDK 11 sebagai bagian dari penghapusan JavaFX.
  • Tingkatkan bahasa dengan pencocokan pola untuk instanceof operator. Ini akan menjadi fitur pratinjau di JDK 14. Pencocokan pola memungkinkan logika umum dalam program, terutama ekstraksi bersyarat komponen dari objek, diekspresikan secara lebih ringkas dan aman. Kode dapat dibuat singkat dan aman jenis.
  • Pratinjau kedua dari blok teks, literal string multi-baris yang menghindari kebutuhan sebagian besar urutan escape dan secara otomatis memformat string dengan cara yang dapat diprediksi. Blok teks akan memberi pengembang kendali atas format yang diinginkan, menyederhanakan penulisan program Java, dan meningkatkan keterbacaan string. Blok teks telah ditampilkan di JDK 13; iterasi JDK 14 akan menambahkan urutan escape untuk mengelola spasi kosong eksplisit dan kontrol baris baru.
  • Menghentikan penggunaan algoritma pengumpulan sampah Parallel Scavenge dan Serial Old. Pemelihara Java percaya bahwa kombinasi ini digunakan sangat sedikit tetapi membutuhkan banyak perawatan.
  • Porting ZGC (Z Garbage Collector) ke Windows. Fitur ini sekali lagi dipindahkan ke daftar target resmi, setelah dikembalikan ke daftar penargetan yang diusulkan.
  • API akses memori asing, dengan pengenalan API untuk program Java untuk mengakses memori asing dengan aman dan efisien di luar heap Java. API ini harus berfungsi sebagai alternatif jalan utama di mana program Java mengakses memori, termasuk nio.ByteBufferdan sun.misc.Unsafe. API baru harus dapat beroperasi pada berbagai jenis memori termasuk native, memori persisten, dan heap terkelola. Seharusnya tidak mungkin API merusak keamanan JVM. Deallokasi memori harus eksplisit dalam kode sumber. API diharapkan dapat membantu dalam pengembangan dukungan interoperasi asli yang merupakan tujuan Proyek Panama.
  • Penghentian port Solaris / Sparc, Solaris / x64, dan Linux / Sparc, dengan maksud untuk menghapusnya di rilis mendatang. Menurunkan dukungan untuk port ini akan memungkinkan kontributor OpenJDK mempercepat pengembangan fitur baru. Meskipun Solaris dan Sparc adalah teknologi kunci di Sun Microsystems, pencipta asli Java, mereka telah digantikan dalam ruang teknologi dalam beberapa tahun terakhir oleh OS Linux dan prosesor Intel.

Tempat mengunduh JDK 14

Anda dapat mengunduh JDK 14 open source dari jdk.java.net untuk Linux, Windows, dan macOS. Anda dapat mengunduh unduhan Oracle komersial Java SE 14 dari Oracle.com.