Каково текущее состояние закрытия Java?

Кто-нибудь знает, будут ли закрыты в Java 7?

Ответ 1

В Devoxx 2008, Марк Рейнхолд дал понять, что закрытие не будет включено в Java 7.


Подождите! Закрытие будет включено в Java 7. Марк Рейнхолд объявил об этом развороте в Devoxx 2009.


Скажи, что! Закрытие (лямбда-выражения) отложено до Java 8. Следуйте Project Lambda (JSR 335) для получения дополнительной информации.

Ответ 2

Неизвестно до создания Java SE 7 JSR (предположительно, Дэнни Коварда), и создается группа экспертов и выбранное содержимое.

Моя страница Java 7 - это хорошая коллекция ссылок о Java 7 в целом и содержит ссылки на все предложения по закрытию и записи в блогах:

http://tech.puredanger.com/java7#closures

И я поддерживаю блог Java 7 link, где вы можете найти ссылки на закрытие и прочее:

http://java7.tumblr.com

И вы можете найти мое сообщение в блоге Java 7 Prediction, чтобы быть интересным, если вы хотите, чтобы мои мнения: http://tech.puredanger.com/2008/08/02/java7-prediction-update/

ОБНОВЛЕНИЕ: Марк Рейнхолд заявил в Devoxx в декабре 08, что закрытие НЕ будет включено в Java 7 из-за отсутствия консенсуса относительно того, как реализовать.

Ответ 3

В настоящее время существует несколько конкурирующих предложений BGGA, CICE, среди прочих. К сожалению, жаркие споры остаются за лучшим подходом. В результате на данный момент маловероятно, что замыкания превратятся в Java 7 из-за консервативного характера процесса принятия.

Ключевая проблема заключается в том, что может быть очень сложно добавить функции на уже существующий язык без непреднамеренного введения значительной сложности. Это был опыт работы с Generics в Java 1.5, и многие обеспокоены тем, что он будет усугублен введением замыканий.

Мой совет: если вы действительно хотите иметь доступ к современным языковым функциям, таким как закрытие, но хотите остаться в Java ecosysteym, вы должны взглянуть на Scala.

Ответ 4

Groovy - лучшая альтернатива Java, которую я видел, которая включает в себя функции динамических языков, включая закрытие, расширение класса времени выполнения и т.д. Хотя Ruby имеет небольшое преимущество в дизайне imho, я должен сказать, что Groovy компилируется в байт-код Java и взаимодействует с Java без ЛЮБОГО кода интерфейса - огромный плюс, который нельзя игнорировать.

http://groovy.codehaus.org

Ответ 5

По-видимому, Closures не будет в Java 7. См. this и this.

Ответ 6

Закрытие не будет окончательно присутствовать в Java 7, но если вы ищете более легкое решение для закрытия в java прямо сейчас, посмотрите, как они были реализованы в библиотеке lambdaj:

http://code.google.com/p/lambdaj/wiki/Closures