Kotlin: Die neue Standardsprache für die Entwicklung von Android Apps

30. August 2019 - von Yannick Pulver

Kotlin ist inzwischen die standartmässige Programmiersprache für die Entwicklung von nativen Android Apps. Mit dem Projekt Five up haben wir zum ersten mal eine Android App nur mit Kotlin entwickelt. In diesem Blog möchten wir einige Fragen beantworten, die rund um das Thema immer mal wieder auftauchen.

Was ist Kotlin?

Kotlin ist eine Programmiersprache, wie auch Java, Python, C++ und co. Der Kotlin Code kann zu Bytecode für Java Virtual Machine (JVM), JavaScript-Quellcode oder auch direkt in Maschinencode umgewandelt werden. Weniger technisch ausgedrückt bedeutet dies, dass die Sprache für die Entwicklung von Programmen für verschiedene Plattformen verwendet werden kann. Kotlin wird von JetBrains entwickelt, welche unter anderem auch für ihre Entwicklungsumgebungen wie IntelliJ IDEA bekannt sind. Im Vergleich mit der Programmiersprache Java, welche 1995 erschien, ist Kotlin noch eher neu (Erscheinungsjahr 2011).

Seit der Ankündigung an der Google I/O 2017 wird Kotlin offiziell für die Android Entwicklung unterstützt. Seit diesem Sommer ist Kotlin die von Google bevorzugte Sprache für die Android-Entwicklung und löst damit Java ab. Kein Wunder, denn bereits an der Droidcon 2018, wurde kaum noch Java Code auf den Folien der Referierenden gezeigt. Dies zeigt deutlich, dass die Unterstützung von Kotlin von der Android-Community sehr begrüsst, ja sogar gefeiert wird.

Wie unterscheidet sich Kotlin von Java? Was sind die Vor- und Nachteile gegenüber Java?

Kotlin hilft dabei, den wesentlichen Code etwas besser darzustellen als Java. Das Weglassen von Semikolons, expliziten Typdeklarationen und dem “new”-Keyword sind nur drei von vielen nennenswerten Verschiedenheiten. In den folgenden Abschnitten werden einige Änderungen etwas umfangreicher vorgestellt.

Null Handling

Wird mit Java entwickelt, so besteht die Möglichkeit jeder Variable von jedem Typ "null" zuzuweisen. Null steht dabei grundsätzlich für "nichts". Kurzsichtig betrachtet, erscheint dies in gewissen Fällen praktisch. Damit dieses Verhalten unter Kontrolle bleibt, muss teilweise geprüft werden, ob die Variablen null oder nicht null sind. Dies fordert dazu auf, den Code mit if-Schleifen zu füllen. Werden diese Abfragen nicht gemacht, so kann es womöglich zu einem Fehler vom Typ "NullPointerException" kommen. (Jede(r) Java-Entwickler(in) hat dies bestimmt schon erlebt).

In Kotlin werden die Null-Werte hingegen über das Typensystem kontrolliert. Dies bedeutet, dass eine Variable generell nicht null sein kann, ausser sie wird spezifisch als "nullable" mit Fragezeichen gekennzeichnet (Siehe Code Snippet). Damit erübrigen sich die erwähnten if-Schleifen in vielen Szenarien. Und falls es doch mal eine Überprüfung braucht, so stellt Kotlin einige praktische Scope Funktionen wie "let" zur Verfügung.

Nice to know: Mit dem Elvis-Operator kann bei der Zuweisung eine if-Schleife umgangen werden.


Data Klassen

Häufig werden Klassen erstellt, welche nur Daten beinhalten. In Architektur Konzepten wie MVVM oder MVP werden solche Klassen als "Model" gekennzeichnet. In Java beinhalten solche Klassen viele Zeilen an repetitivem Code mit sogenannten "Getters" und "Setters", welche der Entkapselung der Variabeln dienen. Kotlin vereinfacht die Erstellung von solchen Models mit Data Klassen. Mittels nur einer Zeile Code kann die wesentlich grössere Klasse von Java ersetzt werden.

Ebenfalls wird in der Anwendung der Klasse auf alles Unnötige verzichtet. Anstatt die Verwendung von "Getters" wird direkt auf den Variablennamen zugegriffen. Dies hilft durchaus, die Leserlichkeit des Codes zu verbessern.


Extension Functions

Mit der Hilfe von Extension Functions kann die Funktionalität von Klassen erweitert werden. Diese Erweiterung geschieht, ohne die Klasse selbst zu verändern. Für eigene Klassen bietet sich dies eher weniger an, für nicht-beeinflussbare Klassen wie Android-Klassen, lässt sich dies jedoch gut einsetzen. Wir haben diese Extension Functions z.B. dafür eingesetzt, das Setzen der “Visibility” zu verschönern. Das hilft dabei, den Code grundsätzlich besser lesbar zu machen und weniger-leserliche, repetitive Teile in solche Extension Functions auszulagern.

