Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin: Java neu gedacht

Michael Zinn
February 25, 2016

Kotlin: Java neu gedacht

Java ist als Programmiersprache weit verbreitet, hat durch seine lange Historie aber auch viele Altlasten. Welche Programmiersprache gibt es als Alternative, wenn man einerseits nach etwas besserem als Java sucht, andererseits aber keine komplett andersartige Programmiersprache lernen will? Die Alternative zu Java heißt Kotlin; entwickelt wurde sie bei Jetbrains - den Machern von IntelliJ Idea und Android Studio. Der Vortrag gibt eine Übersicht über Kotlin (Syntax, null-safety, Lambdas etc.) und richtet sich hauptsächlich an Java-Entwickler. Durch Kotlins Ähnlichkeit mit Swift ist er aber auch für iOS-Entwickler interessant, die nach einer Möglichkeit suchen, Android-Apps ohne Java zu entwickeln.

Michael Zinn

February 25, 2016
Tweet

More Decks by Michael Zinn

Other Decks in Technology

Transcript

  1. + + Warum noch eine Sprache? • JetBrains brauchte ein

    besseres Java • JetBrains? – IntelliJ (Android Studio, WebStorm, PyCharm, ...) – 100 % Java – Unzufrieden mit Java, nicht von Scala überzeugt
  2. + + Kotlin: • Java, von Grund auf überarbeitet •

    Ein paar Extra-Features • Praktisch (100% Java-kompatibel, IDE-Support...)
  3. + + Operatoren • + ist auch .plus(): val sum

    = BigInt(“100”) + quadrillion • -,*,/ etc. äquivalent • === entspricht Javas == • == bedeutet: – null == null → true – null == something → false – foo == bar → foo.equals(bar)
  4. + + Operatoren • + ist auch .plus(): val sum

    = BigInt(“100”) + quadrillion • -,*,/ etc. äquivalent • === entspricht Javas == • == bedeutet: – null == null → true – null == something → false – foo == bar → foo.equals(bar)
  5. + + Java: Wie mit null umgehen? • Sinnvolle Methodennamen

    • Assertions/Preconditions • Optionals • Annotations (Standard, IntelliJ, Android Support?) • Linter • Statische Analyse
  6. + + Lambda • Java 8: (int a, int b)

    -> a + b • Kotlin: { a, b -> a + b } oder { foo(it) } • Clojure: (fn [a b] (+ a b)) • JavaScript: function(a, b) { return a + b; } • CoffeeScript: (a, b) -> a + b • Ruby: ->(a, b) {a + b}
  7. + + Android-Beispiel • Ziel: Wenn man auf einen Button

    klickt → App beenden • Technisch: button onClick → finish()
  8. + + Android-Beispiel ohne Lambda • Ziel: Wenn man auf

    einen Button klickt → App beenden • Technisch: button onClick → finish()
  9. + + Android-Beispiel mit Lambda • Ziel: Wenn man auf

    einen Button klickt → App beenden • Technisch: button onClick → finish()
  10. + +

  11. + +

  12. + +

  13. + +

  14. + + Sonstige Features • Class Delegation, Delegated Properties •

    Kovarianz, Kontravarianz wie in C#: List<out String> • Inline Functions • Destructuring: val (firstName, lastName) = getPerson() • Ranges: for (i in 1..4) print(i) • When-Expression: besseres switch-statement • Singletons, Companion Objects
  15. + + Tools • Offiziell: – IntelliJ (Android Studio): Fast

    so ausgereift wie der Java-Support – Eclipse plugin – Kommandozeile: Compiler, REPL – TextMate? • Inoffiziell – Atom Editor: Syntax Highlighting, Linter – Etc.
  16. + + 100% Java kompatibel • Gleiche Datentypen (String, Int

    etc.) • Mischbar im gleichen Projekt (aber nicht gleiche Datei) • Sogar mischbar in Vererbungshierachien • Extension Functions erscheinen in Java als static methods • Java String erscheint in Kotlin als “String!”, Programmierer entscheidet ob das “String” oder “String?” bedeutet. Alternativ: Externe Annotation.
  17. + + Nachteile? • Automatisch konvertierter Code muss manchmal nachbearbeitet

    werden • APK ca. 400kB größer • Version 1.0 erschien letzte Woche (allerdings war die Beta schon länger produktiv nutzbar)
  18. + + Sollte man Kotlin benutzen? • Server/Desktop: Kommt drauf

    an. • JavaScript: Noch nicht (Support ist in Arbeit) • Android:
  19. + + Sollte man Kotlin benutzen? • Server/Desktop: Kommt drauf

    an. • JavaScript: Noch nicht (Support ist in Arbeit) • Android: Ja, wenn man mit Java unzufrieden ist
  20. + + Zusammenfassung: Kotlin ist... • Java, von Grund auf

    überarbeitet • Ein paar Extra-Features • Praktisch (100% Java-kompatibel, IDE-Support...) -Ende-
  21. + + Zusammenfassung: Kotlin ist... • Java, von Grund auf

    überarbeitet • Ein paar Extra-Features • Praktisch (100% Java-kompatibel, IDE-Support...) Fragen?
  22. + + 31.03.2016 | 19:00 | CoSee Büro Go (Die

    Programmiersprache, nicht das Brettspiel) Tobias Breitwieser https://talks.cosee.biz/ Was gibt's als nächstes? Go