JDK 10: Apa yang baru di Java 10

JDK 10, implementasi Java Standard Edition 10, dikeluarkan pada 20 Mac 2018. Penambahbaikan utama merangkumi jenis pemboleh ubah tempatan serta penambahbaikan untuk pengumpulan dan penyusunan sampah.

JDK 10 dijadualkan hanya untuk pengeluaran jangka pendek, dan kemas kini awam untuk JDK 10 dijadualkan berakhir dalam enam bulan. JDK 11 yang akan datang, yang dijadualkan pada bulan September, akan menjadi versi Java (LTS) sokongan jangka panjang. Pelepasan LTS dijadualkan setiap tiga tahun.

Oracle telah menetapkan irama rilis enam bulan untuk rilis Java. Telah ada rencana untuk menamakan peningkatan ini dan pengganti berdasarkan tahun dan bulan rilis, dengan rilis pertama yang disebut Java 18.3. Tetapi rancangan itu dibatalkan setelah bantahan dikemukakan.

Di mana memuat turun Java JDK 10

Anda boleh memuat turun JDK 10 dari laman web Oracle.

Ciri baru dan lebih baik dalam JDK 10

Ciri utama dalam JDK 10 merangkumi:

  • Inferensi jenis pemboleh ubah tempatan, untuk meningkatkan bahasa Jawa untuk memperluas inferensi jenis ke deklarasi pemboleh ubah tempatan dengan inisialisasi.
  • Pengumpulan sampah penuh selari untuk pengumpul sampah G1, untuk meningkatkan kependaman terburuk.
  • Perkongsian data kelas aplikasi untuk mengoptimumkan masa dan jejak permulaan. Fitur Kelas-Data Sharing yang ada diperluas sehingga kelas aplikasi dapat ditempatkan di arkib bersama.
  • Penyusun tepat pada masanya eksperimen, Graal, boleh digunakan pada platform Linux / x64.
  • Kesedaran Docker. Semasa berjalan pada sistem Linux, Java Virtual Machine (JVM) akan mengetahui apakah ia berjalan dalam wadah Docker. Maklumat khusus kontainer - jumlah CPU dan jumlah memori yang dialokasikan ke kontena - akan diekstraksi oleh JVM dan bukannya meminta sistem operasi. (Jumlah CPU yang tersedia untuk proses Java dihitung dari set, saham atau kuota pemproses yang ditentukan.)
  • Tiga pilihan JVM baru, untuk memberi pengguna kontena Docker kawalan yang lebih besar terhadap memori sistem.
  • Perbaikan pepijat untuk membetulkan mekanisme lampiran ketika cuba melampirkan dari proses host ke proses Java yang berada di dalam wadah Docker.
  • Masa permulaan yang lebih pendek untuk alat jShell REPL, terutamanya apabila fail permulaan dengan banyak coretan sedang digunakan.
  • API baru untuk membolehkan pembuatan koleksi yang tidak dapat diubahsuai dengan lebih baik. Yang copyOf, Set.copyOfdan Map.copyOfkaedah mewujudkan keadaan koleksi baru daripada keadaan yang sedia ada. Kaedah baru toUnmodifiableList, toUnmodifiableSetdan toUnmodifiableMaptelah ditambah ke dalam Collectorskelas dalam pakej Stream, membolehkan unsur-unsur yang Stream untuk dikumpulkan ke dalam koleksi unmodifiable.
  • Inferens jenis pemboleh ubah tempatan, untuk meningkatkan bahasa untuk memperluas inferensi jenis ke pemboleh ubah tempatan. Tujuannya adalah untuk mengurangkan "upacara" yang berkaitan dengan pengekodan sambil mempertahankan komitmen terhadap keselamatan jenis statik.
  • Antaramuka pengutip sampah yang bersih untuk meningkatkan pengasingan kod sumber pengumpul sampah yang berbeza. Matlamat untuk usaha ini merangkumi modulariti yang lebih baik untuk kod pengumpulan sampah dalaman di mesin maya HotSpot dan menjadikannya lebih mudah untuk menambahkan pengumpul sampah baru ke HotSpot.
  • Pengumpulan sampah penuh selari untuk pengutip sampah G1. Tujuannya adalah untuk meningkatkan latensi kes terburuk dengan menerapkan paralelisme.
  • Mengaktifkan HotSpot untuk memperuntukkan timbunan objek pada peranti memori alternatif, seperti modul memori NVDIMM, yang ditentukan oleh pengguna. Ciri ini membayangkan bahawa sistem masa depan mungkin mempunyai seni bina memori yang heterogen.
  • Mengaktifkan penyusun tepat waktu dalam Grall Java untuk digunakan secara eksperimental pada platform Linux / x64.
  • Penyatuan repositori hutan JDK menjadi satu repositori tunggal, untuk menyelaraskan pembangunan. Pangkalan kod sehingga sekarang telah dipecah menjadi beberapa repos, yang dapat menyebabkan masalah dengan pengurusan kod sumber.
  • Perkongsian data kelas aplikasi, untuk mengurangkan jejak dengan berkongsi metadata kelas umum merentasi proses. Masa permulaan juga ditingkatkan.
  • Jabat tangan tempatan-benang, untuk melaksanakan panggilan balik pada utas tanpa melakukan titik selamat VM global. Benang individu boleh dihentikan bukan semua utas atau tidak ada utas.
  • Penyediaan sekumpulan lalai sijil autoriti root root dalam JDK. Tujuannya adalah untuk membuka sijil root sumber terbuka dalam program Java SE Root CA Oracle untuk membuat OpenJDK membina lebih menarik bagi pembangun.

Peta jalan Java jangka panjang

Inilah yang dikatakan Oracle sedang dipertimbangkan untuk versi Java SE yang seterusnya dan yang akan datang:

  • Amber Project, yang telah menjadi inkubator untuk fitur bahasa berorientasikan produktiviti yang lebih kecil yang merangkumi inferens jenis pemboleh ubah tempatan, untuk mengurangkan upacara yang berkaitan dengan menulis kod Java; enum yang dipertingkatkan, untuk meningkatkan ekspresi konstruk enum dengan membenarkan pemboleh ubah jenis dalam enum dan melakukan pemeriksaan jenis yang lebih tajam untuk pemalar enum; dan sisa lambda, untuk meningkatkan kebolehgunaan lambda dan rujukan kaedah.
  • Project Panama, untuk menghubungkan JVM dan kod asli, yang menampilkan panggilan fungsi asli dari JVM dan akses data asli dari JVM.
  • Valhalla, projek inkubator untuk calon Java VM dan bahasa yang maju termasuk jenis nilai dan pengkhususan generik.
  • Project Loom, untuk mengurangkan kerumitan dalam menulis aplikasi serentak. Rancangan ini memerlukan penambahan alternatif, implementasi utas mod pengguna, kesinambungan yang dibatasi, dan konstruksi lain yang melibatkan manipulasi timbunan panggilan. Matlamat utama cadangan ini adalah untuk menawarkan alternatif pelaksanaan utas, yang dikendalikan oleh penjadual yang ditulis di Jawa. Model pengaturcaraan Java dari utas Java biasa akan dipertahankan sementara kinerja ditingkatkan dan jejak dikurangkan.

Dengan jadual pelepasan enam bulan yang baru, ciri-ciri yang ketinggalan satu pelepasan mungkin akan ditunda hanya enam bulan, ketika rilis berikutnya keluar. Di luar apa yang telah diumumkan untuk JDK 10, Oracle tidak berkomitmen ketika mana-mana ciri baru yang dicadangkan sebenarnya akan tersedia di Java.