Von Java zu Kotlin - Carsten Vogt - E-Book

Von Java zu Kotlin E-Book

Carsten Vogt

0,0

Beschreibung

- Systematische Einführung in Kotlin mit Konzentration auf die Unterschiede zu Java - Verweise auf Internet-Dokumentationen, Werkzeuge und weiterführende Informationen - Im Anhang: Kurzübersicht zum schnellen Einstieg in die grundlegenden Kotlin-Konzepte - Mit Zusatzmaterial: Beispielprogramme aus dem Buch und Lösungen der Aufgaben - Ihr exklusiver Vorteil: E-Book inklusive beim Kauf des gedruckten Buches Ausgangspunkt ist die Programmiersprache Java, die in vielen Einführungskursen gelehrt wird und die traditionelle Sprache zur Entwicklung von Android-Apps ist. Auf dieser Basis führt das Buch in den Java-Nachfolger Kotlin ein. Kotlin behebt zahlreiche Defizite von Java und wird daher mittlerweile bei der Android-Programmierung bevorzugt sowie in weiteren Bereichen eingesetzt. Das Buch zeigt zunächst die Vorteile von Kotlin gegenüber Java auf und illustriert typische Sprachkonzepte anhand kurzer Beispiele. Anschließend werden die relevanten Aspekte und Techniken im Detail diskutiert und anhand von Code-Beispielen illustriert, ohne jedoch aus Java Bekanntes zu wiederholen. Es werden Anregungen für die eigenständige Hands-On-Arbeit sowie Hinweise auf weiterführende Informationen im Internet gegeben. Leserinnen und Lesern mit Java-Erfahrung bietet dieses Buch, insbesondere auch durch seinen Anhang Kotlin kurzgefasst, somit einen raschen praktischen Einstieg in die Kotlin-Programmierung. AUS DEM INHALT // - Einführung - Datenorganisation - Kontrollstrukturen - Nullsicherheit - Funktionen und Lambdas - Collections - Klassen Grundlagen - Klassen Erweiterungen - Nebenläufi gkeit - Weiterführende Themen - Anhang: Kotlin kurzgefasst - Systematische Einführung in Kotlin mit Konzentration auf die Unterschiede zu Java - Verweise auf Internet-Dokumentationen, Werkzeuge und weiterführende Informationen - Im Anhang: Kurzübersicht zum schnellen Einstieg in die grundlegenden Kotlin-Konzepte - Mit Zusatzmaterial: Beispielprogramme aus dem Buch und Lösungen der Aufgaben

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 323

Veröffentlichungsjahr: 2026

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Lehrbücher zur Informatik

Begründet von

Prof. Dr. Michael Lutz und Prof. Dr. Christian Märtin

weitergeführt von

Prof. Dr. Christian Märtin

Hochschule Augsburg, Fachbereich Informatik

Zu dieser Buchreihe

Die Werke dieser Reihe bieten einen gezielten Einstieg in grundlegende oder besonders gefragte Themenbereiche der Informatik und benachbarter Disziplinen. Alle Autoren verfügen über langjährige Erfahrung in Lehre und Forschung zu den jeweils behandelten Themengebieten und gewährleisten Praxisnähe und Aktualität.

Die Bände der Reihe können vorlesungsbegleitend oder zum Selbststudium eingesetzt werden. Sie lassen sich teilweise modular kombinieren. Wegen ihrer Kompaktheit sind sie gut geeignet, bestehende Lehrveranstaltungen zu ergänzen und zu aktualisieren.

Die meisten Werke stellen Ergänzungsmaterialien wie Lernprogramme, Software-Werkzeuge, Online-Kapitel, Beispielaufgaben mit Lösungen und weitere aktuelle Inhalte auf eigenen Websites zur Verfügung.

Titel in dieser Reihe

       Peter Forbrig, Objektorientierte Softwareentwicklung mit UML

       Arne Mayer, Die Kunst der IT-Produktentwicklung [in Planung]

       Rainer Oechsle, Parallele und verteilte Anwendungen in Java

       Claudia Reuter, Requirements Engineering – klassisch, agil und hybrid [in Planung]

       Wolfgang Riggert / Ralf Lübben, Rechnernetze

       Carsten Vogt, Von Java zu C

       Carsten Vogt, Von Java zu Kotlin

Carsten Vogt

Von Java zu Kotlin

Effizient eine neue Sprache lernen

Ihr Plus – digitale Zusatzinhalte!

Auf plus.hanser-fachbuch.de gibt es kostenloses Zusatzmaterial zu diesem Buch.

Den Zugangscode finden Sie am Ende des Werkes.

Der Autor:

Prof. Dr. Carsten Vogt, Bergisch Gladbach

Print-ISBN:        978-3-446-48372-9 E-Book-ISBN:   978-3-446-48483-2 E-Pub-ISBN:   978-3-446-48590-7

Die allgemein verwendeten Personenbezeichnungen gelten gleichermaßen für alle Geschlechter.

Alle in diesem Werk enthaltenen Informationen, Verfahren und Darstellungen wurden zum Zeitpunkt der Veröffentlichung nach bestem Wissen zusammengestellt. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Werk enthaltenen Informationen für Autor:innen, Herausgeber:innen und Verlag mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor:innen, Herausgeber:innen und Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Weise aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso wenig übernehmen Autor:innen, Herausgeber:innen und Verlag die Gewähr dafür, dass die beschriebenen Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt also auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benützt werden dürften.

Die endgültige Entscheidung über die Eignung der Informationen für die vorgesehene Verwendung in einer bestimmten Anwendung liegt in der alleinigen Verantwortung des Nutzers.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet unter http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Werkes, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Einwilligung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder einem anderen Verfahren), auch nicht für Zwecke der Unterrichtgestaltung – mit Ausnahme der in den §§ 53, 54 UrhG genannten Sonderfälle –, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Wir behalten uns auch eine Nutzung des Werks für Zwecke des Text und Data Mining nach § 44b UrhG ausdrücklich vor.

© 2025 Carl Hanser Verlag GmbH & Co. KG, München Vilshofener Straße 10 | 81679 München | [email protected]: Brigitte Bauer-Schiewek, Kristin Rothe Copy editing: Petra Kienle, Fürstenfeldbruck Herstellung: Grazyna Lada Coverkonzept: Marc Müller-Bremer, www.rebranding.de, München Covergestaltung: Thomas West Satz: Eberl & Koesel Studio, Kempten Druck: Elanders Waiblingen GmbH, Waiblingen

Inhalt

Vorwort

1 Einführung

1.1 Von Java zu Kotlin

1.2 Javas Schwächen und Kotlins Stärken

1.3 Erste Codebeispiele

1.3.1 Beispiel 1: Ein einfaches Hauptprogramm

1.3.2 Beispiel 2: Funktionen

1.3.3 Beispiel 3: Klassen und Objekte

1.4 Das Buch und sein Umfeld

1.4.1 Aufbau und Ausrichtung des Buchs

1.4.2 Quellen und Werkzeuge

2 Datenorganisation

2.1 Variablen und Konstanten

2.1.1 Deklaration und Initialisierung

2.1.2 Zuweisungen

2.1.3 Ein-/Ausgabe

2.2 Das Typkonzept

2.2.1 Grundlagen

2.2.2 Veränderliche und unveränderliche Objekte

2.2.3 Klassen- und Interface-Hierarchie

2.2.4 Typprüfung und -umwandlung

2.2.5 Typ-Alias

2.3 Zahlen und Wahrheitswerte

2.3.1 Zahlentypen und -literale

2.3.2 Operatoren für Zahlentypen

2.3.3 Bestimmung und Umwandlung von Zahlentypen

2.3.4 Wahrheitswerte

