Kotlin - Das umfassende Praxis-Handbuch

Book description

  • Fundierte Einführung mit zahlreichen Beispielen aus der Praxis
  • Kotlin für Android- und Webanwendungen
  • Mit vielen Tipps für Java-Umsteiger

Kotlin ist eine Programmiersprache, die sich in den letzten Jahren von einem reinen Java-Ersatz für Android zu einer vollwertigen Cross-Plattform-Sprache entwickelt hat.

Dieses Buch richtet sich an Entwickler, die Kotlin als neue Programmiersprache kennenlernen und in einer Java-Umgebung wie Android einsetzen wollen, oder die sich für Multiplattform-Techniken interessieren. Dabei konzentriert sich der Autor auf die Grundlagen der Sprache und erläutert umfassend ihre Strukturen, Befehle und Sprachfeatures.

Anhand zahlreicher Beispiele lernen Sie, wie Sie Kotlin in einer Produktivumgebung effektiv einsetzen können. Da Kotlin funktionale Programmierung ermöglicht und sich an diesem Konzept orientiert, erläutert der Autor außerdem, was Sie wissen müssen, um funktionalen und objektorientierten Stil zu kombinieren.

Darüber hinaus erhalten Sie einen Ausblick auf weiterführende Themen und Konzepte wie automatische Tests, die Organisation von größeren Projekten durch Architekturmuster und die Nebenläufigkeit mit Kotlin-Coroutines.

Auch die Anwendung von Kotlin für Android wird vorgestellt und gezeigt, wie die neue Sprache konkret hilft, moderne Architekturen umzusetzen.

Zum Abschluss geht der Autor auf die Entwicklung von Cross-Plattform- sowie JavaScript-Anwendungen mit Kotlin ein.

Mit diesem Buch erhalten Sie einen umfassenden Einstieg in Kotlin. Es enthält viele Informationen für Entwickler, die sich das erste Mal mit einer statisch typisierten Sprache beschäftigen und für diejenigen, die von der Android-Entwicklung mit Java kommen und auf Kotlin umsteigen und bisherigen Code ergänzen oder ersetzen wollen.

