News Java 8 mit Lambda-Expressions veröffentlicht

Ramschladen schrieb:
Hmm selbst im Entity Framework nutze ich eher wenig bis gar nicht die Lambda expressions [...] behandel ich lieber mit dem BackgroundWorker anstatt mit so nem gewurschtel :D

geht mir auch so. Ich finde das unübersichtlich und nutze es somit nicht.
 
Endlich! Das wird ja Zeit :) Habe mich schon immer gefragt wie die Java Softwareentwickler ohne das auskommen ;)

Ramschladen schrieb:
Hmm selbst im Entity Framework nutze ich eher wenig bis gar nicht die Lambda expressions...Selbst einen Thread behandel ich lieber mit dem BackgroundWorker anstatt mit so nem gewurschtel :D

Wie sollte man das in Zeiten von .NET 4.5 noch benutzen? :freak:
Das geht doch dank ASYNC , WAIT und TASK<> viel übersichtlicher und einfacher :)
 
Lambda expressions. Eine schöne Erweiterung, mal schauen, wie gut die sind. Ob man sie inline schön verwenden kann und damit nervige mini-helper-Funktionen (die nur in einer Methode verwendet werden, aber da recht häufig) vernichten kann. Da sehe ich auch den größten Einsatz.

Interessant wäre auch die Performance (bitte keine flames - ich weiß java und Performance :) ) gegenüber "normalen" Methoden. (Speicherverbrauch, ...) (das ist von mir rein akademisch motiviert).

@Smagjus: Danke für das Tutorial.
 
Ich finde Lambda's äußerst nützlich, gerade bei Callbacks. Als ich neulich mal einen Exkurs in Python hatte hat mir das an etlichen Stellen das Leben vereinfacht.
 
SoilentGruen schrieb:
Mit Xtend kann man das in Java auch schon seit etlichen Jahren... Die brauchen eben eine Ewigkeit bei Oracle.

Da ist Xtend wirklich schön. Nur leider generiert Xtend des öfteren mal fehlerhaften Javacode und dann darf man wieder in den generierten Quellen suchen gehen, warum
 
clericc schrieb:
Da ist Xtend wirklich schön. Nur leider generiert Xtend des öfteren mal fehlerhaften Javacode und dann darf man wieder in den generierten Quellen suchen gehen, warum

Nobody is perfect, das ist eine Entwicklergruppe bei der itemis AG die das macht (neben Xtext und sowas). Natürlich können da Bugs drin sein. Ich hatte zumindest noch keine Fehler im generierten Java-Code und ich arbeite damit regelmäßig.

Xtend hat aber auch noch eine ganze Reihe anderer netter Funktionen ;)
http://jnario.org/org/jnario/jnario/documentation/20FactsAboutXtendSpec.html
 
roker002 schrieb:
Interessant. Lambda Expression kann man bei .NET schon sein geraumer Zeit anwenden. Was ist die Schwierigkeit?
Schwierigkeit gibts keine echte.
Es ist aber die Philosophie von Java die Sprache an sich möglichst einfach und klein zu halten und alles redundante wegzulassen um somit nicht mehrere Wege zu schaffen das gleiche Problem zu lösen.
Nachdem sich Lambda Ausdrücke aber mittlerweile in vielen anderen Sprachen als sehr nützlich erwiesen haben werden sie nun eben auch in Java aufgenommen.
 
Dark-Water schrieb:
Wie sollte man das in Zeiten von .NET 4.5 noch benutzen? :freak:
Das geht doch dank ASYNC , WAIT und TASK<> viel übersichtlicher und einfacher :)

Sehe ich genauso. Und wie man sinnvoll (=wartbar) Entity-Framework ohne Lambdas programmieren kann ist mir ein Rätsel, da LINQ stark mit diesen "verzahnt" ist...
Wie du sagst, ist spätestens mit async/await der BackgroundWorker mehr als nur "depricated"...
 
titanskin schrieb:
Interessant wäre auch die Performance (bitte keine flames - ich weiß java und Performance :) ) gegenüber "normalen" Methoden. (Speicherverbrauch, ...) (das ist von mir rein akademisch motiviert).

Da dürfte es keinen Unterschied geben, denn Java 8 implementiert die Lambda Expressions lediglich als syntaktischen Zucker - im Hintergrund baut der Compiler doch wieder eine anonyme Klasse mit einer einzigen Methode daraus.

Auf diese Weise lassen sich Lambda Expressions ohne Probleme als Event-Listener in der JFC einsetzen, so bislang immer anonyme Klassen (z.B. "ActionEvent") als Listener-Objekte instanziert werden mussten. Und die Java-VMS müssen dafür auch nicht umgeschrieben werden.
 
Ich weiß nicht was hier einige haben, wenn ich in einer anderen Sprache arbeite dann sind Lambda Expressions das was ich gegenüber c# am Meisten vermisse.
Ist doch genial wenn ich mit einer Zeile Code irgendeine Liste beliebig Filtern kann, das würde wo anders so manche Kombination aus Schleifen und Bedingungen ersparen.
 
In viele Fällen ist es halt gerade kein gewurschtel wenn man einfach eine Lambda verwendet. In Verbindung mit LINQ dürfte das wohl das Paradebeispiel sein.

Aber Java funktioniert in der Hinsicht ja prinzipiell anders. Wobei ich das delegate System von C# wesentlich besser finde.
 
Eisbrecher99 schrieb:
Haskell lässt grüßen!

Das Problem ist nur, dass gute Haskell und Erlang Programmierer ungefähr 200.000 Euro im Jahr kosten, gute Javaprogrammierer aber ab 30.000 :D

UND ein schlechtes Javasystem funktioniert noch ein bisschen, ein schlechtes Haskell-System dagegen garnicht :D
 
Dark-Water schrieb:
Wie sollte man das in Zeiten von .NET 4.5 noch benutzen? :freak:
Das geht doch dank ASYNC , WAIT und TASK<> viel übersichtlicher und einfacher :)

weil bei Kunden noch XP Rechner stehen und dort nur .Net 4.0 geht.
 
Und was macht man wenn man plattformunabhänging programmieren muss? Mono?
Das wäre mir viel zu gefährlich...
 
GTR schrieb:
Und was macht man wenn man plattformunabhänging programmieren muss? Mono?
Das wäre mir viel zu gefährlich...

So ist es - und solange man sich von WPF fern hält, geht das auch sehr gut...
 
Mono ist was für private Zwecke aber würdest du ernsthaft empfehlen bei einem 5 Millionen Euro schweren Projekt auf eine Sprache zu setzen die es evtl morgen nicht mehr gibt? Bei Java ist das nahezu ausgeschlossen und auch bei C# hängt zwar alles an Microsoft aber auch das ist eher unwahrscheinlich... Aber Mono zu verwenden würde ich niemals bei meinem Projekten machen...
 
Warum nicht? Die Sprache "verschwindet ja nicht" - das was heute geht, geht auch noch in 10 Jahren. Bei Mono kannst du dir den Sourcecode sogar herunterladen und jederzeit das Framework selbst neu kompilieren (mache ich sogar meistens auf meinen Webservern so).

Und bei einem 5M€ Projekt wird man wohl so oder so das Environment zuerst analysieren, ob es alle Anforderungen erfüllt.

ABER es kommt immer auf den Anwendungsfall drauf an - generell kann man solche Dinge nicht festlegen.
 
Zurück
Oben