Artwork

Inhalt bereitgestellt von Sven Wiegand and Benjamin Hagemeister. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von Sven Wiegand and Benjamin Hagemeister oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.
Player FM - Podcast-App
Gehen Sie mit der App Player FM offline!

SP12/16: Scala 2.12 und Jahresrückblick

1:01:40
 
Teilen
 

Manage episode 167349420 series 1206977
Inhalt bereitgestellt von Sven Wiegand and Benjamin Hagemeister. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von Sven Wiegand and Benjamin Hagemeister oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.

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

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

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

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

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

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+.

Kauf uns einen Kaffee

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

Creative Commons Lizenzvertrag
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).

  continue reading

Kapitel

1. Intro (00:00:00)

2. Eine offene Scala-Stelle (00:01:30)

3. Scala 2.12 (00:01:55)

4. SBT 0.13.13 (00:27:36)

5. Abschaffung des 22 Parameter-Limits für Funktionen (00:32:28)

6. Scala.js 0.6.13 (00:35:41)

7. Unsere Highlights in 2016 (00:39:11)

8. Unsere Wünsche für 2017 (00:51:58)

9. Outro (00:58:39)

15 Episoden

Artwork

SP12/16: Scala 2.12 und Jahresrückblick

Scala Profis

13 subscribers

published

iconTeilen
 
Manage episode 167349420 series 1206977
Inhalt bereitgestellt von Sven Wiegand and Benjamin Hagemeister. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von Sven Wiegand and Benjamin Hagemeister oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.

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

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

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

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

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

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+.

Kauf uns einen Kaffee

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

Creative Commons Lizenzvertrag
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).

  continue reading

Kapitel

1. Intro (00:00:00)

2. Eine offene Scala-Stelle (00:01:30)

3. Scala 2.12 (00:01:55)

4. SBT 0.13.13 (00:27:36)

5. Abschaffung des 22 Parameter-Limits für Funktionen (00:32:28)

6. Scala.js 0.6.13 (00:35:41)

7. Unsere Highlights in 2016 (00:39:11)

8. Unsere Wünsche für 2017 (00:51:58)

9. Outro (00:58:39)

15 Episoden

Alle Folgen

×
 
Loading …

Willkommen auf Player FM!

Player FM scannt gerade das Web nach Podcasts mit hoher Qualität, die du genießen kannst. Es ist die beste Podcast-App und funktioniert auf Android, iPhone und im Web. Melde dich an, um Abos geräteübergreifend zu synchronisieren.

 

Kurzanleitung