Semua yang Anda dengar tentang Java 8 berpusat di sekitar Lambda Expressions. Tapi itu hanya bagian dari Java 8. Java 8 memiliki banyak fitur baru - beberapa kelas dan sintaks baru yang kuat, dan hal -hal lain yang seharusnya dimiliki sejak awal.
Saya akan memperkenalkan 10 fitur penting yang menurut saya layak diketahui. Setidaknya satu atau dua dari mereka juga akan ada untuk Anda coba, jadi mari kita mulai!
1. Metode default
Fitur yang baru ditambahkan dari bahasa Java adalah Anda dapat menambahkan badan metode (disebut metode default) ke metode antarmuka. Metode ini akan ditambahkan secara implisit ke kelas yang mengimplementasikan antarmuka ini.
Ini memungkinkan Anda untuk menambahkan fitur baru ke perpustakaan yang ada tanpa melanggar kode Anda. Ini jelas merupakan peningkatan. Tetapi di sisi lain, ini mengaburkan batas antara antarmuka dan kelas, karena antarmuka digunakan untuk mendefinisikan kontrak, sementara kelas digunakan untuk mendefinisikan implementasi konkret. Di sisi positifnya, itu membuat antarmuka lebih pintar dengan cara yang elegan dan menghindari duplikasi dan perluasan perpustakaan. Tetapi di sisi yang buruk, kita akan melihat nanti bahwa metode antarmuka menanyai ini dan mengubahnya menjadi kelas konkret. Demam….
2. Pengakhiran proses
Memulai proses eksternal adalah setengah dari apa yang Anda lakukan - ketika proses macet, hang, atau mengkonsumsi 100% CPU, Anda harus kembali dan men -debug. Kelas proses sekarang dilengkapi dengan dua metode baru untuk membantu Anda mengendalikan proses yang tidak dapat diatur.
Yang pertama adalah IsAlive (), yang memungkinkan Anda untuk memeriksa apakah prosesnya masih berjalan tanpa menunggu proses menyelesaikannya. Metode kedua yang lebih kuat adalah Destroyforcible (), yang memungkinkan Anda untuk memaksa proses membunuh yang diatur waktunya atau tidak lagi diperlukan.
3. Stampedlocks
Ada sesuatu yang menyenangkan sekarang. Tidak ada yang suka menyinkronkan kode. Ini adalah penyebab untuk mengurangi throughput aplikasi Anda (terutama aplikasi yang dapat diskalakan), atau lebih menyebabkan aplikasi menggantung. Namun, pada titik tertentu Anda tidak punya pilihan.
Ada banyak cara untuk membatasi akses ke sumber daya kritis secara sinkron multithread. Yang paling terkenal dari ini adalah kunci baca-tulis (ReadWritelock) dan implementasi yang terkait dengannya. Ini mengurangi persaingan sumber daya dengan memungkinkan banyak utas untuk mengakses sumber daya yang sama tetapi memblokir utas yang mengoperasikan sumber daya. Ini kedengarannya bagus secara teori, tetapi pada kenyataannya kunci ini cukup lambat, terutama ketika ada sejumlah besar utas tulis.
Catatan: Kunci Baca-Baca membagi pengunjung sumber daya menjadi dua kategori: pembaca dan penulis. Pembaca melakukan operasi hanya baca pada sumber daya, dan penulis dapat mengoperasikan sumber daya.
Java 8 memperkenalkan kunci baca-tulisan baru yang disebut Stampedlock. Kunci ini tidak hanya lebih cepat, tetapi juga menyediakan serangkaian kunci optimisme yang kuat, yang melaluinya Anda dapat memperoleh kunci pembaca dengan biaya minimum, dan bahkan tidak ingin operasi menulis selama pemilihan. Setelah pilihan selesai, Anda dapat meminta kunci untuk melihat apakah ada operasi tulis selama pemilihan, dalam hal ini Anda dapat memilih apakah akan mencoba lagi, memperbarui kunci atau menyerah.
Kunci ini adalah alat yang sangat kuat dan membutuhkan artikel khusus untuk menggambarkannya. Saya sangat senang dengan hal baru ini sehingga saya pusing dan bagus!
Untuk detail lebih lanjut, silakan merujuk di sini
4. Adders bersamaan
Ini adalah bayi kecil lain bagi mereka yang bekerja di aplikasi multithreaded. Ini adalah API baru yang sederhana dan efisien untuk penghitung multithreaded, yang lebih cepat daripada menggunakan AtomicInteger. Sangat keren!
5. Nilai opsional
Oh, Null Pointer, mimpi buruk untuk semua pengembang Java. Sejak awal (atau setidaknya pada tahun 1965) itu mungkin pengecualian paling populer.
Menggambar dari skala dan hashell, Java 8 memiliki template baru yang disebut opsional untuk merangkum referensi yang mungkin nol. Ini sama sekali bukan peluru perak untuk mengakhiri nol, ini adalah cara untuk membiarkan perancang API menunjukkan dari tingkat kode (daripada tingkat dokumen) bahwa nilai nol dapat diteruskan ke dalam metode atau dikembalikan dari metode untuk menyiapkan penelepon untuk nilai nol. Oleh karena itu, ini hanya dapat bekerja di bawah API baru, dan dengan asumsi penelepon tidak membiarkan referensi keluar dari enkapsulasi yang menghasilkan dereferensi yang tidak aman.
Saya harus mengatakan saya sangat bertentangan dengan fitur ini. Di satu sisi, ada masalah besar dengan nol, jadi saya cenderung melakukan semuanya dengan baik sebelum nol terjadi. Tetapi di sisi lain, saya ragu itu akan berhasil. Ini karena menggunakan opsional membutuhkan upaya konstan dari seluruh perusahaan, tetapi tidak memiliki nilai langsung. Kecuali itu menentukan, kemungkinan akan ditinggalkan.
Untuk informasi lebih lanjut tentang opsional, silakan klik di sini
6. Anotasi apapun
Peningkatan bahasa Java kecil lainnya adalah bahwa anotasi sekarang dapat ditambahkan ke hampir semua hal dalam kode Anda. Di masa lalu, anotasi hanya dapat ditambahkan ke kelas atau deklarasi metode. Anotasi menggunakan Java 8 dapat ditambahkan ke deklarasi variabel dan parameter, tidak hanya ketika memberikan nilai ke jenis yang ditentukan, tetapi bahkan ketika mengalokasikan ruang ke objek baru. Ini adalah bagian dari membuat bahasa Java lebih ramah dan fokus (bersama dengan alat dokumentasi Java dan peningkatan API) melalui analisis statis dan alat penyihir seperti FindBugs. Ini adalah fitur yang hebat, tetapi lebih dari hal seperti Invokedynamic yang diperkenalkan di Java 7, dan nilai sebenarnya adalah apa yang dilakukan masyarakat dengannya.
7. Operasi overflow
Sekarang di sini ada serangkaian metode yang harus dimasukkan dalam perpustakaan inti sejak awal. Salah satu kebiasaan favorit saya adalah men -debug luapan ketika int melebihi 2^32 dan kemudian terus membuat bug terkenal ini secara acak (seperti "Bagaimana saya mendapatkan nilai aneh ini?").
Tidak ada peluru perak kali ini, tetapi ada serangkaian fungsi yang mengoperasikan angka yang melempar pengecualian ketika overflow terjadi dengan cara yang lebih toleran daripada operator standar +/* yang secara implisit menyebabkan overflow .. Jika saya, saya akan mengaturnya sebagai mode default dari JVM, menggunakan fungsi eksplisit yang memungkinkan aritmatika (daripada aritmatika daripada aritmatika (daripada mengoperasikan.
8. Folder Traversal
Isi pohon direktori iterasi telah muncul sangat awal di Google Searches (dalam hal ini Anda mungkin menggunakan Apache.fileutils). Java 8
Menambahkan 10 metode baru untuk file. Favorit saya adalah walk (), yang menciptakan aliran malas (penting untuk sistem file besar) untuk mengulangi
Isi Struktur Direktori.
9. Pembuatan angka acak yang kuat
Bicara hari ini tentang kerentanan kata sandi dan kunci adalah suatu keharusan. Keamanan program adalah masalah yang sulit dan mudah membuat kesalahan. Inilah yang saya suka
Alasan untuk metode SecureRandom.getInstancestrong () baru yang dapat secara otomatis memilih generator nomor acak terkuat di JVM. Itu berkurang
Peluang kegagalan generator atau generator yang lemah diperoleh secara default, menghasilkan kemungkinan bahwa nilai kunci atau enkripsi mudah retak.
10. Tanggal.toinstant ()
Java 8 memperkenalkan API waktu tanggal baru. Karena API yang ada tidak baik, ini cukup dimengerti. Sekarang Joda telah memfokuskan dan menembus Java Date Time API selama bertahun -tahun. Namun, bahkan dengan API baru, masih ada masalah besar - ada banyak kode dan perpustakaan yang menggunakan API lama.
Kita semua tahu bahwa menghadapi masalah ini, jadi apa yang harus kita lakukan?
Karena Java 8 telah melakukan dengan cukup elegan, metode baru toinstant () ditambahkan ke kelas tanggal untuk mengubahnya menjadi API baru. Bahkan menggunakan API tanggal lama (sama untuk masa mendatang), itu akan memungkinkan Anda untuk dengan cepat meningkatkan ke API baru.
Menurut Anda apa artikel tersebut memiliki karakteristik lain yang tidak boleh disebutkan, atau apakah Anda tidak setuju dengan analisis kami? Harap berkomentar kepada kami - ini adalah tujuan posting!
Di atas adalah kompilasi informasi tentang fitur baru Java 8. Kami akan terus menambahkan informasi yang relevan di masa mendatang. Terima kasih atas dukungan Anda untuk situs web ini!