Java JDK 11: Semua fitur baru sekarang tersedia

Java Development Kit (JDK) 11 sekarang tersedia secara umum dan siap untuk penggunaan produksi, menghadirkan peningkatan produktivitas dan API klien HTTP yang mengimplementasikan HTTP / 2.

Versi 11 dari Java Standard Edition (SE) memiliki 16 perubahan fitur utama. Java 11 juga kehilangan beberapa kapabilitas melalui penghapusan modul CORBA dan Java EE (baru-baru ini berganti nama menjadi Jakarta EE), serta penghapusan JavaFX, yang sekarang tersedia sebagai teknologi mandiri.

Di Java 11, Oracle telah mem-fork repositori mainline, jdk / jdk, ke repositori stabilisasi jdk / jdk11. Perubahan yang didorong ke jdk / jdk atau jdk / klien sekarang ditandai untuk JDK 12. Repositori stabilisasi dapat menerima perbaikan bug tertentu dan, jika disetujui, penyempurnaan terlambat sesuai dengan Proses Rilis JDK.

Versi terbaru implementasi Java standar dari Oracle adalah rilis Long Term Support (LTS), yang akan mendapat dukungan komersial dari Oracle setidaknya selama delapan tahun. Perbaikan bug dan pembaruan keamanan akan ditawarkan hingga 2026. Rilis LTS baru jatuh tempo setiap tiga tahun, dengan JDK 17, jatuh tempo pada tahun 2021, dijadwalkan menjadi rilis LTS berikutnya. Pembebasan sementara akan dilakukan setiap enam bulan.

Tempat mengunduh JDK 11

Anda dapat mengunduh JDK 11 dari Oracle Technology Network.

Fitur baru di Java 11 JDK

