Может ли кто-нибудь описать в двух словах различия между 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 черновик спецификации. Чтобы быть в курсе прогресса, вы можете следить за обновлениями Марк Рейнгольд.