Ini adalah salah satu fitur yang paling banyak dibicarakan yang direncanakan untuk Java: Penutupan. Banyak dari kita telah merindukan mereka. Beberapa dari kita (termasuk saya) telah menjadi sedikit tidak sabar dan beralih ke bahasa scripting untuk mengisi kekosongan.
Tetapi, begitu penutupan akhirnya tiba di Jawa: bagaimana pengaruhnya terhadap Komunitas Jawa? Apakah kemajuan bahasa scripting VM-ditargetkan lambat untuk merangkak, tetap sama, atau acclerate? Akankah orang berbondong-bondong ke sintaks penutupan baru, sehingga mengubah basis kode Java all-around menjadi implementasi yang lebih terstruktur secara fungsional? Apakah kita hanya akan melihat penutupan di seluruh Jawa? Apa efeknya pada dukungan alat / IDE? Bagaimana dengan kinerja? Dan akhirnya, apa artinya bagi adopsi lanjutan Java, sebagai bahasa, dibandingkan dengan bahasa lain yang semakin populer?
Untuk memberikan contoh salah satu spesifikasi sintaksis Java Closure yang diusulkan terbaru:
public interface StringOperation {
String invoke(String s);
}
// ...
(new StringOperation() {
public invoke(String s) {
new StringBuilder(s).reverse().toString();
}
}).invoke("abcd");
akan menjadi ...
String reversed = {
String s =>
new StringBuilder(s).reverse().toString()
}.invoke("abcd");
[sumber: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]
Jawaban:
Saya pikir ini akan memakan waktu bagi banyak pengembang Java 'biasa' untuk memahami konsep ini jika mereka belum terbiasa dengannya, tetapi lambat laun itu akan memudahkan penggunaan Java biasa, untuk semua manfaat kita. Akan lebih bagus jika dipeluk secepat generik ketika Java 5 tiba.
Saya membayangkan itu tidak akan mempengaruhi bahasa scripting yang ditargetkan VM sebanyak itu hanya satu keuntungan dari menggunakan yang memilikinya.
sumber
Ada siklus yang biasa terjadi dengan alat baru yang mengkilap:
Ini semua membutuhkan beberapa tahun untuk siklus. Itu berlaku untuk anotasi dan obat generik, dan itu juga berlaku untuk penutupan.
Dampak pada orang bahasa scripting:
sumber
Mereka yang menyukai pemrograman multi-threaded akan dapat menanamkan struktur data yang tidak dapat diubah di Jawa dan menanganinya dengan cara yang lebih mirip-lisp tanpa perlu menggunakan non-sequiters karena ketidakcocokan impedansi bahasa antara Jawa dan Lisp.
Mereka yang tidak menggunakan (atau mengerti) salah satu di atas akan dapat melakukan hal-hal seperti yang mereka lakukan sebelumnya.
sumber
Saya menduga bahwa orang yang akrab dengan penutupan akan mulai menggunakannya dalam kode aplikasi. Mereka akan menghindarinya di perpustakaan untuk sementara waktu untuk menjaga kompatibilitas dengan versi Java yang lebih lama.
Programmer yang tidak terbiasa dengan penutupan dari bahasa lain akan lambat untuk mengadopsi mereka di Jawa.
Generik diadopsi dengan cepat ketika mereka diperkenalkan ke Jawa sebagian karena semua peringatan yang muncul ketika Anda memutakhirkan dan karena penggabungan mereka ke dalam SDK. Ini tidak akan benar dengan penutupan. Akan lebih sulit untuk menemukan bukti keberadaan mereka, jadi hanya mereka yang ingin menggunakannya yang akan menggunakannya.
Saya tidak berpikir bahwa pengembangan bahasa scripting JVM lainnya akan berhenti. Bahasa-bahasa tersebut memiliki momentum dan banyak fitur selain penutupan. Namun kita mungkin melihat lebih sedikit bahasa JVM baru karena penutupan adalah dorongan utama untuk membuat bahasa JVM baru.
sumber