JDK 11 memiliki 16 fitur baru:

  • Meningkatkan intrinsik Aarch64, dengan implementasi intrinsik baru untuk fungsi  lang.Mathsin, cos, dan log, pada prosesor Aarch64. Proposal ini menekankan pola kode khusus arsitektur CPU yang meningkatkan kinerja aplikasi dan benchmark.
  • Kontrol akses berbasis sarang memperkenalkan sarang, konteks kontrol akses yang selaras dengan pengertian tipe bersarang dalam bahasa Java. Sarang memungkinkan kelas yang secara logis merupakan bagian dari entitas kode yang sama tetapi dikompilasi ke file kelas yang berbeda untuk mengakses anggota pribadi masing-masing tanpa memerlukan kompiler untuk memasukkan metode jembatan perluasan aksesibilitas.
  • Transport Layer Security (TLS) 1.3, di mana perbaikan protokol TLS ini akan dipasang ke JDK 11, yang menawarkan manfaat keamanan dan kinerja yang signifikan. Tidak ada tujuan, bagaimanapun, untuk mendukung setiap fitur TLS 1.3. Untuk meminimalkan risiko ketidakcocokan, TLS 1.3 akan menerapkan mode kompatibilitas mundur secara default. Aplikasi dapat mematikan atau menghidupkan mode ini sesuai keinginan.
  • Penghentian mesin JavaScript Nashorn, bersama dengan alat JJS, dengan maksud untuk menghapusnya di masa mendatang. Oracle menganggap Nashorn menantang untuk dipelihara, mengingat kecepatan cepat konstruksi bahasa ECMAScript dan API telah diadaptasi dan dimodifikasi.
  • Klien HTTP (Standar), yang menstandarkan klien HTTP API yang diinkubasi yang diperkenalkan di JDK 9 dan diperbarui di JDK 10. API menawarkan semantik permintaan dan respons nonblocking CompleteableFutures, yang dapat ditautkan untuk memicu tindakan dependen. Implementasinya, sekarang asynchronous, hampir seluruhnya ditulis ulang, setelah diinkubasi di JDKs 9 dan 10. Konsep RX Flow telah didorong ke dalam implementasi, menghilangkan banyak konsep kustom yang diperlukan untuk mendukung HTTP / 2. Aliran data sekarang dapat lebih mudah dilacak, dari penerbit permintaan tingkat pengguna dan penerbit tanggapan ke soket yang mendasarinya. Ini mengurangi kompleksitas dan memaksimalkan kemungkinan penggunaan kembali antara HTTP / 1 dan HTTP / 2.
  • Pengumpul sampah Epsilon, yang disebut sebagai pengumpul "tanpa operasi", akan menangani alokasi memori tanpa mengimplementasikan mekanisme reklamasi memori yang sebenarnya. Kasus penggunaan Epsilon mencakup pengujian kinerja, tekanan memori, dan antarmuka mesin virtual. Ini juga bisa digunakan untuk pekerjaan jangka pendek.
  • Sintaks variabel lokal untuk parameter lambda harus menyelaraskan sintaks dari deklarasi parameter formal dalam ekspresi yang diketik secara implisit dengan sintaks deklarasi variabel lokal. Ini akan memungkinkan var untuk digunakan saat mendeklarasikan parameter formal dari ekspresi lambda yang diketik secara implisit.
  • Format file kelas Java akan diperluas untuk mendukung formulir kumpulan konstan baru CONSTANT_Dynamic,. Tujuannya adalah untuk mengurangi biaya dan gangguan dalam mengembangkan bentuk baru dari batasan file kelas yang dapat diwujudkan.
  • Kesepakatan utama dengan kriptografi Curve25519 dan Curve448 harus lebih efisien dan aman daripada skema Diffie-Hellman kurva eliptik yang ada. Dua kurva elips, Curve25510 dan Curve448, memungkinkan implementasi waktu konstan dan perkalian skalar bebas pengecualian yang lebih tahan terhadap berbagai serangan saluran samping, termasuk serangan waktu dan cache, menurut IETF. Sasaran proposal mencakup API dan implementasi skema kesepakatan kunci serta pengembangan implementasi semua-Java yang tidak bergantung platform. Namun, terdapat risiko dalam kompleksitas dan kehalusan implementasi aritmatika modular yang ditampilkan sebagai bagian dari proposal.
  • Flight Recorder akan menyediakan kerangka kerja pengumpulan data dengan overhead rendah untuk memecahkan masalah aplikasi Java dan HotSpot JVM. Flight Recorder telah menjadi fitur JDK komersial Oracle, tetapi kode sumbernya akan dipindahkan ke repositori terbuka agar fitur tersebut tersedia secara umum. Iclouded akan menjadi API untuk menghasilkan dan menggunakan data sebagai peristiwa, menyediakan mekanisme buffer dan format data biner serta memungkinkan konfigurasi dan pemfilteran peristiwa. Proposal juga menyerukan untuk menyediakan acara untuk perpustakaan OS, HotSpot, dan JDK.
  • Meningkatkan API platform untuk mendukung Unicode Versi 10.0, sehingga Java selalu terbarui. Dukungan diharapkan di kelas-kelas berikut:
    • Characterdan Stringdi dalam langpaket
    • NumericShaperdi dalam awt.fontpaket
    • Bidi,, BreakIteratordan Normalizerdi dalam textpaket
  • Menerapkan algoritma kriptografi ChaCha20 dan Poly1305. ChaCha2020 adalah stream cipher yang relatif baru yang dapat menggantikan stream cipher R4 lama yang tidak aman. ChaCha20 akan dipasangkan dengan pengautentikasi Poly1305. Implementasi cipher ChaCha20 dan ChaCha20-Poly1305 akan disediakan, dengan algoritme yang diterapkan di penyedia SunJCE (Java Cryptography Extension), menggunakan crypto.CipherSpiAPI.
  • Meningkatkan peluncur Java untuk menjalankan program yang disediakan sebagai file tunggal kode sumber Java, sehingga program ini dapat dijalankan langsung dari sumber. Program file tunggal biasa terjadi saat menulis utilitas kecil atau untuk pengembang pada tahap awal mempelajari Java. Selain itu, satu file sumber dapat dikompilasi ke beberapa file kelas, yang menambahkan overhead pengemasan. Dalam konteks ini, harus mengkompilasi program sebelum menjalankannya hanyalah langkah yang tidak diperlukan berdasarkan tradisi.
  • Pembuatan profil heap dengan overhead rendah, menyediakan cara untuk mengambil sampel alokasi heap Java, yang dapat diakses melalui JVM Tool Interface. Tujuan dari upaya ini adalah untuk mendapatkan informasi tentang alokasi ini dengan cara yang rendah biaya, dapat diakses melalui antarmuka terprogram, dan dapat mengambil sampel semua alokasi. Kemandirian implementasi dan penyediaan data tentang tumpukan hidup dan mati adalah tujuan juga. Pengelolaan heap yang buruk dapat menyebabkan kehabisan heap dan pemborosan pengumpulan sampah. Sebagian besar alat yang mengatasi hal ini tidak memiliki situs panggilan untuk alokasi tertentu, informasi yang dapat menjadi penting untuk men-debug masalah memori.
  • Penghentian alat Pack200 dan Unpack200 dan API Pack200 di util.jar. Pack200 adalah skema kompresi untuk file .jar, dimaksudkan untuk mengurangi kebutuhan disk dan bandwidth untuk pengemasan aplikasi, transmisi, dan pengiriman. Biaya pemeliharaan dan penggunaan yang rendah tidak membenarkan retensi mereka, kata pemimpin proyek.
  • Z Garbage Collector (ZGC), pengumpul sampah eksperimental latensi rendah, untuk menangani tumpukan mulai dari tumpukan yang relatif kecil hingga sangat besar yang berukuran banyak terabyte. Dengan menggunakan ZGC, waktu jeda tidak boleh melebihi 10 md dan pengurangan throughput aplikasi tidak boleh lebih dari 15 persen dibandingkan dengan menggunakan kolektor G1. ZGC juga meletakkan dasar untuk fitur dan pengoptimalan di masa mendatang. Linux / x64 akan menjadi platform pertama yang mendapatkan dukungan ZGC.

