JavaRush /Blog Java /Random-MS /Java 12 ada di sini: apa yang baharu?

Java 12 ada di sini: apa yang baharu?

Diterbitkan dalam kumpulan
Jadi, Java muncul di nombor 12. Dan walaupun ini bukan keluaran LTS (iaitu, bukan sokongan jangka panjang, bukan keluaran yang akan disokong untuk masa yang lama. Versi 11 dianggap sebagai keluaran LTS pertama dengan lapan- tempoh sokongan tahun ), perkara menarik muncul di dalamnya kemas kini. Mari kita lihat yang paling penting daripada mereka. Ingat bahawa di Jawa, cadangan perubahan disingkatkan sebagai jeps (dari JDK Enhancement Proposal). Java 12 ada di sini: apa yang baharu?  - 1

JDK 12 Jep yang paling menarik

189: Shenandoah: Pengumpul Sampah Masa Jeda Rendah (Percubaan) Pengumpul Sampah, Shenandoah, menggunakan algoritma baharu yang mengurangkan masa jalan dengan membersihkan secara serentak dengan menjalankan benang Java. Dalam kes ini, masa jeda di Shenandoah adalah sama tanpa mengira saiz timbunan. Atas sebab tertentu, Oracle tidak memasukkan Sheandoah dalam binaan keluaran "rasmi"nya, walaupun pada hakikatnya pembangun menganggap ciri ini sebagai salah satu yang paling penting dalam keluaran baharu. Jadi jika anda bercadang untuk mencuba Pengumpul Sampah lanjutan, anda perlu menggunakan binaan pihak ketiga, seperti Azul . 230: Microbenchmark Suite Microbenchmark ialah penanda aras mikro yang mengukur prestasi beberapa elemen kecil. Di Jawa, ia ditulis dan dijalankan menggunakan rangka kerja JMH. Sejak versi 12, JMH telah ditambahkan pada JDK, dan sudah ada ujian yang ditulis di dalamnya, yang menjadikan kehidupan lebih mudah untuk pembangun. 325: Ungkapan Suis (Pratonton) Bentuk baharu penulisan ungkapan dengan pernyataan suis. Halaman ciri menyediakan contoh kod menggunakan suis tradisional, di mana penggunaan berterusan rehat menjadikannya tidak perlu, yang membawa kepada ralat rawak yang kerap.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Pengarang kemas kini mencadangkan untuk memperkenalkan bentuk baharu bagi label suis "kes L ->" untuk menunjukkan dengan jelas bahawa hanya kod di sebelah kanan label akan dilaksanakan jika label ini sesuai. Oleh itu, kod yang ditunjukkan di atas boleh dipendekkan dengan ketara menggunakan sintaks baharu:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334: API Pemalar JVM Kolam pemalar mengandungi apa yang dipanggil pemalar boleh dimuatkan. Ini ialah nilai, contohnya jenis String atau sebarang jenis primitif, serta artifak masa jalan, seperti kelas dan kaedah. Apabila bekerja dengan fail kelas, pengaturcara akan mendapat manfaat daripada alat yang mudah untuk memanipulasi pemalar boleh dimuatkan. Pengarang jep ini mula menyelesaikan masalah ini dengan memperkenalkan jenis pautan simbolik berasaskan nilai baharu, yang setiap satunya akan menerangkan jenis pemalar tertentu. Kod inovasi . 340: Satu Port AArch64, Bukan Dua Nama kompleks ini menyembunyikan penyelesaian kepada masalah yang timbul dalam Java 9, apabila port ARM 64-bit Oracle dan aarch64 daripada Red Hat muncul dalam kit pada masa yang sama. Lebih-lebih lagi, pada masa pelepasan JDK 11, malah Oracle sendiri tidak menyokong versi 64-bit port Oracle. Jadi kini port Oracle 64-bit telah dialih keluar, meninggalkan 32-bit ARM32, dan 64-bit, lebih produktif, aarch64. 341: Arkib CDS Lalai Kemas kini yang sangat bagus kerana ia benar-benar mempercepatkan pelancaran aplikasi. Bukan rahsia lagi bahawa apabila aplikasi Java bermula, sejumlah besar kelas mula dimuatkan, dan ini adalah proses yang agak panjang. CDS bermaksud Perkongsian Data Kelas, dan fungsi ini membolehkan anda mengemas semua kelas ini yang dilancarkan pada permulaan ke dalam arkib perkongsian data kelas khas, menggunakan senarai lalai bagi kelas yang sama ini. Akibatnya, kelajuan pelancaran aplikasi meningkat dengan ketara. 344: Abortable Mixed Collections untuk G1 G1 ialah pemungut sampah yang menjadi pemungut sampah utama dalam JDK 9, menggantikan GC Selari. Di Java 10, G1 belajar mengumpul sampah dalam berbilang benang. Walau bagaimanapun, tidak semua orang gembira dengan kerjanya; salah satu masalah utama ialah jeda yang panjang. Kini mereka boleh dibatalkan. G1, berdasarkan analisis tingkah laku program, menentukan jumlah kerja, dan kemudian mengumpulkan objek "langsung" ke dalam set Koleksi sehingga ia mengumpulkan segala-galanya, tanpa berhenti. Selalunya G1 terlepas pengiraan jumlah kerja dan bekerja terlalu lama. Sebaik sahaja jep-344 dilaksanakan, G1 boleh bertukar kepada pengumpulan sampah tambahan dan jika langkah seterusnya mengambil masa yang lebih lama untuk disiapkan daripada yang munasabah, langkah itu boleh dibatalkan. 346: Kembalikan Memori Terkomit yang Tidak Digunakan dengan Segera daripada G1 Dan beberapa lagi kemas kini dalam kem pemasang G1 yang disebutkan di atas. Kadang-kadang ia berlaku bahawa terdapat sekumpulan memori timbunan Java, tetapi tiada siapa yang menggunakannya, ingatan ini. Dalam Java 12, anda kini boleh "mengembalikan" memori tidak aktif kepada sistem pengendalian. Sebelum ini, sangat jarang untuk mendapatkan G1 untuk melepaskan ingatan, tetapi kini semuanya telah dipermudahkan. Dengan ciri baharu, aplikasi ditakrifkan sebagai tidak aktif jika selang sejak binaan terakhir telah tamat tempoh dan tiada kitaran serentak. Situasi lain ialah jika atau jika fungsi getloadavg(), yang telah dipantau untuk beberapa lama, menunjukkan beban di bawah ambang yang boleh diterima yang ditetapkan. Jika satu daripada dua peristiwa berlaku, pengumpulan sampah separa bermula. Apa yang Java 12 tiada: Raw String Literals Ramai pembangun berminat dengan ciri ini, tetapi ia tidak pernah muncul dalam keluaran ini. Pengarangnya memutuskan bahawa ia masih memerlukan kerja. Jadi, kami berani berharap bahawa fungsi untuk kerja mudah dengan literal rentetan akan muncul dalam salah satu versi Java yang seterusnya. Sokongan untuk literal rentetan mentah membolehkan anda bekerja dengan maklumat rentetan tanpa mengira bahasa. Ini menghapuskan keperluan untuk perisai. Terutamanya berguna dalam ungkapan biasa, di mana garis miring ke belakang digunakan secara meluas, dan dalam laluan Windows, di mana garis miring ke belakang digunakan sebagai pembatas. Iaitu, untuk mengelakkan pembinaan sedemikian: C:\\My\\Test\\Pack\\
Setiap pengaturcara sering menghadapi satu atau lain kesukaran dalam kerja mereka. Kadang-kadang mereka dikaitkan dengan pengalaman pembangun, tetapi kadang-kadang dengan ketidaksempurnaan alat itu sendiri. Java ialah bahasa yang hebat, tetapi ia jauh dari sempurna. Mungkin anda telah menemui sesuatu dalam Java dan tahu perkara yang anda ingin ubah dalam "alat" (bahasa) anda? Kongsi dalam komen!

kesimpulan

Tidak ada revolusi di Java 12. Namun, tiada siapa yang merancangnya. Walau bagaimanapun, beberapa inovasi bertujuan untuk mengoptimumkan operasi aplikasi dan mempercepatkan kerja, yang merupakan berita baik. By the way, IDEA sudah menyokong JDK 12, jadi anda boleh mencuba keupayaannya. Sudah tentu, beberapa kemas kini secara langsung mempengaruhi pemula, walaupun mereka yang baru mula belajar JavaRush boleh bermain dengan suis baharu (selepas menetapkan bendera --enable-preview).
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION