SP003: Strategic Scala Style, Kotlin 1.0

1:20:20
 
Teilen
 

Manage episode 157012359 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.

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

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

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

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

Akka 2.4.2

Akka 2.4.2 integriert Akka Streams & Akka HTTP.

Link

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

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

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

Kauf uns einen Kaffee

Kapitel

  1. Opener (00:00:00.000)
  2. Scala Improvement Process (00:00:59.945)
  3. Strategic Scala Style (00:04:13.240)
  4. Scala Collection Guide (00:48:45.219)
  5. Kotlin 1.0 (00:52:44.376)
  6. Akka 2.4.2 (01:13:35.277)
  7. Play 2.5.0 RC1 (01:14:24.749)
  8. uPod 5.0 (01:17:20.605)
  9. Outro (01:18:06.611)

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. Opener (00:00:00)

2. Scala Improvement Process (00:00:59)

3. Strategic Scala Style (00:04:13)

4. Scala Collection Guide (00:48:45)

5. Kotlin 1.0 (00:52:44)

6. Akka 2.4.2 (01:13:35)

7. Play 2.5.0 RC1 (01:14:24)

8. uPod 5.0 (01:17:20)

9. Outro (01:18:06)

15 Episoden