Keine Closures in Java 7 (?)

Status
Nicht offen für weitere Antworten.

tfa

Top Contributor
Wie es aussieht, wird es in Java doch keine Closures geben. Diese Info (Gerücht?) geistert jedenfalls gerade durch diverse Blogs und Foren. Eine offizielle Quelle habe leider nicht finden können.

http://www.dzone.com/links/no_closures_in_java_7.html

Ein bisschen Schade wär es schon, aber der Untergang der Welt ist das auch nicht. Man kann ja immer noch Groovy benutzen.
 

Landei

Top Contributor
Das Gerücht scheint zu stimmen. Eigentlich voll daneben bei *drei* funktionierenden Varianten (incl. Implementierungen).

Ich denke, diese Entscheidung wird Java über kurz oder lang den Todesstoß versetzen. Closures mögen in einer Sprache wie Java nur häßlich zu implentieren sein, aber ohne sie lassen sich manche Dinge einfach nicht realisieren. Bei den Generics ist es ähnlich: Es ist schweinekompliziert, gute generische Klassen zu schreiben, aber kinderleicht, gut geschriebene generische Klassen zu *benutzen*

Ich benutze Closures inzwischen andauernd (und zwar in einer statisch getypten Sprache, ratet mal welche), und staune, wie ich jemals ohne auskommen konnte. Ohne Closures ist Java heutzutage einfach nicht "konkurrenzfähig", und die kommende Multicore-Revolution macht das Ganze noch viel akuter. C#, Groovy, Boo, Fan, Scala und Co. laufen Java mit Meilensteifeln davon. Schade.
 
M

maki

Gast
Worauf Landei wohl hinauswill ist die Tatsache, dass man mit Closures Aufgaben parrallelisieren kann (zB. für MultiCore Prozessoren), ohne zusätzlichen Aufwand.

So gesehen ist es natürlich ein riesen Nachteil keine zu haben.
 

tfa

Top Contributor
Ich glaub auch, diese Befürchtung ist unbegründet. Es sind ja nicht die technikverliebten "Coder", die darüber zu entscheiden haben, ob Java eingesetzt wird oder was anderes. Und wer featuregeil ist, kann ja immer noch zum Lattenzaun greifen :)
 

tfa

Top Contributor
maki hat gesagt.:
Worauf Landei wohl hinauswill ist die Tatsache, dass man mit Closures Aufgaben parrallelisieren kann (zB. für MultiCore Prozessoren), ohne zusätzlichen Aufwand.

So gesehen ist es natürlich ein riesen Nachteil keine zu haben.
Da reichen aber Closures alleine nicht aus. Hierzu muss man schon durchgängig funktional programmieren. In funktionalen (meinetwegen auch multiparadigmen-) Sprachen geht das besser als im imperativen Java, so das diese Hoffnung sich auch mit Closures eh nicht erfüllen würde.
 

byte

Top Contributor
Nicht der syntaktische Zucker ist entscheidend darüber, ob eine Sprache eine hohe Produktivität mitbringt. Es sind vielmehr die zur Verfügung stehenden Libraries, Frameworks, Tools und Technologien... und natürlich wie gut sich die Sprache in die jeweilige Systemlandschaft integrieren lässt.
Java ist einfach alt, das merkt man an vielen Ecken und Enden. Ich persönlich habe nichts gegen die Einführung neuer Sprachfeatures, aber es gibt auch berechtigte Zweifeln, ob das immer so sinnvoll ist. Meine Meinung: Die JVM wird uns noch für sehr lange Zeit erhalten bleiben. Ob in 10 Jahren aber noch Java als Sprache herhält oder Scala zum Produzieren von Bytecode benutzt wird, bleibt abzuwarten. :)
 

Landei

Top Contributor
Gibt es irgendeine moderne Sprache aus der C++-Syntax-Familie ohne Closures außer Java? Fan verzichtet z.B. weitgehend auf Generics, hat aber Closures. Ich denke, die Bedeutung von Closures wird permanent unterschätzt. Sie sind viel mehr als "syntaktischer Zucker" und können auch nicht durch anonyme Klassen oder so "ersetzt" werden. Java strotzt vor Krüppellösungen (z.B. Iteratoren oder der for-each-Schleife), die ohne Closure nicht nötig wären. Code wird nicht da abgearbeitet, wo er eigentlich hingehört, Abstraktionsmöglichkeiten gehen verloren, Code wird unnötig wiederholt, Programme sind länger und schwerer zu verstehen.