2.4 Zeichen und Zeichenketten

2.4.1 Der Typ Char

2.4.2 Der Typ String

2.5 Wertebereiche

2.5.1 Ranges

2.5.2 Progressions

2.6 Zeiten

2.7 Arrays

2.7.1 Arten von Arrays

2.7.2 Erzeugung und Initialisierung

2.7.3 Operationen auf Arrays

2.7.4 Mehrdimensionale Arrays

2.8 Ausblick: Vor- und selbstdefinierte Klassen

3 Kontrollstrukturen

3.1 Bedingte Anweisungen

3.1.1 Alternativen

3.1.2 Mehrfachverzweigungen

3.2 Schleifen

3.2.1 for

3.2.2 while und do-while

3.2.3 repeat

3.3 Ausnahmebehandlung

4 Nullsicherheit

4.1 Nullfähige und nicht-nullfähige Typen

4.2 Umgang mit nullfähigen Typen

4.3 Nullelemente in Datenstrukturen

5 Funktionen

5.1 Grundlegende Techniken

5.1.1 Programmstruktur

5.1.2 Definition und Aufruf

5.1.3 Parameter: Benennung und Defaultwerte

5.2 Spezielle Arten von Funktionen

5.2.1 Generische Funktionen

5.2.2 Geschachtelte Funktionen

5.2.3 Inline-Funktionen

5.2.4 Endrekursive Funktionen

5.3 Funktionale Programmierung

5.3.1 Grundlegende Erfordernisse

5.3.2 Funktionstypen und -variablen

5.3.3 Beispiel: Menu mit Funktionsaufrufen

5.4 Lambdas

5.4.1 Grundkonzept

5.4.2 Formen der Definition und Anwendung

5.5 Funktionen höherer Ordnung

5.5.1 Grundkonzept

5.5.2 Lambda-Parameter

5.6 Ausblick: Funktionen in Klassen und Objekten

6 Collections

6.1 Arten von Collections

6.1.1 Veränderliche und unveränderliche Collections

6.1.2 Die Interface-Hierarchie

6.2 Das Interface Collection

6.2.1 Lambda-Parameter

6.2.2 Grundlegende Properties und Funktionen

6.2.3 Prüffunktionen

6.2.4 Lese- und Schreibfunktionen

6.2.5 Such- und Filterfunktionen

6.2.6 Transformationsfunktionen

6.2.7 Aggregierungsfunktionen

6.3 Das Interface List

6.3.1 Erzeugung

6.3.2 Lesen, Schreiben, Iteration, Vergleich

6.3.3 Teil-Lists

6.4 Das Interface Set

6.5 Das Interface Map

6.6 Sequences

6.6.1 Erzeugung

6.6.2 Operationen

7 Klassen – Grundlagen

7.1 Basistechniken

7.1.1 Klassen und Objekte: Definition und Benutzung

7.1.2 Sichtbarkeiten

7.1.3 Die Klasse Any

7.2 Datenhaltung

7.2.1 Properties

7.2.2 Konstruktoren

7.3 Das Schlüsselwort object

7.3.1 Singletons

7.3.2 Companion Objects

7.3.3 Object Expressions

7.4 Datenzentrierte Klassen

7.4.1 Datenklassen

7.4.2 Enumerationsklassen

7.5 Generische Klassen

7.5.1 Typparameter und Typargumente

7.5.2 Zuweisungskompatibilität und Invarianz

7.5.3 T-Produzenten und T-Konsumenten

7.5.4 Kovarianz und Kontravarianz

7.5.5 Type Projection

7.5.6 Type Erasure und Reified Types

8 Klassen – Erweiterungen

8.1 Vererbung

8.1.1 Basisklassen und abgeleitete Klassen

8.1.2 Konstruktoren

8.1.3 Typprüfungen und -umwandlungen

8.1.4 Sealed Classes

