Scala Profis artwork

SP003: Strategic Scala Style, Kotlin 1.0

Scala Profis

German - February 22, 2016 20:48 - 1 hour - 56.9 MB
Technology News Tech News Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed


SP003: Strategic Scala Style, Kotlin 1.0



SIP: Scala Improvement Process

Der Scala Improvement Process unterscheidet SIPs und SLIPs.


SIP

Änderungen an der Sprache oder am Compiler
Führt normalerweise zu Änderungen an der Scala Language SpecificationScala Language Specification.
Jeder kann einen SIP submitten
Durchlaufen einen strengen Review-Prozess mit vielen Reviews und Diskussionen.
Beurteilung durch das SIP-Komitee — derzeit bestehend aus

Martin Odersky
Josh Suereth
Adriaan Moors
Seth Tisue
Dick Wall
Heather Miller

SLIP

Der Scala Library Improvement Process ist ähnlich dem SIP, bezieht sich aber auf Änderungen und Erweiterungen an der Standard-Library. Er ist ebenfalls »intensiv«, aber deutlich weniger streng als der SIP.


Links

Scala Improvement Process

Strategic Scala Style: Principle of Least Power

Blog-Post von Li Haoyi zu Best Practices zum Schreiben von verständlichem Scala Code. Martin Odersky ist der Meinung, dass jeder Scala-Entwickler dieses Post gelesen haben sollte.


Principle of Least Power

Komplexität ist Dein Feind
Scheue Dich nicht vor Refactorings
Vermeide Over-Engineering

Links

Strategic Scala Style: Principle of Least Power
Empfehlung von Martin Odersky auf Twitter

Scala Collection Guide

Toller Artikel zu Scala Collections von 47 Degrees:

Vergleich von Mutable und Immutable Collections
Vergleich von Seq, List und Vector
Vergleich bzgl. Performance und Handhabbarkeit
Übersichtliche Vergleichstabellen
Typische Stolpersteine
Klare Empfehlungen

Erkenntnis

Vector ist als »general Purpose«-Lösung List vorzuziehen.


Link

Adventures with Scala Collections

Kotlin 1.0

Nach viereinhalb Jahren ist Kotlin 1.0 erschienen.


Ziele

Ziel von Kotlin war es ursprünglich eine mächtigere Alternative zu Java zu schaffen, die folgende Bedingungen erfüllt:

Adressierung der Pain-Points von Java (zum Beispiel Vermeidung von Boilerplate und NPEs)
Hohe Interoperabilität mit Java
JVM, Android und JavaScript als Ziel (in 1.0 ist JavaScript noch experimentell)
Kleine Standard-Library und somit gute Eignung für zum Beispiel Android
Von Anfang an mächtiges Tooling (Entwicklungsumgebung)
Dabei aber einen Compiler, der mindestens so schnell ist wie der Java-Compiler

Sprach-Features

Hohe Ähnlichkeit zu Scala, aber deutlich abgespeckter Funktionsumfang.

Kompakte Syntax (sieht auf den ersten Blick wie Scala aus)
Alles ist ein Objekt
Generics inklusive Varianz
Klassen und Objekte

Data-Classes (vergleichbar zu Case-Classes in Scala)
Singletons
Primäre Konstruktoren
Properties
Getter und Setters
Interfaces (wie in Java 8: können Methoden implementieren, aber keinen Status haben)
Delegation

Funktionen

Higher Order Functions und Lambdas
Lokale Funktionen
Default-Argumente
Benannte Argumente
Infix-Notation
Tail Recursion
Extension Functions
Inline Functions

Sonstiges

Mutable und Immutable Collections
Type-Checks und implizite Casts
Destructing Declarations (ähnlich unapply)
Operator-Überladung
Null-Safety
keine checked Exceptions
Dynamic Type
String Templates (String-Interpolation)

Tools

Natürlich wird Kotlin ab Werk von IntelliJ und somit auch Android Studio unterstützt. Inzwischen gibt es auch eine erste Version eines Plug-Ins für Eclipse.


Einschätzung

Sven meint: Bei Kotlin wurde vieles richtig gemacht. Die Pain-Points von Java wurden adressiert, ohne die Schwelle so hoch zu legen, wie sie bei Scala ist (mir persönlich würden wahrscheinlich am meisten die Traits fehlen).


Nach dem Erfolg von Swift für iOS schreien viele nach einer Alternative zu Java für Android. Mit Kotlin ist diese bereits verfügbar und wird in der offiziellen Standardentwicklungsumgebung Android Studio direkt mitgeliefert und funktioniert out-of-the-box. Ich könnte mir vorstellen, dass Kotlin genau über diesen Weg erfolgreich werden könnte.


Das die Sprache von 20 bezahlten Vollzeitentwicklern weiterentwickelt und bei JetBrains selbst strategisch genutzt wird ist eine gute Grundlage.


Links

Kotlin 1.0 released
Kotlin Homepage

Akka 2.4.2

Akka 2.4.2 integriert Akka Streams & Akka HTTP.


Link

Announcement: Akka 2.4.2 released

Play 2.5.0‑RC1

Erster Release-Candidate für Play 2.5.0.


Hauptthemen in Play 2.5.0

Wechsel von Iteratees zu Akka streams für asynchrones IO-Streaming
Java-API: Play-spezifische funktionale Typen wie Promise und Option wurden durch ihre Java 8 Pendants ersetzt
Java-API: Annäherung der Java API an die von Scala auf Basis der neuen Möglichkeiten in Java 8 (z.B. Filter und eigene Body-Parser)
Verbesserte Performance (bis zu 20%)
Unterstützung für andere Logging-Frameworks (weg von Logback, hin zu SLF4J-kompatiblen Frameworks)
Logging von SQL-Statements (unabhängig vom verwendeten Persistence-Framework)

Neues Streaming basierend auf Akka-Streams

Bisheriger Mechanismus auf Basis von Iteratees ist mächtig und sicher, bringt aber eine steile Lernkurve mit sich
Akka Streams bieten einen guten Kompromiss zwischen Sicherheit und Einfachheit
Akka Streams finden in Play an folgenden Stellen Anwendung:

Filter
Streaming Response-Bodies
Request Body-Parsers
WebSockets
Streaming Web-Service Client-Responses

Iteratees können weiter genutzt werden.

Links

Play 2.5.0‑RC1 released
What’s new in Play 2.5

uPod 5 mit Unterstützung für Kapitelmarken

Svens komplett in Scala geschriebener Podcast-Player für Android bringt in Version 5 Unterstützung für Kapitelmarken, wie sie zum Beispiel auch bei unserem Podcast zum Einsatz kommen.


Damit kann man weniger interessante Themen (betrifft natürlich nicht unseren Podcast) überspringen oder Themen direkt anspringen.


Links

uPod 5.0: A new Chapter in Playback
uPod auf Google Play

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



Kapitel

Opener (00:00:00.000)
Scala Improvement Process (00:00:59.945)
Strategic Scala Style (00:04:13.240)
Scala Collection Guide (00:48:45.219)
Kotlin 1.0 (00:52:44.376)
Akka 2.4.2 (01:13:35.277)
Play 2.5.0 RC1 (01:14:24.749)
uPod 5.0 (01:17:20.605)
Outro (01:18:06.611)

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