Was bedeuten Closures in Java 7 für Scala?


Mittlerweile sollte wirklich jeder denn Knall der Bombe gehört haben, die Mark Reinhold von Sun auf der Devoxx hat platzen lassen: Java7 wird nun doch „Closures“ (genauer gesagt: First Class Methods) enthalten. Einen guten Überblick, insbesondere über die Syntax, gibt Cay Horstmann.

Bleibt die Frage, wie sich das auf Scala auswirken wird. Zuerst einmal gehe ich ganz stark davon aus, dass Prof. Martin Odersky froh gewesen wäre, wenn er nicht nur Generics in Java hätte umsetzen können. Java ist die einzige moderne „Hochsprache“, die noch keine Closures besitzt, und das schadet der Sprache ungemein. Scala hat meiner Meinung nach viel mehr zu verlieren, wenn das „Ökosystem JVM“ verkümmert, als dadurch, dass nun eventuell ein paar Leute weniger den Sprung von Java nach Scala wagen. Ich denke eher, dass das Gegenteil eintritt: Die Arbeit mit Closures in Java macht neugierig auf mehr funktionale Features. Außerdem ist die Wahl einer Sprache keine Entweder-Oder-Entscheidung: Ich arbeite z.B. privat fast ausschließlich mit Scala, aber in meinem Job wird es noch lange, lange bei Java bleiben. Und man darf auch nicht vergessen, dass viele Firmen sehr konservativ bezüglich neuer Sprachversionen sind, und dass Java 7 nicht vor September 2010 erscheinen wird (nur so am Rande: Es scheint, als ob erst anderweitige Verzögerungen bei Java 7 genügend Luft für die Wiederaufnahme der Closure-Idee gegeben hätten). Der meiner Meinung nach wichtigste Aspekt ist aber, dass mit Closures in Java eines der wirklich herausragenden Features von Scala noch wesentlich gestärkt werden kann: Die Interoperabilität mit Java. Nur Groovy hat eine ähnlich gute Integration mit Java, und Scala ist die einzige statische Sprache, die so reibungslos mit Java zusammenarbeitet. Closures in Java erlauben zukünftig eine noch bessere Integration.

Insgesamt bin ich zwar nicht euphorisch, aber froh über Suns Sinneswandel, auch wenn er reichlich spät kam. Die Scala-Gemeinschaft hat sich nie mit simplen Konkurrenzdenken abgegeben, nicht nur weil es aus der konkreten Situation heraus wenig sinnvoll wäre, sondern weil es einfach ein unnötiger Hemmschuh ist, und ein Symptom der beschränkten Sichtweise, die uns geradewegs in die Softwarekrise geführt hat. Scala selbst ist das beste Beispiel für ein System, in dem es nicht nur einen „richtigen“ Weg gibt. Scala und Java werden noch lange koexistieren, und ein besseres Java stärkt die wichtigsten Grundlagen dieser Symbiose, nämlich die JVM und die vorhandenen Java-Bibliotheken.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s