Каково текущее состояние замыканий в 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, где вы можете найти ссылки на замыкания и другие материалы по адресу:

http://java7.tumblr.com/

И, возможно, вам также будет интересен мой блог в блоге "Предсказания по 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 без ЛЮБОГО кода интерфейса - это огромный плюс, который нельзя игнорировать.

http://groovy.codehaus.org/

Очевидно, что замыкания не будут в Java 7. Смотрите это и это.

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

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

Другие вопросы по тегам