Ich würde mir an eurer Stelle *genau* anschauen, was Closures eigentlich sind, und was man damit anstellen kann, bevor ihr entscheidet, dass man sie nicht braucht oder dass sie nicht so wichtig sind. Leute wie Gosling oder Gafter schlagen sowas nicht aus Dudeldei vor.
Exakt die gleiche Diskussion gab es schon einmal mit Generics. Würdet ihr etwa ohne Generics programmieren wollen? Ich denke nicht (trotz all der bekannten Schwächen der Java-Implementierung) .
 

byte

Top Contributor
Ich programmiere immer wieder mal ohne Generics. Immer dann wenn ich in einem Projekt bin, wo noch Java 1.4 im Einsatz ist. Und davon gibts noch genug. Insofern seh ich das ziemlich entspannt. Ich fänds interessant, wenn Closures kommen. Und wenn nicht, dann kann ich damit auch leben.
Mein aktuelles Projekt hat erst kürzlich von Java 1.4 auf 5 umgestellt. Java 7 wird vorraussichtlich nie eingesetzt werden. Ich schätze mal, es wird vielleicht noch so 10 Jahre dauern, bis ein Großteil der Java Projekte mit Java 7+ arbeiten.
Wer weiss, ob dann nicht schon viele neueren Projekte mit Scala geschrieben sind. ;)
 

Landei

Top Contributor
Scala ist zur Zeit der aussichtsreichste "Thronerbe", aber ich bezweifle, dass es sich auf breiter Front durchsetzen wird. Zu viele Leute wollen nicht lernen, sondern nur "irgendwie" ihre Probleme gelöst haben. Außerdem ist die Syntax auf den ersten Blick abschreckend (war auch für mich so).

Dass inzwischen soviele Leute zu den dynamisch getypten Sprachen übergelaufen sind, ist zwar kein Wunder nach dem, was einem das Java-Typsystem zumutet, aber macht mir ehrlich gesagt Angst. Die Leute denken immer noch, ein Typsystem wäre "nur" dazu da, damit man sich nicht so leicht in den Fuß schießt, aber das ist so, als wenn man sagen würde, Teleskope wären nur dafür da, damit man sich die Augen nicht so anstrengt.
 

foobar

Top Contributor
Closures in Java wären eine feine Sache, aber das zieht einen elenden Rattenschwanz nach sich, daher wird es wohl nicht dazu kommen.
Wenn man Closures in Java nutzen will kann man ja immer noch zu Groovy oder Scala greifen. Die lassen sich ja fast natlos in Java einbetten.
Closures sind ja nicht nur syntaktischer Zucker für anonyme Klassen, sondern setzen auch Ducktyping voraus und das wäre ein großer Paradigmenwechsel.
Da muß man sich eben genau überlegen was man will. Entweder die Sprache Java wird immer mehr ausgebaut bis niemand mehr durchblickt oder es gibt einfach einen Nachfolger. Für letzteres gibt es ja mittlerweile genügend Kandidaten, daher bin ich mittlerweile gegen große Veränderungen in der Sprache.
 

Landei

Top Contributor
Closures sind ja nicht nur syntaktischer Zucker für anonyme Klassen, sondern setzen auch Ducktyping voraus und das wäre ein großer Paradigmenwechsel.
Wieso Ducktyping? Wäre mir aufgefallen, wenn Scala sowas hätte :)
 

tfa

Top Contributor
foobar hat gesagt.:
Closures sind ja nicht nur syntaktischer Zucker für anonyme Klassen, sondern setzen auch Ducktyping voraus und das wäre ein großer Paradigmenwechsel.
Das hat nichts miteinander zu tun. Closures in Java hätten statische Typen gehabt, wie alles andere auch.
 

foobar

