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

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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