Table of contents

  1. Impressum
  2. Einleitung
  3. Kapitel 1: Eigenschaften von Kotlin
    1. 1.1 Eine neue Sprache
    2. 1.2 Kotlin und Android
    3. 1.3 Vorteile von Kotlin
    4. 1.4 Ziele der Entwicklung von Kotlin
      1. 1.4.1 Übersichtlichkeit, präziser Ausdruck
      2. 1.4.2 Sicher‌heit
      3. 1.4.3 Interoperabi‌lität
  4. Kapitel 2: Arbeiten mit Kotlin
    1. 2.1 Entwicklungsumgebung einrichten
      1. 2.1.1 IntelliJ
      2. 2.1.2 Android Studio‌
    2. 2.2 Tools‌
      1. 2.2.1 Kotlin-Compi‌ler
      2. 2.2.2 Kotlin-Compil‌er mit Gradle
      3. 2.2.3 Integrierte Entwicklungsumgebungen/IDE
      4. 2.2.4 Konvertierung von existierendem Code
  5. Kapitel 3: Kotlin by example
    1. 3.1 Hello world!
    2. 3.2 Hello null!
      1. 3.2.1 Ein erster Test
      2. 3.2.2 Eine erste Exception
      3. 3.2.3 Eine erste Variable – Null-Sicherheit
      4. 3.2.4 ‌Let und La‌mbdas
      5. 3.2.5 Eine erste Schle‌ife
    3. 3.3 Hello Android!
    4. 3.4 Hello Kotlin!
  6. Kapitel 4: Grundlagen und Daten
    1. 4.1 Expressions vs. Statements
    2. 4.2 Strukturierung von Code durch Dateien, Klassen, Funktionen und Blöcke
    3. 4.3 Funktionen
      1. 4.3.1 Direkte Funktionsauf‌rufe
      2. 4.3.2 Benutzung von Lambdas
    4. 4.4 Variablen
      1. 4.4.1 Deklaration: Immutable vs. Mutable, Zuweisung
      2. 4.4.2 Typen und Typsich‌erheit
      3. 4.4.3 Null-Siche‌rheit
      4. 4.4.4 Typinfe‌renz
      5. 4.4.5 Gene‌rics benutzen
      6. 4.4.6 B‌oxing
    5. 4.5 Besonderheiten der Datentypen
      1. 4.5.1 Za‌‌hlen
      2. 4.5.2 Boo‌‌lean
      3. 4.5.3 C‌‌hars und S‌‌trings – Zeichen und Zeichenketten
      4. 4.5.4 Obj‌ekte un‌d Any
      5. 4.5.5 Arr‌‌ays und Listen
      6. 4.5.6 Maps‌‌
      7. 4.5.7 Ra‌‌nges
  7. Kapitel 5: Grundstrukturen
    1. 5.1 Kontrollstrukt‌uren
    2. 5.2 Verzweigu‌ngen mit if
    3. 5.3 Verzweigung mit whe‌n
    4. 5.4 Schleifen mit for und while
      1. 5.4.1 for-Schleifen
      2. 5.4.2 while-Schleifen
      3. 5.4.3 repeat
      4. 5.4.4 break/named break und continue
      5. 5.4.5 Funktionsbasierte Alternativen
    5. 5.5 Exception Handling mit try/c‌atch
    6. 5.6 Annotations
    7. 5.7 Datentypen‌
      1. 5.7.1 Type-Casting
      2. 5.7.2 Type-Casting und null
      3. 5.7.3 Smart Casts
      4. 5.7.4 Type Aliases
  8. Kapitel 6: Funktionen und Lambdas
    1. 6.1 Funktionale Entwicklung
    2. 6.2 Syntax von Funktionen
      1. 6.2.1 Kurzformen von Funktionsdefinitionen
      2. 6.2.2 Parameter
      3. 6.2.3 Variable Anzahl von Parametern
      4. 6.2.4 Rückgabe
      5. 6.2.5 Destrukturierende Deklarationen
      6. 6.2.6 Kombination mehrerer Funktionsaufrufe
    3. 6.3 Höhere Funktion und Lambdas
      1. 6.3.1 Funktionen als Parameter
      2. 6.3.2 Funktionstyp für Variablen
    4. 6.4 Chaining von Lambdas
    5. 6.5 Rekursive Funktionen
    6. 6.6 Spezielle Funktionen
      1. 6.6.1 Lokale Funktionen
      2. 6.6.2 Inline-Funktionen
      3. 6.6.3 Infix-Funktionen
      4. 6.6.4 Actual-Funktionen
      5. 6.6.5 Überladene Operatoren
  9. Kapitel 7: Packages, Klassen und Objekte
    1. 7.1 Architektur und Entwurf
    2. 7.2 Packages, Klassen und Interfaces
      1. 7.2.1 Klassen und Interfaces organisieren das Modell
      2. 7.2.2 Klassen und Interfaces, Vererbung
      3. 7.2.3 Packages organisieren das Projekt
      4. 7.2.4 Sichtbarkeitsmodifier
      5. 7.2.5 Import
    3. 7.3 Von der Klasse zum Objekt – Meet the members
      1. 7.3.1 Konstruktoren und Initializer
      2. 7.3.2 Propert‌ies
      3. 7.3.3 Custom Getter/Setter
      4. 7.3.4 Methoden
      5. 7.3.5 Innere Klassen
      6. 7.3.6 Companion Objects
    4. 7.4 Objekt-Anweisungen
      1. 7.4.1 Singletons via Objekt-Deklaration
      2. 7.4.2 Anonyme Klassen via Objekt-Ausdruck
      3. 7.4.3 Object-Statements bei Rückgaben
    5. 7.5 Datenklassen
    6. 7.6 Generics
      1. 7.6.1 Generische Klassen
      2. 7.6.2 Beschränkung der Typen: Invariant, Kovariant, Kontravariant
      3. 7.6.3 Generische Methoden
      4. 7.6.4 Reified parameters
    7. 7.7 Enum classes
    8. 7.8 Sealed classes
    9. 7.9 Extensions
    10. 7.10 Destrukturierende Deklarationen
  10. Kapitel 8: Testing
    1. 8.1 Einführung
      1. 8.1.1 Unit-Tests
      2. 8.1.2 Integrationstests
      3. 8.1.3 Testsuite
      4. 8.1.4 Mocking und Dependency Injection
      5. 8.1.5 Konkret: Wie werden Tests geschrieben?
    2. 8.2 Erster JUnit‌-Test
    3. 8.3 Einrichten eines Testprojekts
    4. 8.4 Praxisbeispiel: Verkleinern von Funktionen
    5. 8.5 Das Testresultat lesen
    6. 8.6 Der Test von Hello world!
    7. 8.7 Test einer Klasse
    8. 8.8 Parametrisierte Tests
    9. 8.9 Testing Kotlin-Style
      1. 8.9.1 Testkomponenten
      2. 8.9.2 Spek
      3. 8.9.3 Kotlintest.io
      4. 8.9.4 kotlin.test: Unit-Tests in Multiplattform-Projekten
  11. Kapitel 9: Kotlin für Fortgeschrittene
    1. 9.1 Alles zusammenbringen
    2. 9.2 Zielplattformen
    3. 9.3 Kotlin-Standard
      1. 9.3.1 run, let, apply, with, also
      2. 9.3.2 Takeif/Takeunless
      3. 9.3.3 Collections, Arrays und Listen
      4. 9.3.4 Operationen auf allen iterierbaren Elementen
      5. 9.3.5 Texttools
      6. 9.3.6 Reflection
    4. 9.4 Delegation
      1. 9.4.1 Property Delegation
      2. 9.4.2 Class Delegation
    5. 9.5 Service Location/Dependency Injection
      1. 9.5.1 Warum eigentlich?
      2. 9.5.2 Service Locator
      3. 9.5.3 Dependency Injection
    6. 9.6 Coroutines und Nebenläufigkeit
      1. 9.6.1 Launch und Scopes
      2. 9.6.2 Async, Await und Deferred
      3. 9.6.3 Producer, Consumer und Actor
    7. 9.7 Contracts
    8. 9.8 Idiomatischer Code
      1. 9.8.1 Unveränderliche/immutable Variablen
      2. 9.8.2 Kurzformen für null
      3. 9.8.3 Kurzschreibweisen für Funktionen
      4. 9.8.4 Nutzung von Class Properties
      5. 9.8.5 Chaining von nicht chainbaren Aufrufen
      6. 9.8.6 Extensions nutzen
      7. 9.8.7 DSL mit Lambdas
      8. 9.8.8 Infix-Notation für klare Sätze
  12. Kapitel 10: Kotlin für Android
    1. 10.1 Android <3 Kotlin
    2. 10.2 Android-Komponenten
      1. 10.2.1 Package-Level und Überblick
      2. 10.2.2 Klassenlevel
    3. 10.3 Bestandteile des Android-Frameworks
      1. 10.3.1 Activities und Fragmente
      2. 10.3.2 Eine minimale App
      3. 10.3.3 Views, Rendering und Layouting
      4. 10.3.4 Der Lifecycle
      5. 10.3.5 Android Architecture Components
    4. 10.4 Architektur für größere App-Projekte
    5. 10.5 Das Architekturmodell MVP(I)
      1. 10.5.1 Der Vertrag
      2. 10.5.2 Initialisierung
      3. 10.5.3 Daten laden und initiale UI erstellen
      4. 10.5.4 Mehrere Presenter/Komponenten
      5. 10.5.5 Updates der UI und Reagieren auf Dateneingaben
    6. 10.6 Das Architekturmodell MVVM
      1. 10.6.1 MVVM-Komponenten anlegen
      2. 10.6.2 Initialisierung
      3. 10.6.3 Daten laden und initiale UI erstellen
      4. 10.6.4 Updates der UI und Reagieren auf Dateneingaben
    7. 10.7 MVP oder MVVM? It depends ...
    8. 10.8 Erweiterung von Android-Klassen
    9. 10.9 Android und Coroutines
    10. 10.10 Delegation für Android
      1. 10.10.1 Property Delegation
      2. 10.10.2 Klassendelegation
  13. Kapitel 11: Zielplattformen für Kotlin
    1. 11.1 Multiplattform-Logik
    2. 11.2 Java
      1. 11.2.1 Java-Libraries
      2. 11.2.2 Reflection
      3. 11.2.3 Streams (Java 8)
      4. 11.2.4 Java Collections
      5. 11.2.5 Java Annotations
      6. 11.2.6 Annotation Use-Site Target
    3. 11.3 JavaScript in Kotlin
      1. 11.3.1 Einrichtung oder: Wie geht denn das?
      2. 11.3.2 Grundsätzliches zu Kotlin und JS
      3. 11.3.3 Standalone JS-App
    4. 11.4 JS-Standard-Bibliothek
      1. 11.4.1 Dynamic
      2. 11.4.2 Promises
      3. 11.4.3 Browser
      4. 11.4.4 JSON-Parsing
      5. 11.4.5 Nutzung von JS-Bibliotheken/-Aufrufen
    5. 11.5 Konvertierung von existierendem Java-Code zu JS
    6. 11.6 Konvertierung und Bearbeitung von existierendem JS-Code
    7. 11.7 Multiplattform-Projekte
      1. 11.7.1 Ein Multiplattform-Projekt beginnen
      2. 11.7.2 Expected/Actual
    8. 11.8 Native
  14. Kapitel 12: Rück- und Ausblick
  15. Anhang A: Referenztabellen
    1. A.1 Factories
      1. A.1.1 Factories für Arrays
      2. A.1.2 Factories für Listen und Maps
    2. A.2 Konvertierung von Listen/Arrays
    3. A.3 Operationen auf allen iterierbaren Elementen
      1. A.3.1 Zugriff auf einzelne Elemente
      2. A.3.2 Zugriff auf Maps
      3. A.3.3 Iteration über alle oder viele Elemente
      4. A.3.4 Manipulation von Listen
      5. A.3.5 Manipulation von Maps

Product information

  • Title: Kotlin - Das umfassende Praxis-Handbuch
  • Author(s): Karl Szwillus
  • Release date: November 2019
  • Publisher(s): mitp Verlag
  • ISBN: 9783958458550