Dapatkan sedikit lebih dekat dengan Java 8

Dapatkan sedikit lebih dekat dengan Java 8

Java, bahasa pengaturcaraan yang dicipta oleh James Gosling pada tahun 1991 dimaksudkan untuk menulis program yang dapat dijalankan di pelbagai sistem operasi. Oracle kini mempunyai keahlian untuk Java dan meneruskan projek itu atas nama OpenJDK. Sepanjang masa beberapa versi Java yang dipertingkatkan baru telah dikeluarkan di mana yang sekarang adalah 1.8 Dikenali sebagai Java 8.

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

Bahasa ini direka bentuk menggabungkan sifat -sifat ini:

  • Platform bebas- Program ini menggunakan mesin maya Java sebagai abstraksi dan tidak mengakses sistem operasi secara langsung. Yang menjadikan program Java sangat mudah alih.
  • Pengaturcaraan berorientasikan objek- Selain daripada jenis data primitif, semua elemen di Java boleh dianggap sebagai objek.
  • Bahasa pengaturcaraan yang sangat menaip- Ya! Java adalah bahasa pengaturcaraan yang sangat ditaip. Sebagai contoh, jenis pembolehubah yang digunakan mesti ditentukan sebelumnya dan penukaran kepada objek lain menjadi sangat ketat. Ini mesti dilakukan dalam hal pengaturcara.
  • Bahasa ditafsirkan dan disusun- Kod sumber Java perlu dipindahkan ke dalam format bytecode, yang tidak bergantung pada platform sasaran. Arahannya ditafsirkan oleh mesin maya Java (JVM). JVM yang mengandungi yang disebut hotspot-compiler berpotensi untuk menterjemahkan arahan bytecode kritikal prestasi ke dalam arahan kod asli.
  • Pengurusan Memori Automatik- Java adalah platform yang berjaya menguruskan peruntukan memori dan peruntukan untuk membuat objek baru. Program ini tidak mempunyai akses langsung ke memori. Dan sebagai hasilnya, pemungut sampah secara automatik memadamkan objek yang tidak ada penunjuk aktif.

Menjadi pemaju jQuery, saya banyak bekerja dengan Java 8 sejak beberapa tahun kebelakangan ini, sama ada aplikasi baru atau berpindah yang ada. Dan saya rasa ia adalah masa yang tepat untuk menulis beberapa amalan terbaik yang saya dapati cukup berguna. Catatan blog ini membincangkan aliran, i.e. Operasi yang paling penting yang boleh dilakukan dalam kod anda. Kaedah lalai, lambdas dan sungai dan menggunakan pilihan dan sebagainya untuk mewakili nilai yang tidak hadir.

Kaedah lalai di antara muka

Keupayaan untuk menentukan pelaksanaan kaedah lalai di antara muka telah ditambah oleh JDK 8 supaya koleksi dapat berkembang tanpa melanggar keserasian ke belakang. Dalam versi terdahulu, kami tidak dapat menambahkan sebarang kaedah untuk bersambung tanpa semua subkelas pelaksanaan. Dengan bantuan versi 1.8, kita boleh menandakan kaedah dengan kata kunci lalai dan memberikan badan kaedah yang betul di antara muka.
Di bawah yang disebutkan adalah contoh antara muka yang disebut debuggable. Ini dimaksudkan untuk menunjukkan kepada anda bagaimana API Refleksi digunakan untuk mendapatkan akses ke medan objek dan menyediakan pelaksanaan toString () yang baik untuk objek yang mencetak nilai medan.

antara muka awam debuggable lalai string debug () stringbuilder sb = new StringBuilder (ini.GetClass ().getName ()); sb.tambah ("["); Medan [] medan = ini.GetClass ().getDeclaredFields (); untuk (medan f: medan) f.setAccessible (benar); cuba sb.tambah (f.getName () + "=" + f.ambil ini)); sb.tambah (","); tangkapan (IllegalArgumentException | IllegalAccessException e) membuang runtimeException baru (e); sb.tambah ("]"); kembali sb.menjalin();
123456789101112131415161718antara muka awam debuggable lalai string debug () stringbuilder sb = new StringBuilder (ini.GetClass ().getName ()); sb.tambah ("["); Medan [] medan = ini.GetClass ().getDeclaredFields (); untuk (medan f: medan) f.setAccessible (benar); cuba sb.tambah (f.getName () + "=" + f.ambil ini)); sb.tambah (","); tangkapan (IllegalArgumentException | IllegalAccessException e) membuang runtimeException baru (e); sb.tambah ("]"); kembali sb.menjalin();

Lambdas di sungai

Malangnya, sehingga kini Java dianggap sebagai bahasa pengaturcaraan yang sesuai untuk teknik pengaturcaraan berfungsi. Satu -satunya sebab ialah fungsi bukan warga kelas pertama dalam bahasa. Sebenarnya, tidak ada cara yang kemas dan diterima untuk merujuk kepada blok kod dengan nama dan lulus. Akibatnya, Lambdas membawa perubahan drastik. Hari ini, rujukan kaedah boleh digunakan untuk lebih baik atau lebih teruk, untuk merujuk kepada kaedah tertentu, menetapkan fungsi ke dalam pembolehubah, lulus mereka dan nikmati semua faedah yang ditawarkan oleh paradigma pengaturcaraan berfungsi.
Asas -asasnya cukup mudah, sekumpulan antara muka dibuat. Sebagai contoh:

// mengambil panjang, mengembalikan fungsi rentetan f = l -> l.menjalin(); // tidak mengambil apa -apa memberi anda pembekal thread s = thread :: currentthread; // mengambil rentetan sebagai parameter pengguna c = sistem.keluar :: println;
12345678// mengambil masa yang panjang, mengembalikan fungsi rentetan f = l -> l.menjalin(); // tidak mengambil apa -apa memberi anda threadssupplier s = thread :: currentthread; // mengambil rentetan sebagai parameter pengguna c = sistem.keluar :: println;

Kaveat yang disebutkan di sini adalah kod yang digunakan untuk mengurus sekiranya anda membiarkan fungsi tanpa nama tumbuh di ambang tertentu. Kod tersebut menentukan aliran data. Yang perlu anda lakukan hanyalah pasang fungsi khusus terutama yang anda ingin lari ke dalam rangka kerja.

Secara ringkas

Semasa bekerja dengan sungai, selalu ingat anda perlu mengubah nilai yang terkandung dalam aliran dengan fungsi yang anda berikan contohnya menggunakan sintaks lambda. Beberapa pengambilan:

  • Sekiranya, jika kod tidak menentukan rangka kerja untuk aliran data yang anda pasangkan fungsi anda, maka patut dipertimbangkan untuk mengelakkan mengalikan lambdas. Kelas yang betul mungkin lebih mudah dibaca.
  • Sekiranya lambda anda tumbuh melebihi 3 baris kod - berpecahnya: sama ada ke dalam beberapa peta () penyerahan yang memproses data dalam langkah atau mengeluarkan kaedah dan gunakan sintaks rujukan kaedah untuk merujuknya.
  • Jangan berikan lambdas dan fungsi ke bidang objek. Lambdas mewakili fungsi dan yang terbaik dilayan murni.