Dapatkan sedikit lebih dekat ke Java 8

Dapatkan sedikit lebih dekat ke Java 8

Java, bahasa pemrograman yang dibuat oleh James Gosling pada tahun 1991 dimaksudkan untuk menulis program yang dapat dijalankan pada beberapa sistem operasi. Oracle sekarang memiliki keyakinan untuk Java dan melanjutkan proyek atas nama OpenJDK. Seiring waktu beberapa versi Java yang disempurnakan baru telah dilepaskan dari mana yang saat ini adalah 1.8 dikenal sebagai Java 8.

  • Baca ini => Cara Menginstal Java 8 di Centos, Red Hat & Fedora
  • Baca ini => Cara Menginstal Java 8 di Ubuntu & Linuxmint

Bahasa ini dirancang menggabungkan properti ini:

  • Platform Independent- Program ini menggunakan mesin virtual Java sebagai abstraksi dan tidak mengakses sistem operasi secara langsung. Yang membuat program java sangat portabel.
  • Pemrograman berorientasi objek- Terlepas dari tipe data primitif, semua elemen di java dapat dianggap sebagai objek.
  • Bahasa pemrograman yang sangat diketik- Ya! Java adalah bahasa pemrograman yang sangat diketik. Misalnya, jenis variabel yang digunakan harus ditentukan sebelumnya dan konversi ke objek lain menjadi cukup ketat. Ini harus dilakukan dalam kasus seorang programmer.
  • Bahasa yang ditafsirkan dan disusun- Kode sumber Java perlu ditransfer ke dalam format bytecode, yang tidak bergantung pada platform target. Instruksi ditafsirkan oleh Java Virtual Machine (JVM). JVM yang berisi apa yang disebut hotspot-compiler memiliki potensi untuk menerjemahkan instruksi bytecode kritis kinerja ke dalam instruksi kode asli.
  • Manajemen memori otomatis- Java adalah platform yang berhasil mengelola alokasi memori dan de-alokasi untuk membuat objek baru. Program tidak memiliki akses langsung ke memori. Dan sebagai hasilnya, pengumpul sampah secara otomatis menghapus objek yang tidak ada penunjuk aktif.

Menjadi pengembang jQuery, saya telah banyak bekerja dengan Java 8 selama beberapa tahun terakhir, baik itu aplikasi baru atau memigrasi yang sudah ada. Dan saya kira ini waktu yang tepat untuk mencatat beberapa praktik terbaik yang saya temukan cukup berguna. Posting blog ini membahas aliran, saya.e. Operasi terpenting yang dapat dilakukan dalam kode Anda. Metode default, lambdas dan streaming dan menggunakan opsional dan seterusnya untuk mewakili nilai yang tidak ada.

Metode default di antarmuka

Kemampuan untuk menentukan implementasi metode default dalam antarmuka ditambahkan oleh JDK 8 sehingga koleksi dapat berkembang tanpa melanggar kompatibilitas ke belakang. Di versi sebelumnya, kami tidak dapat menambahkan metode apa pun untuk berinteraksi tanpa semua subkelas yang mengimplementasikan. Dengan bantuan versi 1.8, kita dapat menandai metode dengan kata kunci default dan menyediakan tubuh metode tepat di antarmuka.
Di bawah yang disebutkan adalah contoh antarmuka yang disebut debuggable. Ini dimaksudkan untuk menunjukkan kepada Anda bahwa bagaimana API refleksi digunakan untuk mendapatkan akses ke bidang objek dan memberikan implementasi ToString () yang layak untuk objek yang mencetak nilai bidang.

antarmuka publik debuggable default string debug () stringBuilder sb = new stringBuilder (ini.getClass ().getName ()); SB.menambahkan(" [ "); Bidang [] bidang = ini.getClass ().getDecledFields (); untuk (bidang f: bidang) f.setAccessible (true); Coba SB.Tambahkan (f.getName () + "=" + f.dapatkan (ini)); SB.menambahkan(", "); Catch (IllegalArgumentException | IllegalAccessException e) lempar runtimeException baru (e); SB.menambahkan("]"); Kembalikan SB.tostring ();
123456789101112131415161718antarmuka publik debuggable default string debug () stringBuilder sb = new stringBuilder (ini.getClass ().getName ()); SB.menambahkan(" [ "); Bidang [] bidang = ini.getClass ().getDecledFields (); untuk (bidang f: bidang) f.setAccessible (true); Coba SB.Tambahkan (f.getName () + "=" + f.dapatkan (ini)); SB.menambahkan(", "); Catch (IllegalArgumentException | IllegalAccessException e) lempar runtimeException baru (e); SB.menambahkan("]"); Kembalikan SB.tostring ();

Lambdas di sungai

Sayangnya, sampai sekarang Java dianggap sebagai bahasa pemrograman yang tepat untuk teknik pemrograman fungsional. Satu -satunya alasan adalah bahwa fungsinya bukan warga negara kelas satu dalam bahasa tersebut. Faktanya, tidak ada cara yang rapi dan diterima untuk merujuk ke blok kode dengan nama dan meneruskannya. Akibatnya, Lambdas membawa perubahan drastis. Saat ini, referensi metode dapat digunakan untuk lebih baik atau lebih buruk, untuk merujuk pada metode tertentu, menetapkan fungsi ke dalam variabel, meneruskannya dan menikmati semua tunjangan penawaran paradigma pemrograman fungsional.
Dasar -dasarnya cukup sederhana, sekelompok antarmuka dibuat. Misalnya:

// membutuhkan waktu lama, mengembalikan fungsi string f = l -> l.tostring (); // Membawa Tidak Ada Yang Memberi Anda Pemasok Thread S = Thread :: CurrentThread; // mengambil string sebagai konsumen parameter c = sistem.keluar :: println;
12345678// membutuhkan waktu lama, mengembalikan fungsi string f = l -> l.tostring (); // Membawa Tidak Ada Yang Memberi Anda ThreadsSupplier S = Thread :: CurrentThread; // mengambil string sebagai konsumen parameter c = sistem.keluar :: println;

Peringatan yang disebutkan di sini adalah kode yang digunakan untuk mengelola jika Anda membiarkan fungsi anonim tumbuh di atas ambang batas tertentu. Kode menentukan aliran data. Yang perlu Anda lakukan hanyalah mencolokkan fungsionalitas spesifik terutama yang ingin Anda jalankan ke dalam kerangka kerja.

Pendeknya

Saat bekerja dengan aliran, selalu ingat Anda perlu mengubah nilai yang terkandung dalam aliran dengan fungsi yang Anda berikan misalnya menggunakan sintaks lambda. Beberapa takeaways:

  • Dalam hal, jika kode tidak menentukan kerangka kerja untuk aliran data ke mana Anda mencolokkan fungsi Anda, maka perlu dipertimbangkan untuk menghindari melipatgandakan lambdas. Kelas yang tepat mungkin lebih mudah dibaca.
  • Jika lambda Anda tumbuh di atas 3 baris kode - belahlah: baik menjadi beberapa doa peta () yang memproses data dalam langkah -langkah atau mengekstrak metode dan menggunakan sintaks referensi metode untuk merujuknya.
  • Jangan Menetapkan Lambdas dan Fungsi ke Bidang Objek. Lambdas mewakili fungsi dan itu paling baik disajikan murni.