Memperkenalkan Java 13: Mari selami Ke Fitur Baru JDK



Java telah menjadi impian programmer dan apa cara yang lebih baik untuk mengukur popularitas Java dengan rilis versi baru Java 13. Setelah proposal peningkatan Java awal, ada kemajuan dalam fitur JDK yang akan meledakkan pikiran pengembang Java dengan serangkaian fitur baru setelah rilis resmi pada 17 September 2019.

Tetapi mengapa menurut Anda Java begitu populer?

Java telah menjadi kegemaran di kalangan programmer karena independensi platformnya dan kemampuan untuk berjalan di komputer yang berbeda. Sudah ada begitu lama sehingga telah diadopsi oleh organisasi seperti bank, perusahaan asuransi, perusahaan, agen dan sebagian besar oleh perusahaan perangkat lunak outsourcing .

Java telah ada dalam bisnis untuk mengembangkan aplikasi android, aplikasi web java, perangkat lunak, dan aplikasi ilmiah.

Mari kita mempelajari statistik dan mengukur rasio popularitas aplikasi Java di antara bahasa pemrograman lain yang bersaing.

Sesuai laporan September baru-baru ini oleh Tiobe Index , aplikasi dan programmer Java telah memperhatikan posisinya dan telah memberikan waktu yang sulit untuk bahasa pemrograman lain.



Setelah melihat suku popularitas Java di antara bahasa pemrograman lain, mari kita beralih ke fitur Java 13 JDK dalam sekejap:

  1. JEP 350: Arsip CDS Dinamis
  2. JEP 351: ZGC: Memori Tidak Digunakan Uncommit
  3. JEP 353: Terapkan kembali Legacy Socket API
  4. JEP 354: Alihkan Ekspresi (Pratinjau)
  5. JEP 355: Blok Teks (Pratinjau)

Karena kami tidak dapat mengharapkan banyak perubahan setelah rilis awal Java 12, masih ada perubahan pada level fungsional yang dapat berpindah dari programmer Java ke fitur stabil baru. Tujuannya adalah untuk menyelesaikan fitur pratinjau oleh versi LTS berikutnya sehingga mereka cukup stabil dan akan terlihat bagus untuk tiga tahun ke depan. Diharapkan pada bulan September 2021, Java 17 akan mengambil alih warisan Java 8 dan 11.

Di blog ini, saya akan membawa Anda melalui fitur-fitur terbaru yang dapat Anda harapkan dari Java 13.

-> Arsip CDS Dinamis

Terlepas dari fitur-fitur baru yang jelas bagi pengembang Java , banyak yang telah terjadi di bawah atap JVM dan perpustakaan di kelas. Class Data Sharing (CDS) diperkenalkan kembali selama Java 5. Tujuan utama dari CDS adalah untuk mempersingkat waktu mulai aplikasi Java dengan menyimpan informasi tertentu tentang kelas dalam arsip Class Data Sharing. Data kemudian dapat dimuat saat runtime dan digunakan oleh beberapa JVM.

Namun, hingga Java 10, arsip bersama hanya dapat diakses untuk Bootstrap ClassLoader. Dimulai dengan Java 10, CDS diperpanjang oleh Application Class Data Sharing (AppCDS). AppCDS memungkinkan pemuat kelas sistem dan platform bawaan serta pemuat kelas yang ditentukan pengguna untuk mengakses arsip CDS. Daftar kelas diperlukan untuk membuat arsip CDS untuk mengidentifikasi kelas yang akan dimuat.

Sebelumnya, daftar kelas ini harus ditentukan oleh uji coba aplikasi untuk menentukan kelas mana yang sebenarnya dimuat selama eksekusi. Sejak Java 12, arsip CDS default dikirim dengan JDK secara default, yang didasarkan pada daftar kelas JDK.

Arsip CDS dinamis sekarang membangun ini. Tujuannya adalah untuk menyimpan uji coba aplikasi tambahan. Setelah aplikasi dieksekusi, hanya kelas aplikasi dan perpustakaan yang baru dimuat yang belum terkandung dalam Default / Base Layer CDS yang diarsipkan. Pengarsipan dinamis diaktifkan dengan perintah baris perintah. Dalam ekstensi masa depan, pengarsipan kelas kemudian dapat berjalan sepenuhnya secara otomatis dan transparan.

-> ZGC: Memori Tidak Digunakan yang Tidak Digunakan

Saat ini, tidak jarang aplikasi harus melayani ribuan pengguna secara bersamaan. Aplikasi semacam itu membutuhkan banyak memori dan manajemen memori yang signifikan yang mempengaruhi kinerja aplikasi. Untuk memenuhi persyaratan yang dinyatakan, Oracle telah memperkenalkan Z Garbage Collector ( ZGC ) di Java 11 karena menjanjikan jeda yang sangat singkat ketika membersihkan memori yang ditumpuk dengan beberapa terabyte.

