Java 7 und die Closures

mschlegel

Erfahrenes Mitglied
Hab mich gerade mal ein wenig bezüglich Java 7 umgeschaut und so wie es ausschaut ist mit einem Release nicht vor 2010 zu rechnen.

Die letzte News die ich finden konnte stammt vom Januar und da awr die Rede davon dass es die Closures nicht geben wird, aber eventuell später. Auf dieses statement gab es dann zig Blogeinträge wie schrecklich dass doch ist (einer meinte sogar dass dadurch Java tot sei).

Ich hab mir also bei Wikipedia die Definition mal angeschaut und mir kommt es so vor dass die Closures lediglich eine Möglichkeit sind schneller, aber wensentlich unsauberer, zu programmieren. Was ist denn daran so schlecht dass Variablen nur in ihrem Block/Scope gültig sind. Wenn ich mir ein Programm vorstelle dass exzesieven Gebrauch von Closures macht, dann möchte ich dieses nicht warten...da verliert man doch total den Überblick. Und die Wartbarkeit von Code ist meiner Meinung nach das allerwichtigste und nicht wie schnell ich einen Prototypen hinklatschen kann Oder hab ich da was falsch verstanden? Meine Design Patterns sind mir da lieber ;)
 
Willkommen in der Welt der Closuresdiskussionen. ;) Ich weiß nicht ob du da etwas falsch aufgefasst hast, aber Closures sind sind im Endeffekt Funktionspointer. Sprich, du kannst eine Funktion in eine Variable packen. Das ist - wenn man es sehr stark vereinfacht - natürlich auch mit Interfaces und anonymen Klassen machbar, allerdings wird sowas sehr schnell umständlich und vor allem verbose. Vor allem Operationen auf collectionartigen Datenstrukturen könnten so viel einfacher werden (also z.B. das komplette Collections API). Hiher mal was in Pseudocode:

Java:
Collection<Foo> foos;
Collection<Foo> filtered = foo.filter(each => { each.getX() > 5; });

filtered enthält hier alle Elemente Foo, für die getX() größer 5 ist. Sowas schreibst du halt sonst immer mit ner for-each Schleife. Das is verbose und bolierplate ergo mies ;). Als Javaentwickler gewöhnt man sich zwar dran, aber einige Sprachen sind da echt Ausdrucksstärker.

Was das Thema angeht, das Closures nicht in Java 7 sein werden, bin ich eher konservativ. Es gibt mit Groovy und Scala zwei populäre Sprachen auf der JVM, die Closures anbieten. D.h. wer unbedingt scharf drauf ist, Closures zu benutzen, kann das jetzt und heute und produktiv.

D.h. da wird ein bischen mehr Welle gemacht als eigentlich notwendig, wie bei vielen anderen Dingen in der JCP Welt. Ich hab (auch beim lesen der Mailingliste zum Modularity JSR) den Eindruck, dass mit dem OpenSource werden von Java als allererstes alle unnötig schlechten Verhaltensweisen, unter denen viele andere OpenSource leiden, ziemlich schnell Einzug gehalten haben. Aber wer weiß, vielleicht gabs die schon vorher - sie waren nur nicht öffentlich ;).

REINHAUN!
 
Ok, sogesehen kann ich das dann nachvollziehen.

Danke für die objektive Antwort. Würde dir gern wieder nen + verpassen aber das Forum lässt mich nicht (muss erst andere Bewerten) ;)
 
Zurück