Scala Profis artwork

SP03/17: Scala 2.13

Scala Profis

German - March 28, 2017 18:42 - 56 minutes - 41.1 MB
Technology News Tech News Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed

Previous Episode: SP02/17: Dies und Das

SP03/17: Scala 2.13



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


Feedback zur letzten Episode

Boris hat ganz richtig angemerkt, dass HTTP 1 natürlich auch schon binäre Inhalte übertragen kann ohne diese Base64-encoden zu müssen.
Benjamin hat uns informiert, dass Java-Enums entgegen unserer Aussage eine natürliche Ordnung haben.

Nachtrag zu SP02/17 und Contextual

In Episode SP02/17 hatte Benjamin bemängelt, dass der Contextual String-Interpolator ein Any anstelle des gewünschten Typs zurückgibt und großspurig angekündigt dafür einen Pull-Request zu stellen.


Igor Mielientev war da schneller. Sein Pull-Request ist auch schon gemergt, allerdings gibt es noch kein neues Release in dem die Änderung enthalten ist.


Introducing the Scala Platform Process

Der Scala Platform Process soll die Implementierung, Pflege und Verwaltung von Modulen für die Scala Platform vereinfachen.


Zur Erinnerung: Scala soll weiter modularisiert werden. Die Standard Library soll nur die wichtigsten Komponenten enthalten, wie zum Beispiel die Collections. Alles was soll in extra Bibliotheken ausgelagert werden, wie das bei 2.11 zum Beispiel schon mit der XML Bibliothek passiert ist.


Der Scala Platform Process bietet:

Infrastruktur

SBT Plugin
CI
Release Manager

Richtlinien

für den Release-Prozess
für ›Mitarbeiter‹

Links

Introducint the Scala platform process
Scala Platform
Platform Policies
SBT Plugin
CI-Integration

Scala 2.13 Roadmap

Lightbend hat seine Pläne für die Scala-Roadmap 2017 inklusive eines Ausblicks auf Scala 2.13 veröffentlicht.


Scala 2.13

Scala 2.13 wird sich auf folgende Themen fokussieren:

Compiler-Performance
Vereinfachung der Collections: siehe unten
Modularisierung der Standard-Library:

Reduzierung auf die Collection-Typen und andere Standard-Typen wie Option, TupleN, Either und Try
Andere Features werden in unabhängige Libraries ausgelagert, die eingebunden werden müssen und einen eigenständigen Release-Zyklus haben werden

Benutzerfreundlichkeit. Derzeit umfasst das folgende Punkte:

Konfigurierbares Error-Reporting: Z.B. Warnungen ignorieren oder zu Fehlern anheben
Scalafix für automatische Migration
Vereinheitlichung des SBT- und Scala-Launchers: Automatische Updates der Kommandozeilen-Tools und einheitliche Ein-/Ausgaben
Verbesserte REPL: Z.B. Syntax Highlighting, Möglichkeiten zur Einbettung in Worksheets, Verbessertes Editieren für mehrzeilige Eingaben, etc.

An der Sprache wird sich in 2.13 also nichts ändern.


Zeitplan

Im Vergleich zu 2.12 soll der Release-Zyklus verkürzt werden.
Vierteljährliche Milestones für 2.13 in 2017
Erster Release-Candidate Ende Q1 2018
2.12 erhält in 2017 regelmäßige Minor-Releases
2.11 erhält in Q1 2017 mit 2.11.9 sein letztes Release

Link

Scala 2.13 roadmap

Scala 2.13 Collections Rework

Die Scala Collections sind zwar gut, sind aber durchaus auch ein bisschen überladen und zum Teil schwer zu verwenden und schwer zu implementieren.


Sie sollen deshalb für 2.13 mit den folgenden Zielen neu implementiert werden:

Einfacher zu verwenden (viele Operationen ohne CanBuildFrom, vereinfachte Hierarchie)
Einfacher zu implementieren
Schneller
Soweit möglich kompatibel zu 2.12. Inkompatibilitäten sollten sich mit ScalaFix automatisch beheben lassen.

Links

Scala 2.13 Collections Rework
ScalaFix

Scala auf Platz 11 im RedMonk-Ranking

Im (verspäteten) Januar-Ergebnis des halbjährlich erscheinenden RadMonk-Programmiersprachen-Rankings konnte Scala gegenüber dem letzten Ergebnis drei Plätze gut machen und liegt jetzt, gleich auf mit Swift, auf Platz 11.



