Это одна из самых обсуждаемых функций, запланированных для Java: замыкания. Многие из нас жаждали их. Некоторые из нас (включая меня) стали немного нетерпеливы и обратились к языкам сценариев, чтобы заполнить пустоту.
Но как только в Java наконец появятся замыкания: как они повлияют на сообщество Java? Будет ли продвижение языков сценариев, предназначенных для ВМ, замедляться до ползания, оставаться неизменным или ускоряться? Будут ли люди переходить к новому синтаксису замыкания, превращая таким образом базовые коды Java в более функционально структурированные реализации? Мы увидим только замыкания в Java? Как это повлияет на поддержку инструмента / IDE? Как насчет производительности? И, наконец, что это будет означать для дальнейшего принятия Java как языка по сравнению с другими языками, популярность которых растет?
Чтобы предоставить пример одной из последних предлагаемых синтаксических спецификаций Java Closure:
public interface StringOperation {
String invoke(String s);
}
// ...
(new StringOperation() {
public invoke(String s) {
new StringBuilder(s).reverse().toString();
}
}).invoke("abcd");
станет ...
String reversed = {
String s =>
new StringBuilder(s).reverse().toString()
}.invoke("abcd");
[источник: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]
Ответы:
Я думаю, что многим «обычным» Java-разработчикам потребуется время, чтобы разобраться с этой концепцией, если они еще не знакомы с ней, но постепенно она упростит регулярное использование Java, что нам всем выгодно. Было бы замечательно, если бы оно охватывалось так же быстро, как и дженерики, когда появилась Java 5.
Я полагаю, что это не повлияет на языки сценариев, ориентированные на виртуальные машины, так как это лишь одно преимущество использования тех, у кого они есть.
источник
Есть обычный цикл, который идет с любым новым блестящим инструментом:
Все это занимает пару лет, чтобы перебрать. Это было верно для аннотаций и обобщений, и это будет верно и для замыканий.
Влияние на язык сценариев:
источник
Те, кому нравится многопоточное программирование, смогут встраивать неизменяемые структуры данных в Java и обрабатывать их более похожим на шутку образом без необходимости прибегать к несеквестерам из-за несоответствия языкового импеданса между Java и Lisp.
Те, кто не использует (или не понимает) ничего из вышеперечисленного, смогут делать то же, что и раньше.
источник
Я подозреваю, что люди, знакомые с замыканиями, начнут использовать их в коде приложения. Некоторое время они будут избегать их в библиотеках, чтобы поддерживать обратную совместимость со старыми версиями Java.
Программисты, которые не знакомы с замыканиями из других языков, будут медленнее внедрять их в Java.
Обобщения были приняты быстро, когда они были введены в Java частично из-за всех предупреждений, которые появлялись при обновлении, и из-за их включения в SDK. Это не будет верно с замыканиями. Будет сложнее найти доказательства их существования, поэтому использовать их будут только те, кто хочет их использовать.
Я не думаю, что разработка других языков сценариев JVM остановится. Эти языки имеют импульс и много функций, кроме замыканий. Однако мы можем видеть менее новые языки JVM, поскольку замыкания были основным стимулом для создания новых языков JVM.
источник