Diese Funktionen sollten jedoch mit Vorsicht verwendet werden. Zu viele Erweiterungen können dazu führen, dass der Code nur durch dessen Entwickler gut verstanden werden kann.

Die Anwendung dieser Extension Functions verläuft wie folgt:

Diese drei beschriebenen Änderungen in Kotlin sind nur wenige von vielen, welche die Sprache gegenüber Java sehr angenehm zum Entwickeln machen. Die offizielle Kotlin Dokumentation bietet noch viele weitere Beispiele, wie die Sprache sinnvoll eingesetzt werden kann: kotlinlang.org.

Wieso haben wir Kotlin bei Five up eingesetzt?

Wie schon kurz erwähnt: Als Android Entwickler ist es derzeit schwierig, um Kotlin herum zu kommen. Auf den Google Ressourcen werden Java Code-Beispiele nur zweitrangig oder gar nicht mehr dargestellt. Für die Weiterentwicklung von bestehenden Projekten schien es nicht sinnvoll, nur einzelne Klassen in Kotlin zu schreiben. Deshalb bot sich die frische Entwicklung von Five up perfekt für Kotlin an.

Ein halbes Jahr nach dem Launch: Hat sich die Wahl bewährt?

Zu Beginn gab es viel Code, welcher in “Java-mässigem Kotlin” programmiert wurde. Bereits nach kurzer Zeit gelang es uns dann aber, die Fähigkeiten von Kotlin sinnvoll einzusetzen. Im Projektverlauf haben wir auch bemerkt, dass bekannte Libraries immer öfter auf Kotlin umsteigen und so von Funktionalitäten wie Extension Functions Gebrauch machen.

Die Entwicklungsumgebung Android Studio hilft dabei sehr, denn sie wandelt automatisch Java Code zu Kotlin um, wenn dieser in eine Kotlin-Datei kopiert wird. Das Spiel funktioniert auch umgekehrt. Man hat die Möglichkeit, den Java-Code der Kotlin-Datei anzuschauen. Dies kann hier und da helfen, um ein besseres Verständnis für Kotlin aufzubauen.

Bei Five up haben wir ebenfalls auf die Android Architecture Components gesetzt. Diese Kollektion von Libraries definiert die von Google bevorzugte Architektur von Android Apps. Obwohl sich diese Libraries auch mit Java einsetzen lassen, ist die Handhabung mit Kotlin deutlich intuitiver.

«With great power comes great responsibility.»
— Stan Lee

Um also die Frage zu beantworten: Ja! Die Verwendung von Kotlin war der richtige Schritt. Besonders da Kotlin jetzt als primäre Sprache für Android gilt. Aber wie mit allem, gibt es auch Punkte, welche gegen Kotlin sprechen. Einige davon sind in folgendem Artikel zusammengefasst: Why Kotlin Sucks

Gibt es im “Unterhalt” Unterschiede verglichen mit Java?

Kotlin wird aktiv entwickelt und kann sich so regelmässig über neue Funktionalitäten und Verbesserungen erfreuen. Zudem hat man die Möglichkeit, bei Kotlin als Open-Source Contributor mitzuwirken.

Wir verwenden eine ähnliche Architektur wie jene, die wir auch für Java Projekte einsetzen. Der Unterhalt der Projekte bleibt daher eigentlich gleich. Der Vorteil ist, dass sich Entwickler schnell im Projekt einfinden, egal ob Java oder Kotlin verwendet wird.

Wird sich Kotlin bei der Entwicklung von Android Apps durchsetzen? Werden wir neue Projekte nur noch mit Kotlin machen?

Kotlin hat sich bereits klar durchgesetzt. Der Weg zurück zu Java scheint längerfristig keine gute Idee zu sein. Spätestens wenn in der Zukunft Googles Libraries nur noch für Kotlin entwickelt werden. Es muss nun weiter versucht werden, Kotlin so gut wie möglich in bestehenden und zukünftigen Projekten einzubinden.

Werden wir alte Projekte auf Kotlin “migrieren”?

Alte Projekte zu migrieren, scheint nicht sinnvoll zu sein. Wir setzen uns aber als Ziel, neue Features nur noch mit Kotlin zu schreiben. Dies kann dazu führen, dass einige ältere Projekte mit der Zeit komplett aus Kotlin bestehen werden. Kurzfristig werden wir aber um die Entwicklung mit Java nicht herum kommen. Da wir nun aber die Vorteile von Kotlin kennen, werden wir sicherlich versuchen, eher Kotlin als Java einzusetzen.

Wir haben grad gemerkt, dass du mit Internet Explorer surfst. Unsere Webseite sieht damit leider nicht so schön aus.

Du willst erfahren warum das so ist?
Wir haben darüber geschrieben.

Zum Blog

Du brauchst Hilfe bei der Umstellung?
Melde dich. Wir helfen gern.

Kontakt

Einen neuen Browser installieren?
Hier gibt es Auswahl.

Browser