Die RedMonk-Analysten werten StackOverflow und GitHub aus, um einzuschätzen, wie stark welche Programmiersprachen in der Zukunft eingesetzt werden.


Hier die ersten zehn Plätze:

JavaScript
Java
Python
PHP
C#
C++
CSS
Ruby
C
Objective‑C

Link

The RedMonk Programming Language Rankings: January 2017

Scala.js 0.6.15

Vorbereitung auf Scala.js 1.0.0
Neue Annotation @JSExportStatic um statische Members auf Scala.js-defined Classes zu definieren
@JSExportTopLevel kann jetzt auch auf Feldern und Top-Level Klassen/Objekten genutzt werden.
Unterstützung für ECMAScript 2015 symbols und Iterables/Iterators.

Bestehender Code erfordert einiges an Migrationsaufwand, der mittels scalafix teilweise automatisch durchgeführt werden kann.


Links

Announcing Scala.js 0.6.15

Scala Native v0.1 is here!

Scala Native v0.1 ist verfügbar.


Features

Vollständiger Scala Support mit ein paar unerheblichen sematischen Unterschieden
Einfache Interoperabilität mit Nativem Code
Support für existierende Scala IDEs
Integration mit SBT
Cross-publishing für JVM, JS und Native
Support für einen Teil der JDK core library
Support für einen Teil der C Standard Library

Links

Scala Native v0.1 is here
Scala Native Homepage
Scala Native Issues

Android: Java 8 (und Scala)

Google hat sich entschieden die Jack-Toolchain (höre Episode SP004) zu verwerfen und Java 8 Features stattdessen direkt via javac und dx zu unterstützen. Laut eigener Aussage wollen sie damit erreichen, dass bestehende Tools, die auf dem Java-Bytecode-Format aufsetzen, auch im Android-Umfeld funktionieren.


Im März 2016 hatte Google angekündigt Java 8 Features über den neuen Jack-Compiler zu unterstützen, der keine .class-Dateien mehr, sondern .jack-Dateien generiert, die direkt DEX-Code enthalten sollten.


Mit der neuen Marschrichtung könnte Scala 2.12 für Android wieder realistisch werden.


Link

Future of Java 8 Language Feature Support on Android

Java: Project Amber

Biran Goetz, Java Language Architect by Oracle, hat Project Amber angekündigt. Ziel ist es kleinere, produktive Sprach-Features zu evaluieren.

Typ-Inferenz für lokale Variablen (var url = new URL(...))
Generische Enums
Lambda Leftovers: Ignorieren von Lambda-Parametern via Unterstrich
Data Classes:

public class User(String firstName, String lastName, DateTime birthday) { }

Pattern Matching


String formatted = switch (constant) {
case Integer i -> String.format("int %d", i);
case Byte b: //...
case Long l: // ...
// ...
default: formatted = "unknown"
}

Verfügbarkeit: Vielleicht 2020?


Links

Project Amber
How Project Amber Will Revolutionize Java

Kotlin 1.1

JavaScript: Zur Verfügung stehen alle Sprach- und Library-Konstrukte, nicht aber das JDK.
Coroutines:

Library-Feature
Leichtgewichtige, unterbrechbare/fortsetzbare Threads
Aufrufer kann asynchron auf das Ergebnis warten
Mit yield kann ein Ergebnis eines Streams zurückgegeben werden
Experimentell

Sprach-Features

Type aliases
Destructuring für Lambda-Argumente
Underscores für ungenutzte Lambda-Parameter
Delegated Property Syntax für lokale Variablen: lazy

Kann jetzt Java 8 Bytecode generieren

Link

What’s new in Kotlin 1.1

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



Kapitel

Intro (00:00:00.000)
Wir suchen einen Scala-Entwickler (00:01:10.787)
Feedback zur letzten Episode (00:01:41.731)
Nachtrag zu Contextual (00:03:52.877)
Introducing the Scala Platform Process (00:05:02.296)
Scala 2.13 Roadmap (00:09:00.131)
Scala auf Platz 11 im RedMonk Ranking (00:22:26.595)
Scala.js 0.6.15 (00:26:33.059)
Scala Native 0.1 (00:31:17.848)
Android: Java 8 (und Scala) (00:38:06.232)
Java: Project Amber (00:41:37.187)
Kotlin 1.1 (00:49:47.747)
Outro (00:55:41.261)

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