Scala Profis

Der Podcast aus Berlin, rund um die Programmiersprache Scala. Mit Neuigkeiten, Know-How und allem was uns sonst noch so einfällt. Für alle Scala-Enthusiasten und solche die es werden wollen. Für Dich am Mikrofon: Benjamin Hagemeister und Sven Wiegand.

https://scalaprofis.de

subscribe
share






episode 9: 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
  1. Intro (00:00:00.000)
  2. Eine offene Scala-Stelle (00:01:30.371)
  3. Scala 2.12 (00:01:55.523)
  4. SBT 0.13.13 (00:27:36.899)
  5. Abschaffung des 22 Parameter-Limits für Funktionen (00:32:28.129)
  6. Scala.js 0.6.13 (00:35:41.528)
  7. Unsere Highlights in 2016 (00:39:11.629)
  8. Unsere Wünsche für 2017 (00:51:58.829)
  9. 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).


fyyd: Podcast Search Engine
share








 December 5, 2016  1h1m