Programmiersprache: Scala 2.12 kuschelt mit Java 8

Allzu viel Neues bringt die neue Version der Programmiersprache nicht. Dafür wurde das Augenmerk auf eine bessere Binärkompatibilität und Interoperabilität mit Java 8 gelegt, mit der Folge, dass sich Scala-Funktionen aus Java 8 heraus aufrufen lassen.

vorlesen Druckansicht 5 Kommentare lesen
Programmiersprache: Scala 2.12 kuschelt mit Java 8
Lesezeit: 3 Min.
Von
  • Alexander Neumann

Zweieinhalb Jahre nach der Freigabe von Scala 2.11 ist nun mit Version 2.12.0 ein Nachfolger der auf der Java Virtual Machine (JVM) laufenden Programmiersprache erschienen. Das neue Scala-Release hätte den ursprünglichen Planungen zufolge schon Anfang dieses Jahres veröffentlicht werden sollen, doch aufwendige Arbeiten wie ein komplett überarbeiteter Compiler haben das Release verzögert. Scala 2.12.x setzt nun das aktuelle Java 8 voraus.

Die Arbeiten am Compiler geschahen vor dem Hintergrund, mit der Programmiersprache kompatibel zu Java 8 zu sein. So kompiliert eine Trait nun direkt zu einem Interface mit Default-Methoden, was eine bessere Binärkompatibilität und Interoperabilität mit Java zur Folge haben soll. Mit Version 8 bekam Java Features für ein funktionales Programmieren wie Lambda-Ausdrücken und Streams. Das hat nun auch Einfluss auf die Zusammenarbeit mit Scala, das funktionale mit objektorientierten Konzepten vermengt. Beispielsweise können nun wohl Methoden, die Funktionen als Argument enthalten, von Lambda-Syntax enthaltenem Code aufgerufen werden. Die FunctionN-Klassen in der Standardbibliothek von Scala sind außerdem jetzt SAM-Typen (Single Abstract Method). Das hat zur Folge, dass der Compiler eine Java-definierte SAM von der Typüberprüfung bis zur Codegenerierung genau wie eine Funktion in Scala behandelt.

Zusätzlich enthält Scala 2.12 einen neuen Optimizer, durch den sich finale Methoden, einschließlich derjenigen, die in Objekten und Traits definiert sind, nun inline finden lassen. Ebenso können wohl Closure-Allokationen, nicht lauffähiger Code und redundante Box-/Unbox-Paare effektiver beseitigt werden.

Ende November soll Scala 2.12.1 folgen, das die wenigen bekannten Fehler beseitigen soll. Das für Dezember versprochene Scala 2.11.9 soll die letzte Version des bis heute aktuellen Release-Strangs sein. Schon bald wollen die Scala-Entwickler bei Lightbend außerdem den Fahrplan für das Nachfolge-Release Scala 2.13 bekannt geben. An anderer Stelle ist auch schon von Scala 3 die Rede, das sich von dem über die Jahre angesammelten Ballast befreien will.

Hinter der Entwicklung steckt maßgeblich das Unternehmen Lightbend, dem Scala-Schöpfer Martin Odersky vorsteht. Laut einer von zwei Ankündigungen zum neuen Sprach-Release sind rund zwei Drittel aller Commits von Scala 2.12 Lightbend zuzurechnen. Ansonsten ist Scala vielleicht die verbreitetste unter den vielen JVM-Sprachen, die innerhalb der vergangenen 15 Jahren auf der Bildfläche erschienen sind. Scala vereint dabei so kompromisslos wie kaum eine andere Sprache funktionale mit objektorientierten Konzepten.

Siehe dazu auf heise Developer:

(ane)