Может ли кто-нибудь описать в двух словах различия между тремя предложениями закрытия и их текущим состоянием в Java?

Я читаю о замыканиях, которые появятся в Java 7.

И я немного запутался, потому что, с одной стороны, есть много хороших статей, описывающих новые закрытия java. Но с другой стороны было 3 разные спецификации и некоторые статьи просто устарели, т.к. описывают не самое последнее предложение.

Итак, если кто-то отслеживает ход закрытия java с самого начала, пожалуйста, опишите в общих чертах очень кратко все 3 предложения и их текущее состояние.

Еще одна вещь, которая меня интересует в отношении замыканий: существует ли только одна линия разработки или разрабатываются разные версии (например, замыкания от Sun, от Google, от Apache и т. д.)?


person Community    schedule 22.01.2010    source источник
comment
Я тоже в замешательстве. Но поскольку самое большее одно из этих предложений будет реализовано в Java7, лично я просто жду, пока оно не будет решено, и изучаю «победителя»... (stackoverflow.com/questions/116865/)   -  person Andreas Dolk    schedule 22.01.2010
comment
@Andread_D: но, насколько мне известно, по крайней мере одна реализация уже существует. Я не уверен, что эта реализация будет включена в Java 7, но я видел ссылку для ее загрузки.   -  person Roman    schedule 22.01.2010
comment
Три предложения? Там минимум 50.   -  person Tom Hawtin - tackline    schedule 22.01.2010
comment
Я говорю о BGGA, CICE и FCM, которые на самом деле упоминаются чаще всего.   -  person Roman    schedule 22.01.2010
comment
FCM лучше всего изучать, ИМО. Текущее наиболее вероятное предложение не основано ни на одном из других, но очень похоже на FCM.   -  person jsight    schedule 22.01.2010


Ответы (2)


Если я правильно помню

CICE был просто синтаксическим сахаром для упрощения создания анонимных классов таким образом, чтобы это выглядело как замыкание.

BGGA был очень мощным предложением, которое позволяло не только настоящие замыкания, но и синтаксис для определения структур, которые выглядели как новые элементы синтаксиса (также известные как using(Closable){block}).

FCM был дополнительным предложением, которое пыталось стать компромиссом между ними, с предложением полного закрытия, но с лучшим синтаксисом и без некоторых наиболее спорных особенностей BGGA.

Текущее предложение можно найти по адресу http://www.javac.info/closures-v06a.html и http://www.javac.info/closures-v06b.html, где часть A — это простые полные настройки, а часть B — некоторые из более мощных функций, взятых из BGGA.

person ILMTitan    schedule 22.01.2010
comment
Спасибо, я уже видел этот материал, но я не был уверен, что это реально. - person Roman; 23.01.2010
comment
Если возможно, не могли бы вы поделиться кратким примером кода каждого предложения, а также ссылками на предложения? - person Esko; 26.01.2010
comment
Ааа... что могло быть... Эти предложения выглядят намного лучше, чем то, что нам дают в Java 8! Они решат проблемы, которые я описал здесь: stackoverflow.com/a/20177092/1151521 и типы функций! О, чего бы я только не отдал за них! - person Aleksandr Dubinsky; 10.12.2013

Насколько я понимаю, Project Lambda, запланированные изменения для добавления лямбда-выражений (некоторые из которых замыкания, а некоторые замыкания являются лямбда-выражениями) для языка Java, будет смесью старых предложений. На данный момент самая последняя доступная информация по предложению: 0.1 проект спецификации. Чтобы быть в курсе прогресса, вы можете следить за обновлениями Марка Рейнхолда.

person Fabian Steeg    schedule 24.01.2010