Top Contributor
Und woher soll Java dann wissen welche Methode aufgerufen werden soll?
In Groovy geht das nur durch Ducktyping. Wie funktioniert das denn in Scala?
 

Marco13

Top Contributor
Hab' den Begriff "Ducktyping" eben zum ersten Mal gelesen - kannte das Konzept GROB und in Ansätzen vom Hörensagen über Smalltalk. Nach dem Überfliegen des Wikipedia-Artikels stellt sich mir aber die Frage, ob das nicht (in Java) die trivialste Anwendung von reflection ist, die man sich vorstellen kann: getMethod("bla") - wenn's klappt, is' gut, wenn nicht, dann nicht. Ist natürlich syntaktisches Salz (als Gegenpart zum angesprochenen Zucker), aber doch prinzipiell möglich?! ???:L
 

Landei

Top Contributor
Scala-Beispiel:

Code:
var sqrtSum = 0.0
List(9,16,4).foreach(sqrtSum += Math.sqrt(_)) 
//sqrtSum ist jetzt 9.0
val list = List(9,16,4).map(Math.sqrt(_))
//list ist die Liste (3.0, 4.0, 2.0)

1) Da ist kein Ducktyping. foreach auf eine Liste von A's angewandt verlangt z.B. eine Closure A -> void (oder "Unit" in Scala). map verlangt für einer Liste von A's eine Closure A -> B und liefert eine Liste von B's. Die zeite Closure hat dementsprechend den Typ Int -> Double
2) Eine Closure hat Zugriff auf umgebende Variablen (sqrtSum), was man nicht ohne weiteres mit anonymen Klassen hinbekommt
3) Das hier ist die Kurzschreibweise, man könnte die Closures auch ausführlich mit Parameternamen und Typbezeichnern schreiben. Meistens ist der Compiler aber clever genug, das allein hinzubekommen. Jede Variable und jedes Objekt hat immer einen Typ, und Closures machen da als ganz normale Objekte keine Ausnahme.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
Tobero Eclipse Runnable jar exportiert keine Textures? Allgemeine Java-Themen 12
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
Thallius Keine Ahnung Allgemeine Java-Themen 15
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
L JPA keine shared primary key Allgemeine Java-Themen 11
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
N Warum habe ich keine Spaltenüberschriften? Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Chat - keine Schrift sichtbar Allgemeine Java-Themen 4
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
S Tomcat java.util.logging - keine Logs Allgemeine Java-Themen 12
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
S Keine NullPointerExceptions in nebenläufigen Threads Allgemeine Java-Themen 21
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
X Warum kann ich keine ZIP Datein mit renameto() in was anderes benennen? Allgemeine Java-Themen 13
B warum keine nested blocks Allgemeine Java-Themen 2
GilbertGrape Jetty-Dienst startet keine Programme mit Oberfläche Allgemeine Java-Themen 2
S Keine Exception-Warning in Eclipse Allgemeine Java-Themen 3
D Warum keine Mehrfachvererbung? Allgemeine Java-Themen 5
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
N Keine Klassen startbar/mit Abhängigkeiten erstellbar Allgemeine Java-Themen 2
WMaerz Der neue JDK 6 enthält keine javac.exe, tool.jar usw. Allgemeine Java-Themen 6
P Webhosting-Paket unterstützt nur .war Dateien keine jsp Allgemeine Java-Themen 4
A Kann keine neue Klasse erstellen. Allgemeine Java-Themen 3
D TextPane nach Laden keine Styles Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
N Applet übernimmt keine Änderungen Allgemeine Java-Themen 13
C Vier Stellen Keine Doppelt (Zufall) Allgemeine Java-Themen 20
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3
G Leere Fenster (Keine Schrift, Reiter/ Buttons) bei Java Allgemeine Java-Themen 5
G woher installiertes JDK? (keine Adminrechte) Allgemeine Java-Themen 3
R keine sqrt methode für bigintegers? Allgemeine Java-Themen 14
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
Y Comm-API findet keine Ports Allgemeine Java-Themen 5
B Keine Musik bei Applikation Allgemeine Java-Themen 9
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
V Javadoc ertellt keine korrekten links Allgemeine Java-Themen 3
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben