Scala Profis artwork

SP12/16: Scala 2.12 und Jahresrückblick

Scala Profis

German - December 05, 2016 19:53 - 1 hour - 44.6 MB
Technology News Tech News Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed


SP12/16: Scala 2.12 und Jahresrückblick



Wir suchen einen Scala-Entwickler

Willst Du Scala endlich auch beruflich einsetzen? Dann komm zu uns. Für unser Berliner Team bei der Beta System IAM Software AG suchen wir einen Scala-Entwickler bzw. eine Scala-Entwicklerin. In einem sechsköpfigen Scrum-Team entwickelst Du unsere neue Web-Basierte IAM-Suite, vollständig in Scala.


Auch als Quereinsteiger aus der Java-Welt bist Du herzlich willkommen.


Bewirb Dich jetzt (gib bei der Bewerbung mit an, dass Du über die Scala Profis auf die Stelle aufmerksam geworden bist).


Scala 2.12.0

Seit 3. November ist Scala 2.12 verfügbar!


Haupt-Features

Der Scala-Compiler wurde komplett überarbeitet um — wo möglich — die neuen Java 8 Features zu nutzen:

Traits compilieren zu Interfaces mit Default-Methoden. Das verbessert die Binär-Kompatibilität und die Interoperabilität mit Java.
Scala und Java 8 Interoperabilität für funktionalen Code wurde verbessert, da Methoden, die Funktionen übergeben bekommen nun aus beiden Sprachen mit Lambda-Ausdrücken aufgerufen werden können. Die FunctionN-Klassen in Scalas standard-Library sind nun als SAMs implementiert. Somit werden keine .class-Dateien mehr für Lambdas generiert — stattdessen wird invokedynamic genutzt. Dadurch reduziert sich die Größe der JAR-Dateien teils drastisch. Zum Beispiel hat sich das ScalaTest 3.0.0 JAR von 9,9 auf 6,7 MB reduziert.

Außerdem bietet das Release einen leistungsstarken neuen Optimierer.


Neue Sprach-Features

Traits werden zu Interfaces compiliert
Lambda-Syntax für SAM-Typen
Java-8-Style Byte-Code für Lambdas
Neue Abbildung und neuer Locking-Scope für lokale lazy vals
Bessere Typ-Inference für Lambda-Parameter und überschriebene vals in Scala.js
Überarbeiteter Look-&-Feel für ScalaDoc (siehe Scala-Standard-Library API-Doku als Beispiel)
ScalaDoc kann benutzt werden um Java zu dokumentieren
Verbesserung der REPL (Farben)

Verbesserungen der Standard-Library

Either unterstützt jetzt map, flatMap, contains, toOption und weitere Funktionen.
scala.concurrent.Future wurde überarbeitet. Die Anpassungen werden in einer Blog-Post-Reihe von Viktor Klang beschrieben:

flatten
zipWith
transform
transformWith
Deprecation of onSuccess und onFailure
unit und never

Überarbeitung des Java 8 compatibility module for Scala.

Fragen & Antworten
Wie sieht es mit der Kompatibilität zu Scala 2.11 aus?

2.11 und 2.12 sind Source-Code-kompatibel, wie gewohnt aber nicht binärkompatibel.


Sollte ich Scala 2.12 jetzt schon nutzen?

Die Liste der Libraries, die Scala 2.12 unterstützt wächst stetig. Sollten Deine eingesetzten Libraries bereits unterstützt werden steht einem Wechsel aus unserer Sicht nichts im Wege.


Was, wenn meine Kunden derzeit noch die JVM 7 einsetzen?

Oracle stellt bereits seit April 2015 keine Updates mehr für Java 7 bereit. Dementsprechend solltest Du Deinen Kunden dringend einen Wechsel auf Java 8 empfehlen womit der Weg für Scala 2.12 geebnet ist.


Wie sieht es mit Android aus?

Leider schlecht! Android arbeitet weiterhin auf Basis von Java 7 und wird den von Scala 2.12 benötigten Funktionsumfang auf absehbare Zeit auch nicht unterstützen. Wenn Du also Android-Anwendungen in Scala schreibst musst Du bei Scala 2.11 bleiben.


Wie geht es mit den alten Scala-Versionen weiter?

Das letzte Release für Scala 2.11 (2.11.9) wird für Mitte Dezember erwartet.


Links

http://www.scala-lang.org/news/2.12.0

SBT 0.13.13

SBT 0.13.13 ist seit dem 28. Oktober verfügbar, angekündigt als ›Technology Preview‹ für die Version 1.0.


In der Version 0.13.13 wurden verschiedene Funktionen wie z.B. die DSL aus der Version 0.12 (<<=, <+=, …) als deprecated markiert. Diese Funktionen wird es in der Version 1.0 nicht mehr geben.


Die für mich interessanteste Änderung ist das new Kommando. Wenn man den Launcher der Version 0.13.13 verwendet (also nicht nur in project/build.properties die Version auf 0.13.13 setzt) kann man über sbt new ein neues Projekt erzeugen.

Giter8 lädt die Templates über ein beliebiges Git-Repository. Man kann damit leicht eigene Templates z.B. auf GitHub veröffentlichen. Zusätzlich ist es möglich eigene Resolver für Templates zu implementieren.


Links

Ankündigung
sbt new and Templates
Giter8

Pull-Request: Abschaffung des 22 Parameter-Limits für Funktionen

Martin Odersky hat einen Pull-Request, der Funktionen mit mehr als 22 Parametern unterstützt. Realisiert wird das ganze, in dem Funktionen mit mehr Parametern intern auf einen Typ FunctionXXL gemappt werden, der einen Array von Objekten annimmt.


Der Pull-Request befindet sich aktuell im Code-Review.


Links

Issue #1758: Drop function 22 limit

Scala.js 0.6.13
Änderungen der Standard-Interpreter

Bisherige Standards:

Rhino
Node.js wenn scalaJSUseRhino in Global := false
PhantomJS wenn scalaJSUseRhino in Global := false und jsDependencies += RuntimeDOM

Neue Standards:

Node.js
Node.js + jsdom wenn jsDependencies += RuntimeDOM

Node.js und jsdom müssen getrennt installiert werden.


Umgang mit CommonJS-Modulen

CommonJS-Module werden von Node.js und diversen Bundlern genutzt


Scala.js-Projekte können jetzt CommonJS-Module bereitstellen (scalaJSModuleKinde := ModuleKind.CommonJSModule) wodurch Objekte und mit @JSExport annotierte Klassen über das Modul angeboten werden.


Über @JSImport Scaladoc können Module importiert werden. Das entspricht einem ECMAScript 2015 Import, wird von Scala aber in ein CommonJS require umgewandelt.


Wichtig: @JSImport ist nicht kompatibel mit jsDependencies, statt dessen musst Du Deine JavaScript-Dependencies selbstständig pflegen (z.B. via npm).


Links

Announcing Scala.js 0.6.13

Unsere Highlights 2016
Svens Highlights

Scala 2.12 released
Dotty (SP002)
Kotlin 1.0 (SP003)
Gründung des Scala Centers (SP004)
ScalaJS wird erwachsen (SP05/16)

Benjamins Highlights

Scala 2.12 released
Gründung des Scala Centers (SP004)
Spielereien mit Macros (SP005)
ScalaDays in Berlin (SP006)
Umstellung auf SBT (SP05/16)

Unsere Wünsche für 2017
Svens Wünsche

Breite Unterstützung von Scala 2.12
Scala 3 auf Basis von Dotty mit schnellerem und zuverlässigerem Compiler

Benjamins Wünsche

Scala 3 auf Basis von Dotty mit schnellerem und noch schnellerem Compiler
SBT 1.0
Umstellung auf Scala 2.12
Ein neuer Kollege oder eine neue Kollegin

Gib uns Dein Feedback als Kommentar auf unserer Web-Site, via Twitter oder Google+.



Kapitel

Intro (00:00:00.000)
Eine offene Scala-Stelle (00:01:30.371)
Scala 2.12 (00:01:55.523)
SBT 0.13.13 (00:27:36.899)
Abschaffung des 22 Parameter-Limits für Funktionen (00:32:28.129)
Scala.js 0.6.13 (00:35:41.528)
Unsere Highlights in 2016 (00:39:11.629)
Unsere Wünsche für 2017 (00:51:58.829)
Outro (00:58:39.475)

Lizenz


Scala Profis von Benjamin Hagemeister & Sven Wiegand ist lizenziert unter einer Creative Commons Namensnennung — Keine Bearbeitungen 4.0 International Lizenz.


Über diese Lizenz hinausgehende Erlaubnisse kannst Du unter http://scalaprofis.de erhalten.


Titelsong basierend auf Wish You Were Here von THE.MADPIX.PROJECT lizensiert unter Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0).

Twitter Mentions