Каково текущее состояние замыканий в Java?
Кто-нибудь знает, будут ли замыкания в Java 7?
6 ответов
На Devoxx 2008 Марк Рейнхольд дал понять, что замыкания не будут включены в Java 7.
Подождите! Замыкания будут включены в Java 7. Марк Рейнхольд объявил об этом аннулировании на Devoxx 2009.
Страхуй это! Замыкания (лямбда-выражения) были отложены до Java 8. Следуйте Project Lambda (JSR 335) для получения дополнительной информации.
Он неизвестен до тех пор, пока не будет создана Java SE 7 JSR (предположительно, Дэнни Кауард) и не сформирована группа экспертов и не выбрано содержимое.
Моя страница Java 7 представляет собой хорошую коллекцию ссылок о Java 7 в целом и содержит ссылки на все предложения замыканий и записи в блоге:
http://tech.puredanger.com/java7
И я веду блог о ссылках на Java 7, где вы можете найти ссылки на замыкания и другие материалы по адресу:
И, возможно, вам также будет интересен мой блог в блоге "Предсказания по Java 7", если вы хотите услышать мое мнение: http://tech.puredanger.com/2008/08/02/java7-prediction-update/
ОБНОВЛЕНИЕ: Марк Рейнхольд заявил в Devoxx в декабре 2008 года, что замыкания НЕ будут включены в Java 7 из-за отсутствия единого мнения о том, как реализовать.
В настоящее время существует несколько конкурирующих предложений, BGGA, CICE и других. К сожалению, горячие дебаты по поводу лучшего подхода остаются. В результате на данном этапе маловероятно, что замыкания превратятся в Java 7 из-за консервативного характера процесса принятия.
Ключевая проблема здесь заключается в том, что может быть очень трудно добавить функции к уже существующему языку без непреднамеренного внесения значительной сложности. Это был опыт работы с Generics в Java 1.5, и многие обеспокоены тем, что это будет осложнено введением замыканий.
Мой совет: если вы действительно хотите иметь доступ к современным языковым функциям, таким как замыкания, но хотите оставаться в рамках экосистемы Java, вам стоит взглянуть на Scala.
Groovy - лучшая альтернатива Java, которую я когда-либо видел, которая включает в себя функции динамических языков, включая замыкания, расширение классов во время выполнения и т. Д. Хотя Ruby имеет небольшое преимущество в разработке, я бы сказал, что Groovy компилируется в байт Java. -кодировать и взаимодействовать с Java без ЛЮБОГО кода интерфейса - это огромный плюс, который нельзя игнорировать.
Закрытие не будет обязательно присутствовать в Java 7, но если вы ищете более легкое решение для закрытия в Java прямо сейчас, посмотрите, как они были реализованы в библиотеке lambdaj: