JDK 10: Yang baru di Java 10

JDK 10, implementasi dari Java Standard Edition 10, dirilis pada 20 Maret 2018. Peningkatan utama mencakup jenis variabel lokal serta penyempurnaan untuk pengumpulan dan kompilasi sampah.

JDK 10 dijadwalkan hanya rilis jangka pendek, dan pembaruan publik untuk JDK 10 dijadwalkan berakhir dalam enam bulan. JDK 11 mendatang, yang jatuh tempo pada bulan September, akan menjadi versi dukungan jangka panjang (LTS) dari Java. Pelepasan LTS jatuh tempo setiap tiga tahun.

Oracle telah menetapkan irama rilis enam bulan untuk rilis Java. Ada rencana untuk menamai peningkatan dan penerus ini berdasarkan tahun dan bulan rilis, dengan rilis pertama disebut Java 18.3. Tapi rencana itu dibatalkan setelah keberatan diajukan.

Tempat mengunduh Java JDK 10

Anda dapat mengunduh JDK 10 dari situs web Oracle.

Fitur baru dan lebih baik di JDK 10

Fitur utama di JDK 10 meliputi:

  • Jenis inferensi variabel lokal, untuk menyempurnakan bahasa Java guna memperluas jenis inferensi ke deklarasi variabel lokal dengan penginisialisasi.
  • Pengumpulan sampah penuh paralel untuk pengumpul sampah G1, untuk meningkatkan latensi kasus terburuk.
  • Berbagi data kelas aplikasi untuk mengoptimalkan waktu mulai dan footprint. Fitur Berbagi Data Kelas yang ada diperluas sehingga kelas aplikasi dapat ditempatkan di arsip bersama.
  • Kompiler just-in-time eksperimental, Graal, dapat digunakan pada platform Linux / x64.
  • Kesadaran Docker. Saat berjalan di sistem Linux, Java Virtual Machine (JVM) akan mengetahui jika dijalankan di container Docker. Informasi khusus penampung — jumlah CPU dan memori total yang dialokasikan ke penampung — akan diekstraksi oleh JVM alih-alih meminta sistem operasi. (Jumlah CPU yang tersedia untuk proses Java dihitung dari set, pembagian, atau kuota prosesor yang ditentukan.)
  • Tiga opsi JVM baru, untuk memberi pengguna kontainer Docker kontrol yang lebih besar atas memori sistem.
  • Perbaikan bug untuk memperbaiki mekanisme lampirkan ketika mencoba melampirkan dari proses host ke proses Java yang ada di kontainer Docker.
  • Waktu mulai yang lebih singkat untuk alat jShell REPL, terutama saat file mulai dengan banyak cuplikan sedang digunakan.
  • API baru untuk lebih memungkinkan pembuatan koleksi yang tidak dapat dimodifikasi. Metode copyOf,, Set.copyOfdan Map.copyOfmembuat instance koleksi baru dari instance yang ada. Metode baru toUnmodifiableList, toUnmodifiableSetdan toUnmodifiableMapditambahkan ke Collectorskelas dalam paket Stream, yang memungkinkan unsur-unsur Streaming harus dikumpulkan ke dalam koleksi unmodifiable.
  • Jenis inferensi variabel lokal, untuk menyempurnakan bahasa guna memperluas jenis inferensi ke variabel lokal. Tujuannya adalah untuk mengurangi "upacara" yang terkait dengan pengkodean sambil mempertahankan komitmen terhadap keamanan tipe statis.
  • Antarmuka pengumpul sampah yang bersih untuk meningkatkan isolasi kode sumber dari berbagai pengumpul sampah. Sasaran dari upaya ini mencakup modularitas yang lebih baik untuk kode pengumpulan sampah internal di mesin virtual HotSpot dan membuatnya lebih mudah untuk menambahkan pengumpul sampah baru ke HotSpot.
  • Pengumpulan sampah penuh paralel untuk pengumpul sampah G1. Tujuannya adalah untuk meningkatkan latensi kasus terburuk dengan menerapkan paralelisme.
  • Mengaktifkan HotSpot untuk mengalokasikan tumpukan objek pada perangkat memori alternatif, seperti modul memori NVDIMM, yang ditentukan oleh pengguna. Fitur ini membayangkan bahwa sistem masa depan mungkin memiliki arsitektur memori yang heterogen.
  • Mengaktifkan kompiler just-in-time berbasis Grall Java untuk digunakan secara eksperimental pada platform Linux / x64.
  • Konsolidasi repositori hutan JDK menjadi satu repositori, untuk menyederhanakan pengembangan. Basis kode hingga saat ini telah dipecah menjadi beberapa repo, yang dapat menyebabkan masalah dengan manajemen kode sumber.
  • Aplikasi berbagi data kelas, untuk mengurangi jejak dengan berbagi metadata kelas umum di seluruh proses. Waktu mulai juga ditingkatkan.
  • Jabat tangan lokal thread, untuk menjalankan callback pada thread tanpa melakukan titik aman VM global. Setiap utas dapat dihentikan, bukan semua utas atau tanpa utas.
  • Penyediaan satu set default dari sertifikat otoritas sertifikat root di JDK. Tujuannya adalah untuk mendapatkan sertifikat dasar sumber terbuka di program CA Root Java SE Oracle agar build OpenJDK lebih menarik bagi pengembang.

Peta jalan Java jangka panjang

Inilah yang dikatakan Oracle yang sedang dipertimbangkan untuk Java SE versi berikutnya dan yang lebih baru:

  • Proyek Amber, yang telah menjadi inkubator untuk fitur bahasa yang lebih kecil dan berorientasi produktivitas yang mencakup inferensi tipe variabel lokal, untuk mengurangi upacara terkait penulisan kode Java; enum yang ditingkatkan, untuk meningkatkan ekspresif dari konstruksi enum dengan mengizinkan variabel tipe dalam enum dan melakukan pemeriksaan jenis yang lebih tajam untuk konstanta enum; dan sisa lambda, untuk meningkatkan kegunaan lambda dan referensi metode.
  • Project Panama, untuk menghubungkan JVM dan kode asli, menampilkan pemanggilan fungsi asli dari JVM dan akses data asli dari JVM.
  • Valhalla, proyek inkubator untuk Java VM tingkat lanjut dan kandidat fitur bahasa termasuk tipe nilai dan spesialisasi umum.
  • Project Loom, untuk mengurangi kerumitan dalam penulisan aplikasi bersamaan. Rencananya panggilan untuk menambahkan alternatif, implementasi utas mode pengguna, kelanjutan terbatas, dan konstruksi lain yang melibatkan manipulasi tumpukan panggilan. Tujuan utama dari proposal ini adalah untuk menawarkan implementasi alternatif dari thread, yang dikelola oleh penjadwal yang ditulis dalam Java. Model pemrograman Java dari thread Java biasa akan dipertahankan sementara kinerja ditingkatkan dan footprint dikurangi.

Dengan jadwal rilis enam bulan yang baru, fitur yang melewatkan satu rilis mungkin akan tertunda selama enam bulan, saat rilis berikutnya keluar. Di luar apa yang telah diumumkan untuk JDK 10, Oracle belum berkomitmen kapan salah satu fitur baru yang diusulkan benar-benar akan tersedia di Java.