8.2 Interfaces und abstrakte Klassen

8.2.1 Interfaces

8.2.2 Abstrakte Klassen

8.2.3 Functional Interfaces

8.3 Extensions

8.3.1 Grundkonzept

8.3.2 Definition und Benutzung

8.3.3 Implementation und Konsequenzen daraus

8.4 Funktionen mit Receivern

8.4.1 Grundkonzept

8.4.2 Funktionstypen und Lambdas mit Receivern

8.4.3 Scope Functions

8.5 Delegation

8.5.1 Vererbung versus Delegation

8.5.2 Delegation von Funktionen

8.5.3 Delegation von Properties

8.6 Operatoren

8.6.1 Überladen von Operatoren

8.6.2 Infix-Funktionen

8.7 Geschachtelte Klassen und Interfaces

9 Nebenläufigkeit

9.1 Grundlagen

9.1.1 Techniken der Nebenläufigkeit

9.1.2 Threads

9.1.3 Coroutinen mit Suspending Functions

9.2 Coroutinen: Erzeugung und Organisation

9.2.1 Coroutine Builder

9.2.2 Structured Concurrency

9.2.3 Dispatcher

9.2.4 Wechselseitiger Ausschluss und Reihenfolge

9.2.5 Abbruch

9.3 Flows

9.3.1 Cold Flows

9.3.2 Hot Flows

9.3.3 Operationen auf Flows

10 Weitere Themen

10.1 Reflection

10.1.1 Grundlagen

10.1.2 Klassen

10.1.3 Objekte und Ausdrücke

10.1.4 Properties und Funktionen

10.2 Type-Safe Builder

10.2.1 Problem und Lösungsansatz

10.2.2 Vorgehensweise

10.2.3 Rekursive Strukturen

10.2.4 Anwendungsgebiete

10.3 Reguläre Ausdrücke

10.3.1 Erzeugung

10.3.2 Anwendung

10.4 Kotlin Multiplatform

Quellen und Dokumentationen

Lösungen der Hands-On-Aufgaben

Kapitel 2 Datenorganisation

Kapitel 3 Kontrollstrukturen

Kapitel 4 Nullsicherheit

Kapitel 5 Funktionen

Kapitel 6 Collections

Kapitel 7 Klassen – Grundlagen

Kapitel 8 Klassen – Erweiterungen

Kapitel 9 Nebenläufigkeit

Kapitel 10 Weitere Themen

Kotlin kurzgefasst

Von Java zu Kotlin

Datenorganisation

Kontrollstrukturen

Nullsicherheit

Funktionen

Collections

Klassen – Grundlagen

Klassen – Erweiterungen

Nebenläufigkeit

Weitere Themen

Vorwort

Der Mensch ist ein Gewohnheitstier: Wenn man sich erst einmal an etwas gewöhnt hat, dann bleibt man gern dabei und sieht über Unzulänglichkeiten hinweg. Manchmal ist das auch gut so, denn Veränderungen machen Arbeit und Neues ist nicht unbedingt besser. Oft ist aber der Aufwand für einen Wechsel geringer, als es zunächst scheint, und er lohnt den Gewinn, den man damit macht. Im Idealfall kann man sogar Neues und Altes gemeinsam einsetzen, sodass der Übergang weich ist und man bewährte Dinge beibehalten kann.

Ein gutes Beispiel hierfür ist das Programmiersprachen-Duo Java und Kotlin. Java als altbewährte Sprache bietet viele Möglichkeiten und wird in vielen Bereichen verwendet. Wer aber intensiver mit Java programmiert, dem/der wird einiges auffallen, das verbessert werden könnte – so zum Beispiel die Robustheit gegen Null Pointer Exceptions, eine Unterstützung von „Stand-Alone-Funktionen“ (also Methoden, die unabhängig von Klassen definiert und verwendet werden), weniger Zwang zum Einsatz von try-catch-Konstrukten, eine kompaktere Definition von Klassen und einiges mehr.

