Die c’t, an sich ein starkes Magazin, kommt dieses Mal mit einem peinlichen Artikel über Closures (Lambda-Ausdrücke) in Java 8 daher: Closures in aktuellen Programmiersprachen – c’t-Archiv, 17-2013, Seite 168, c’t – Inhalt 17-2013 – Seite 168. Obwohl die Syntax sehr lange bekannt und festgeklopft ist, basiert der Artikel auf Aufsätzen und Publikationen, die vor Jahren veröffentlicht wurden, namentlich auf http://www.javac.info/closures-v05.html. Der Aufsatz stammt von 2007, ist also fast sieben Jahre alt. Wenn der c’t-Artikel 2007 erschienen wäre, super! Jetzt nur peinlich. Schon September 2011, immerhin fast 2 Jahre her, machte Brian Goetz die C#-Syntax bekannt, was ein Wechsel der Symbole (jetzt -> statt vor Jahren =>) bedeutete. Auch Implementierungsdetails sind völlig anders und inkorrekt sagt der Beitrag:
Intern erzeugt der Compiler draus eine Interface und eine anonyme Klasse mit einer einzigen Funktion […]
Nein, das macht der Compiler natürlich nicht. Erst einmal gibt es in Java keine “Funktionen”, sondern nur Methoden, und dann nutzt der Compiler das in Java 7 eingeführte Invoke-Dynamic.
Der nächste Fehler im Artikel betrifft try-mit- Ressourcen, was in Java 7 schon längst implementiert wurde.
ich würde normalerweise nicht darauf hinweisen, aber pikanterweise ist der artikel selbst auch nicht ganz faktisch korrekt: 2007 ist derzeit ( stand 2013 ) noch keine 7 jahre her.
Das Wörtchen „fast“ fehlte, danke Bernd!