Sebelumnya, itu tidak merilis memori tumpukan dirilis khusus untuk aplikasi. Akibatnya, aplikasi mengkonsumsi lebih banyak memori daripada yang diperlukan. Aplikasi yang berjalan di lingkungan sumber daya rendah sangat terpengaruh. Pengumpul sampah lainnya seperti G1 dan Shenandoah sudah mendukung pelepasan memori yang tidak digunakan.

-> API Socket Yang Diperbarui

Java Socket dan Java ServerSocketAPIs adalah fragmen dari JDK 1.0. Kebanyakan dari mereka terdiri dari warisan dari Jawa dan Kode C. Ini membuat pemeliharaan dan ekstensibilitas menjadi lebih sulit. NioSocketImpl seharusnya menggantikan PlainSocketImpl yang sudah usang sekarang. NioSocketImpl sudah didasarkan pada implementasi I / O Baru yang ada dan menggunakan infrastruktur yang ada di JDK.

Implementasi sebelumnya tidak kompatibel dengan ekstensi bahasa yang direncanakan lainnya. Sebagai contoh, masalah konkurensi menghalangi penggunaan masa depan dari thread pengguna yang ringan (serat, bagian dari Project Loom).

-> Peningkatan untuk Ekspresi Switch

Jika Anda melihat fitur dari sudut pandang pengembang, maka itu adalah titik yang hanya menarik. Misalnya, Switch Expressions diperkenalkan sebagai pratinjau di Java 12 dan telah diperpanjang karena umpan balik pengguna. Switch Expressions adalah alternatif untuk pernyataan switch yang merepotkan dan rawan kesalahan.

Perubahan terbesar dalam norma pengkodean yang bisa dilihat di Java 13 adalah penggantian kata kunci break dalam ekspresi switch dengan hasil. Latar belakang adalah diferensiasi yang lebih baik antara pernyataan switch (dengan kemungkinan jeda) dan ekspresi (dengan hasil). Pernyataan hasil keluar dari sakelar dan mengembalikan hasil cabang saat ini, mirip dengan pengembalian.

Sebagai contoh, potongan kode di bawah ini menampilkan skenario di mana pernyataan Switch telah digunakan dengan break dan di bagian lain Switch Expression telah digunakan dengan hasil untuk membuat perbedaan antara keduanya.



-> Blok Teks bukan Raw String Literals

blok teks adalah jenis baru untuk mendefinisikan string literal dalam bahasa Java. Ini dapat digunakan untuk menunjukkan string di mana saja bahwa string literal dapat digunakan tetapi menawarkan ekspresif yang lebih besar dan kompleksitas yang kurang disengaja. Implementasi pertama Raw String Literals telah menimbulkan banyak pertanyaan karena pengguna telah memberikan umpan balik yang hampir sama yang memiliki beberapa pertanyaan ganda.

Lagi pula, banyak aplikasi Java dapat memproses potongan kode dari bahasa lain seperti HTML atau SQL. Sampai sekarang, string semacam itu hanya dapat didefinisikan dengan cara yang rumit, yang membuat mereka sulit dibaca.

Misalnya, perintah kontrol tambahan (melarikan diri dengan \ n) harus digunakan untuk jeda baris. Bahasa lain seperti Groovy, Scala atau Kotlin telah lama menawarkan kemungkinan untuk mendefinisikan teks multi-baris.

Blok teks baru menggunakan tanda kutip tiga sebagai pembatas dan dapat digunakan di mana pun string normal diizinkan.

Cuplikan kode di bawah ini menjelaskan perbedaan antara keduanya:



Kutipan rangkap tiga pembukaan dan penutupan harus terpisah. Namun demikian, konten yang sebenarnya dimulai dengan baris kedua. Ini meningkatkan keterbacaan kode sumber, karena lekukan dari baris pertama ditampilkan dengan benar dalam teks sumber.

Kesimpulan:

Perubahan yang dijelaskan sejauh ini didefinisikan dalam JEP (Java Enhancement Protocols). Namun ada adaptasi lebih lanjut langsung di perpustakaan kelas. Tetapi pertama-tama, Anda harus menginstal Java 13 saat versi Java 14 masih dalam jalur pipa.

Perubahannya tidak pasti dan ada fitur tertentu seperti Switch Expressions dan Text Block yang dapat diselesaikan. Namun, rilis berikutnya sedang dalam perjalanan.

Source: https://habr.com/ru/post/id483186/


All Articles