Es ist eine der am meisten diskutierten Funktionen, die für Java geplant sind: Closures. Viele von uns haben sich nach ihnen gesehnt. Einige von uns (einschließlich ich) sind etwas ungeduldig geworden und haben sich Skriptsprachen zugewandt, um die Lücke zu füllen.
Aber sobald die Schließungen in Java angekommen sind: Wie werden sie sich auf die Java-Community auswirken? Wird die Weiterentwicklung von VM-zielgerichteten Skriptsprachen langsamer werden, gleich bleiben oder sich beschleunigen? Werden die Leute auf die neue Closure-Syntax umsteigen und so Java-Codebasen rundum in funktional strukturierte Implementierungen verwandeln? Werden wir nur Schließungen sehen, die überall in Java verteilt sind? Welche Auswirkungen hat dies auf die Tool- / IDE-Unterstützung? Wie wäre es mit Leistung? Und schließlich, was bedeutet es für Javas fortgesetzte Akzeptanz als Sprache im Vergleich zu anderen Sprachen, die immer beliebter werden?
So geben Sie ein Beispiel für eine der neuesten vorgeschlagenen Java Closure-Syntaxspezifikationen:
public interface StringOperation {
String invoke(String s);
}
// ...
(new StringOperation() {
public invoke(String s) {
new StringBuilder(s).reverse().toString();
}
}).invoke("abcd");
würde werden ...
String reversed = {
String s =>
new StringBuilder(s).reverse().toString()
}.invoke("abcd");
[Quelle: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]
Antworten:
Ich denke, es wird einige Zeit dauern, bis sich viele "normale" Java-Entwickler mit diesem Konzept vertraut gemacht haben, wenn sie noch nicht damit vertraut sind, aber nach und nach wird es zu unserem Vorteil zu einer regelmäßigen Verwendung von Java. Es wäre großartig, wenn es so schnell angenommen würde wie Generika, als Java 5 eintraf.
Ich kann mir vorstellen, dass dies keine Auswirkungen auf VM-gezielte Skriptsprachen hat, da dies nur ein Vorteil der Verwendung derjenigen ist, die über diese verfügen.
quelle
Es gibt einen üblichen Zyklus, der zu jedem glänzenden neuen Werkzeug passt:
Das alles dauert ein paar Jahre. Dies galt für Anmerkungen und Generika, und dies gilt auch für Schließungen.
Auswirkungen auf die Leute in der Skriptsprache:
quelle
Diejenigen, die Multithread-Programmierung mögen, können unveränderliche Datenstrukturen in Java einbetten und sie lisp-ähnlicher behandeln, ohne auf Nicht-Sequiter zurückgreifen zu müssen, da die Sprachimpedanz zwischen Java und Lisp nicht übereinstimmt.
Diejenigen, die keine der oben genannten Methoden verwenden (oder verstehen), können die Dinge genauso tun wie zuvor.
quelle
Ich vermute, dass Personen, die mit Schließungen vertraut sind, diese im Anwendungscode verwenden werden. Sie werden sie für eine Weile in Bibliotheken meiden, um die Abwärtskompatibilität mit älteren Java-Versionen aufrechtzuerhalten.
Programmierer, die mit Schließungen aus anderen Sprachen nicht vertraut sind, werden sie nur langsam in Java übernehmen.
Generika wurden schnell eingeführt, als sie in Java eingeführt wurden, teilweise aufgrund all der Warnungen, die beim Upgrade angezeigt wurden, und aufgrund ihrer Integration in das SDK. Dies gilt nicht für Verschlüsse. Es wird schwieriger sein, Beweise für ihre Existenz zu finden, daher werden sie nur von denen verwendet, die sie verwenden möchten.
Ich denke nicht, dass die Entwicklung anderer JVM-Skriptsprachen aufhören wird. Diese Sprachen haben neben Schließungen auch Schwung und viele Funktionen. Möglicherweise sehen wir jedoch weniger neue JVM-Sprachen, da Schließungen der Hauptimpuls für die Erstellung neuer JVM-Sprachen waren.
quelle