Rilis Java SE 18

Setelah enam bulan pengembangan, Oracle telah merilis platform Java SE 18 (Java Platform, Standard Edition 18), yang menggunakan proyek sumber terbuka OpenJDK sebagai implementasi referensi. Dengan pengecualian penghapusan beberapa fitur yang tidak digunakan lagi, Java SE 18 mempertahankan kompatibilitas mundur dengan rilis platform Java sebelumnya—sebagian besar proyek Java yang ditulis sebelumnya akan tetap berfungsi tanpa modifikasi saat dijalankan di bawah versi baru. Build Java SE 18 (JDK, JRE, dan Server JRE) yang dapat diinstal disiapkan untuk Linux (x86_64, AArch64), Windows (x86_64), dan macOS (x86_64, AArch64). Dikembangkan oleh proyek OpenJDK, implementasi referensi Java 18 sepenuhnya open source di bawah lisensi GPLv2 dengan pengecualian GNU ClassPath untuk memungkinkan penautan dinamis ke produk komersial.

Java SE 18 dikategorikan sebagai rilis dukungan reguler, dengan pembaruan yang akan dirilis sebelum rilis berikutnya. Cabang Dukungan Jangka Panjang (LTS) harus Java SE 17, yang akan menerima pembaruan hingga 2029. Ingatlah bahwa dimulai dengan rilis Java 10, proyek beralih ke proses pengembangan baru, yang menyiratkan siklus pembentukan rilis baru yang lebih pendek. Fungsionalitas baru sekarang sedang dikembangkan dalam satu cabang master yang terus diperbarui, yang menggabungkan perubahan yang telah diselesaikan dan dari mana cabang bercabang setiap enam bulan untuk menstabilkan rilis baru.

Fitur baru di Java 18 meliputi:

  • Secara default, pengkodeannya adalah UTF-8. Java API yang memproses data teks berdasarkan pengkodean karakter sekarang akan menggunakan UTF-8 secara default di semua platform, terlepas dari pengaturan sistem dan pengaturan lokal. Untuk kembali ke perilaku lama, di mana pengkodean dipilih berdasarkan lokal sistem, Anda dapat menggunakan opsi "-Dfile.encoding=COMPAT".
  • Paket ini mencakup paket com.sun.net.httpserver, yang mencakup utilitas jwebserver dan API perpustakaan dengan implementasi server http sederhana untuk menyajikan konten statis (penangan seperti CGI dan servlet tidak didukung). Server HTTP bawaan tidak dioptimalkan untuk beban kerja dan tidak mendukung kontrol akses dan otentikasi, karena ditujukan terutama untuk digunakan dalam proses pengembangan untuk proyek pembuatan prototipe, debugging, dan pengujian.
  • JavaDoc menyediakan dukungan untuk tag "@snippet" untuk menyematkan contoh kerja dan cuplikan kode ke dalam dokumentasi API, tempat Anda dapat menggunakan alat validasi, penyorotan sintaksis, dan integrasi IDE.
  • Implementasi java.lang.reflect API (Core Reflection), yang dirancang untuk memperoleh informasi tentang metode, bidang dan konstruktor kelas, serta akses ke struktur internal kelas, telah didesain ulang. Java.lang.reflect API sendiri tetap tidak berubah, namun sekarang diimplementasikan menggunakan metode yang disediakan oleh modul java.lang.invoke, alih-alih menggunakan generator bytecode. Perubahan ini memungkinkan kami menyatukan implementasi java.lang.reflect dan java.lang.invoke, serta menyederhanakan pemeliharaannya.
  • Pratinjau ketiga dari API Vektor telah diusulkan, menyediakan fungsi untuk penghitungan vektor yang dijalankan menggunakan instruksi vektor pada prosesor x86_64 dan AArch64 dan memungkinkan operasi diterapkan secara bersamaan ke beberapa nilai (SIMD). Berbeda dengan kemampuan yang disediakan dalam kompiler HotSpot JIT untuk vektorisasi otomatis operasi skalar, API baru memungkinkan kontrol vektorisasi secara eksplisit untuk pemrosesan data paralel.
  • Menambahkan antarmuka SPI (antarmuka penyedia layanan) untuk menyelesaikan nama host dan alamat IP, memungkinkan Anda menggunakan penyelesai alternatif di java.net.InetAddress yang tidak terikat dengan penangan yang ditawarkan oleh sistem operasi.
  • Pratinjau kedua dari Foreign Function & Memory API disediakan, memungkinkan aplikasi berinteraksi dengan kode dan data di luar runtime Java. API baru memungkinkan Anda memanggil fungsi non-JVM secara efisien dan mengakses memori yang tidak dikelola JVM. Misalnya, Anda dapat memanggil fungsi dari pustaka bersama eksternal dan mengakses data proses tanpa menggunakan JNI.
  • Implementasi eksperimental kedua dari pencocokan pola dalam ekspresi "saklar" telah ditambahkan, memungkinkan penggunaan pola fleksibel dalam label "huruf besar" daripada nilai eksak, yang mencakup serangkaian nilai sekaligus, yang sebelumnya perlu digunakan rangkaian ekspresi “jika… lain” yang rumit. Benda o = 123L; String diformat = switch (o) { case Integer i -> String.format("int %d", i); case Panjang l -> String.format("panjang %d", l); case Ganda d -> String.format("ganda %f", d); kasus String s -> String.format("String %s", s); default -> o.toString(); };
  • Mekanisme finalisasi dan metode terkait seperti Object.finalize(), Enum.finalize(), Runtime.runFinalization() dan System.runFinalization() sudah tidak digunakan lagi dan akan dinonaktifkan pada rilis mendatang.
  • Pengumpul sampah ZGC (Z Garbage Collector), SerialGC, dan ParallelGC mendukung deduplikasi baris.

Sumber: opennet.ru

Tambah komentar