SP03/17: Scala 2.13

56:44
 
Teilen
 

Manage episode 175647703 series 1206977
Von Sven Wiegand and Benjamin Hagemeister entdeckt von Player FM und unserer Community - Das Urheberrecht hat der Herausgeber, nicht Player FM, und die Audiodaten werden direkt von ihren Servern gestreamt. Tippe auf Abonnieren um Updates in Player FM zu verfolgen oder füge die URL in andere Podcast Apps ein.

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

  1. Boris hat ganz richtig angemerkt, dass HTTP 1 natürlich auch schon binäre Inhalte übertragen kann ohne diese Base64-encoden zu müssen.
  2. 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

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:

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

RedMonk Ranking Januar 2017

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:

  1. JavaScript
  2. Java
  3. Python
  4. PHP
  5. C#
  6. C++
  7. CSS
  8. Ruby
  9. C
  10. Objective‑C

Link

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

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

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

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

Kotlin 1.1

  1. JavaScript: Zur Verfügung stehen alle Sprach- und Library-Konstrukte, nicht aber das JDK.
  2. 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
  3. Sprach-Features
    • Type aliases
    • Destructuring für Lambda-Argumente
    • Underscores für ungenutzte Lambda-Parameter
    • Delegated Property Syntax für lokale Variablen: lazy
  4. Kann jetzt Java 8 Bytecode generieren

Link

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. Wir suchen einen Scala-Entwickler (00:01:10.787)
  3. Feedback zur letzten Episode (00:01:41.731)
  4. Nachtrag zu Contextual (00:03:52.877)
  5. Introducing the Scala Platform Process (00:05:02.296)
  6. Scala 2.13 Roadmap (00:09:00.131)
  7. Scala auf Platz 11 im RedMonk Ranking (00:22:26.595)
  8. Scala.js 0.6.15 (00:26:33.059)
  9. Scala Native 0.1 (00:31:17.848)
  10. Android: Java 8 (und Scala) (00:38:06.232)
  11. Java: Project Amber (00:41:37.187)
  12. Kotlin 1.1 (00:49:47.747)
  13. Outro (00:55:41.261)

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

Kapitel

1. Intro (00:00:00)

2. Wir suchen einen Scala-Entwickler (00:01:10)

3. Feedback zur letzten Episode (00:01:41)

4. Nachtrag zu Contextual (00:03:52)

5. Introducing the Scala Platform Process (00:05:02)

6. Scala 2.13 Roadmap (00:09:00)

7. Scala auf Platz 11 im RedMonk Ranking (00:22:26)

8. Scala.js 0.6.15 (00:26:33)

9. Scala Native 0.1 (00:31:17)

10. Android: Java 8 (und Scala) (00:38:06)

11. Java: Project Amber (00:41:37)

12. Kotlin 1.1 (00:49:47)

13. Outro (00:55:41)

15 Episoden