Kotlin: Das bessere Java
(Bild: Leontiy Spafaryev / Wikipedia/CC-BY 3.0)
Kotlin ist die am schnellsten wachsende Programmiersprache auf der Java Virtual Machine. Was macht Kotlin so attraktiv?
Eine gute Programmiersprache erhöht die Lesbarkeit von Programmen und deren langfristige Wartbarkeit. Je schneller Fehler behoben werden können, desto mehr Zeit bleibt für das Entwickeln des Produkts. Genau dort setzt Kotlin an: Die Programmiersprache auf der Java Virtual Machine (JVM) hat sich zum Ziel gesetzt, viele Fehler gar nicht erst entstehen zu lassen. Durch Null Safety können Null Exceptions bereits zur Compile-Zeit ausgeschlossen werden.
Eine Fülle an Sprachkonstrukten wie Sealed Classes, Objects und Inline Classes ermöglicht es, Datentypen zu definieren, die unstimmige Kombinationen gar nicht erst zulassen. Damit das Arbeiten mit der Sprache trotz der statischen Typisierung möglichst angenehm ist, kann Kotlin den Datentyp automatisch dem Ausdruck entnehmen (Type Inference).
Auch mit althergebrachten Fehlerquellen räumt Kotlin auf. So wird man etwa das von Java und C/C++ bekannte Switch-Konstrukt in Kotlin nicht finden. Stattdessen gibt es ein mächtigeres When, bei dem Fehler wie vergessene break-Statements der Vergangenheit angehören.
Eines der gefragtesten Kotlin-Features sind Data Classes. Diese generieren automatisch und unsichtbar alle Methoden, die man braucht: toString(), equals(), hashCode(), copy() und alle Getters und Setters. An diesen wird eine weitere Stärke von Kotlin sichtbar: Es macht Programme besser lesbar und kürzer.
Auch Immutability hat bei Kotlin einen besonderen Stellenwert. Dies fängt bei der Benennung der Variablen an: val (immutable) und var (mutable). Der Clou: Durch die gleiche Wortlänge muss man nicht zwischen besserer Wartbarkeit und besserer Lesbarkeit wählen. Und die Entscheidung von Kotlin, das neue Interface List einzuführen, das standardmäßig immutable ist, führt dazu, dass Listen nicht mehr aus Versehen geändert werden.
Für Java-Entwickler bietet Kotlin neben einer vollen Interoperabilität zwischen Kotlin- und Java-Code vor allem eins: den kompletten Zugriff auf das gesamte Java-Ökosystem. Alle Java-Libraries sind auch unter Kotlin einsetzbar. Für Android-Entwickler konnte Kotlin in der Vergangenheit vor allem dadurch punkten, dass plötzlich viele neue Sprachkonstrukte - zum Beispiel in der funktionalen Programmierung - zur Verfügung standen, die auf Android zuvor nicht komfortabel eingesetzt werden konnten.
2019 kündigte Google an, dass Android-Entwicklung künftig "Kotlin first" sein wird. So ist Jetpack Compose, das neue UI-Toolkit für Android, komplett in Kotlin geschrieben und derzeit nur mit Kotlin zu verwenden.
Nicht zuletzt ist die Zusammenarbeit zwischen der Programmiersprache Kotlin und IntelliJ IDEA zu erwähnen. Da beide von Jetbrains entwickelt werden, konnte ein besonderes Augenmerk auf das Zusammenspiel gelegt werden. Es funktionieren alle Refactorings, die man heutzutage erwartet. Hinzu kommen weitere Helfer: Viele Kotlin-Konstrukte können über Shortcuts und Quick Fixes verbessert werden.
Kotlin ist leicht zugänglich
Doch was nützt eine gute Programmiersprache, wenn sie schwierig zu erlernen ist und daher wenig Anhänger findet? Hier hat Jetbrains ein Tool geschaffen, um Java-Entwicklern den Einstieg zu erleichtern. Das Kotlin-Plugin von IntelliJ IDEA hat einen eingebauten Konverter, der Code Snippets und ganze Klassen automatisch von Java zu Kotlin konvertieren kann. Das ist nicht nur praktisch, um loszulegen, sondern auch, um zu erlernen, wie bekannte Java-Konstrukte in Kotlin geschrieben werden. Daneben gibt die IDE Tipps und Quick Fixes, über die man fast spielerisch neue Kotlin-Konzepte erlernen kann.
Für Java-Entwickler erfreulich: Im Gegensatz zu anderen Sprachen muss man nicht sofort eine neue Denkweise - etwa funktionale Programmierung - adaptieren, sondern kann mit der klassischen imperativen Denkweise loslegen. Ein weiterer Vorteil: Statt eine mehrere Monate dauernde Migration machen zu müssen, können Kotlin- und Java-Dateien in einem Projekt koexistieren und aufeinander zugreifen. Das heißt: Auch während einer Migration bleibt das Projekt voll einsatzfähig.
Zum Erlernen der Sprache und für die Weiterbildung gibt es zahlreiche Wege. Kotlin selbst bietet eine exzellente Dokumentation, die dank play.kotlinlang.org auch direkt im Browser ausprobierbare Code Snippets bietet. Mit dem "Kotlin-Koans"-Tutorial lassen sich viele Kotlin-Features testen. Für einige spezielle Themen bietet Kotlin selbst Hands-on-Tutorials an. Und über Stackoverflow und Kotlin Slack gibt es Antworten auf dringliche Fragen.
Wie geht's weiter mit Kotlin?
Die Entwickler von Kotlin achten stark darauf, dass die Sprache abwärtskompatibel bleibt und sich dennoch sinnvoll weiterentwickelt. Verbesserungsvorschläge und Fehler können öffentlich über Youtrack kommuniziert werden.
Ein Vortrag von Roman Elizarov wirft einen detaillierten Blick auf die Weiterentwicklung von Kotlin. Auch grundlegende Verbesserungen gehören dazu: In einer langfristigen Initiative für Qualität und Performance sind die Kotlin-Entwickler derzeit dabei, den gesamten Compiler neu zu schreiben. Laut internen Messungen von Jetbrains können Projekte damit 4,5-fach so schnell kompiliert werden.
Darüber hinaus ist Kotlin dabei, eine Brücke von der JVM in die Welt der nativen Entwicklung und ins Web zu schaffen. So lässt sich mit Kotlin MultiplatformKotlin-Code für mehrere Plattformen schreiben - und mit Techniken wie Kotlin/JS und Kotlin/Native im Browser und auf iOS einsetzen.
Die Grundideen sind dabei ähnlich wie bei Kotlin auf der JVM: inkrementell und produktiv einsetzbar bereits mit der ersten Kotlin-Datei, und mit einer guten Interoperabilität zu den jeweiligen Sprachen. Für Angular-Entwickler hat Kotlin 1.4 ein besonderes Feature parat: Der Compiler kann auch Typescript-Definitionen generieren.
Fazit
Kotlin ermöglicht Entwicklern, besser lesbaren Code zu schreiben und manche Fehler gänzlich auszuschließen. Dass Kotlin volle Kompatibilität zu Java und einen Code-Konverter bietet, erleichtert den Einstieg für Programmierer aus der Java-Welt. Das Zusammenspiel von Sprache und IDE macht Kotlin leicht erlernbar und ermöglicht auch komplexe Refactorings. Unter Android entwickelte sich die Sprache bereits zum Standard. Kotlin ist auf dem Weg, den Sprung von der JVM ins Web und in die native Entwicklung zu schaffen.
Der Autor Marc Reichelt ist Software-Entwickler bei Iteratec und verwendet Kotlin seit Jahren im Android- und Backend-Bereich produktiv in Projekten. Er tritt regelmäßig bei Kotlin-Events als Sprecher auf und gibt gemeinsam mit seinem Kollegen Andreas Feldschmid Trainings zu der Programmiersprache. In der Golem Akademie lehrt er Kotlin für Java-Entwickler, das nächste Mal am 16. und 17. November 2020 online.
veröffentlicht am 06. November 2020