Kotlin wurde in diesem Sinne als Nachfolgesprache von Java entwickelt. Es hat einerseits viele bewährte Dinge von Java übernommen und andererseits Problemstellen beseitigt sowie zahlreiche neue Programmkonstrukte hinzugefügt. Sehr vorteilhaft ist, dass man Kotlin und Java gemeinsam einsetzen, also im selben Programm einen Teil des Codes in Java und einen anderen in Kotlin schreiben sowie auf Bibliotheken beider Sprachen zurückgreifen kann. Java und Kotlin sind somit „interoperabel“. Daher lohnt sich ein Übergang von Java zu Kotlin nicht nur, sondern er kann zudem weich vonstattengehen.

Aktuell wird Kotlin, neben Backend-Anwendungen, insbesondere für die Programmierung von Mobilgeräte-Apps eingesetzt. So empfiehlt Google für seine Android-Plattform nunmehr Kotlin anstelle von Java. Gerade auf diesem Feld kann Kotlin seine Stärken ausspielen: Die Programmierarbeit wird leichter und man kann vorhandenen Java-Code in neuen Kotlin-basierten Projekten weiterverwenden und bei Bedarf schrittweise anpassen.

Das Buch wendet sich daher an Lernende und Profis, die bereits Erfahrung mit Java haben und Kotlin als weitere Programmiersprache lernen wollen oder müssen. Es ist keine grundständige Darstellung von Kotlin, sondern konzentriert sich auf die Besonderheiten der Sprache gegenüber Java. Damit bietet es eine zwar vergleichsweise kurze, aber doch recht detaillierte und tiefgängige Einführung in Kotlin.

Künstliche Intelligenz ist beim Schreiben dieses Buchs nur begrenzt eingesetzt worden. Die Beispielprogramme und natürlich auch die Texte selbst wurden per Kopf und Hand erstellt. KI wurde, neben Literatur und Web-Quellen, zur Recherche genutzt und zum nachträglichen Gegenlesen einiger Textstellen. Das war in vielen Fällen hilfreich, brachte aber manchmal auch irreführende oder sogar schlichtweg falsche Resultate. Es zeigte sich wieder, dass man sich auf KI nicht unbesehen verlassen sollte, und mein Dank an sie (wenn man sie denn personifizieren möchte) ist daher nur ein eingeschränkter.

Mein uneingeschränkter Dank geht aber an

       alle Beteiligten beim Hanser-Verlag, insbesondere Frau Bauer-Schiewek und Frau Rothe, für die wieder problemlose und angenehme Zusammenarbeit,

       meine Frau Sabine dafür, dass ich auch abends auf dem Sofa neben ihr auf meinem Notebook herumtippen durfte, und

       ganz besonders Herrn Dipl.-Ing. Marcel Henk für viele anregende Gespräche zu Kotlin und Android sowie für alles andere in einem langen gemeinsamen Berufsleben.

Kommentare zum Buch und (hoffentlich wenige) Fehlermeldungen erbitte ich per Mail an [email protected].

Bergisch Gladbach, im Sommer 2025 Carsten Vogt

Für eine schnelle Übersicht können Sie zunächst den Abschnitt Kotlin kurzgefasst im Anhang lesen, bevor Sie mit der eigentlichen Lektüre beginnen.

Zusatzmaterial zum Buch

Zu diesem Buch stehen Ihnen weitere Inhalte digital zur Verfügung:

       die Beispielprogramme

       der Lösungscode der Aufgaben

       die nach Drucklegung entdeckten Fehler

       Links auf Online-Quellen

Die Zugangsinformationen finden Sie im Kasten zum Zusatzmaterial auf Seite I im Buch.

Hinweise auf Dokumentationen und Werkzeuge, die im Internet frei verfügbar sind, gibt der Literaturteil im Anhang.

1Einführung
2Datenorganisation