Gehen Sie mit der App Player FM offline!
SP003: Strategic Scala Style, Kotlin 1.0
Manage episode 157012359 series 1206977
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
undOption
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+.
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).
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
Manage episode 157012359 series 1206977
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
undOption
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+.
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).
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
Alle Folgen
×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.