C'est l'une des fonctionnalités les plus discutées prévues pour Java: les fermetures. Beaucoup d'entre nous les attendaient. Certains d'entre nous (dont moi) sont devenus un peu impatients et se sont tournés vers les langages de script pour combler le vide.
Mais, une fois que les fermetures sont finalement arrivées à Java: comment affecteront-elles la communauté Java? L'avancement des langages de script ciblés par VM ralentira-t-il pour une analyse, restera-t-il le même ou accélérera-t-il? Les gens vont-ils affluer vers la nouvelle syntaxe de fermeture, transformant ainsi les bases de code Java tout autour en implémentations plus structurées? Verrons-nous uniquement des fermetures en Java? Quel sera l'effet sur le support des outils / IDE? Et la performance? Et enfin, qu'est-ce que cela signifie pour l'adoption continue de Java, en tant que langage, par rapport à d'autres langages qui gagnent en popularité?
Pour fournir un exemple de l'une des dernières spécifications de syntaxe Java Closure proposées:
public interface StringOperation {
String invoke(String s);
}
// ...
(new StringOperation() {
public invoke(String s) {
new StringBuilder(s).reverse().toString();
}
}).invoke("abcd");
deviendrait ...
String reversed = {
String s =>
new StringBuilder(s).reverse().toString()
}.invoke("abcd");
[source: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]