Apa yang dihapus dari Java JDK 11

Modul Java EE EE dan CORBA tidak digunakan lagi di Java SE 9, dengan maksud untuk menghapusnya di rilis selanjutnya — yaitu JDK 11.

Java SE 6, dirilis pada Desember 2006, telah menyertakan tumpukan layanan web lengkap untuk kenyamanan pengembang — termasuk empat teknologi yang dibangun untuk platform Java EE: JAX-WS (Java API untuk Layanan Web berbasis XML, JAXB (Arsitektur Java untuk XML Binding), JAF (JavaBeans Activation Framework), dan Anotasi Umum untuk Java. Seiring waktu, versi Java EE berkembang, yang menyebabkan kesulitan di Java SE, seperti termasuk teknologi yang tidak relevan dengan Java SE dan pemeliharaan yang lebih sulit di kedua Java edisi. Dengan versi mandiri dari teknologi Java EE yang tersedia dari situs pihak ketiga, Oracle mengatakan tidak perlu lagi memilikinya di Java SE atau di JDK.

Namun, beberapa aplikasi tidak akan dikompilasi atau dijalankan jika mereka mengandalkan dukungan out-of-the-box di JDK untuk Java EE API dan alat. Inkompatibilitas biner dan sumber akan muncul saat memigrasi JDK 6, 7, atau 8 ke rilis selanjutnya. Oracle mengatakan bahwa pengembang yang terpengaruh oleh risiko ini dapat menerapkan versi alternatif dari teknologi Java EE.

CORBA sudah ada sejak tahun 1990-an, dan Oracle mengatakan bahwa saat ini tidak ada minat yang signifikan dalam mengembangkan aplikasi Java modern dengan CORBA. Dan biaya pemeliharaan dukungan CORBA lebih besar daripada manfaat yang tersisa.

Namun penghapusan risiko CORBA memiliki implementasi CORBA yang tidak akan berjalan jika penerapan tersebut hanya menyertakan subset dari API CORBA dan mengharapkan JDK menyediakan sisanya. Tidak ada versi CORBA pihak ketiga, dan tidak pasti apakah pihak ketiga dapat mengambil alih pemeliharaan API CORBA.

JavaFX sedang dihapus sehingga tidak terikat dengan jadwal pembaruan dua kali setahun Java JDK.