Kotlin, eine Alternative zu Java in der Android Entwicklung?

5. September 2017

Eine junge, moderne Programmiersprache hat sich seit der Google I/O Keynote am 17. Mai 2017 unter den Android Entwicklern Gehör verschafft. Das Android Team verkündete die volle Unterstützung von Kotlin bei der Entwicklung von Android Apps mithilfe von Android Studio.

Schon in den Wochen danach wurde das Thema bei uns diskutiert und nun entsteht bereits die erste App unter der Verwendung von Kotlin. In diesem Artikel möchten wir einige Vorteile gegenüber Java und bei der Verwendung des Android Frameworks vorstellen.

Kotlin ist eine statisch-typisierte Programmiersprache, welche auf der Java Virtual Machine läuft und auch als JavaScript kompiliert werden kann. Seit 2011 entwickelt JetBrains die neue Sprache als Alternative oder Ergänzung zu Java. Dabei ist es den Entwicklern gelungen eine Sprache zu schaffen, die ausdrucksstark, präzise, leicht zu lesen und zu schreiben ist.

JetBrains unterstützt Entwickler beim Erlernen der Sprache durch eine 100% Kompatibilität mit Java. Das heißt man muss kein neues Projekt aufsetzten und alles sofort konvertieren, sondern kann Stück für Stück anfangen einzelne Klassen in Kotlin zu schreiben. Als Hilfestellung kann man den Code auch von der IDE konvertieren lassen. Das funktioniert sowohl in Richtung Kotlin, als auch in Richtung Java. Im Rahmen der Android Entwicklung ist mit Android Studio 3.0 der Support für Kotlin direkt integriert und alle existierenden Android Bibliotheken können zusammen  mit der neuen Sprache verwendet werden.

Im Folgenden sind Beispiele aufgeführt, welche Besonderheiten und Vorteile Kotlins im Vergleich zu Java deutlich machen.

Syntax

Die Syntax ist vertraut für Programmierer aus der Objekt Orientierung und kann sofort verstanden werden.

syntax

Typinferenz

Kotlin schließt auf Datentypen, je nach Zuweisung.

typinferenz

Null

Als Java-Entwickler muss man in ständiger Angst einer NullPointerException leben und diese möglichst verhindern. Kotlin löst dieses Problem, indem Datentypen per Default nicht Null sein können. Mit einem ? lässt man auch Null als Wert zu und verhindert bei benutzen der Variable eine NPE. Möchte man, dass die Exception geworfen wird, setzt man !!.

null

Strings

strings

Intelligente Casts

Kotlin verfolgt die Logik und castet automatisch, wenn möglich.

casts

When

Der When-Ausdruck ersetzt das Switch-Case. Die Abfragen sind sehr flexibel und bedeutend kürzer als in Java.

when

Zahlenbereiche

zahlenbereiche

Datenobjekt

Hier zu sehen ist ein POJO reduziert auf wenige Zeilen. Enthalten sind Getter, Setter, toString(), equals(), hashCode() und copy().

datenobjekt

Nicht zuletzt möchten wir nun vorstellen, wie Kotlin das Entwickeln speziell im Bereich der Android Entwicklung einfacher und übersichtlicher macht.

Wer schon einmal Android entwickelt hat, kennt die Funktion findViewById(). Mit dieser Funktion werden die Layoutelemente aus den XML-Dateien angesprochen und Instanzen in Java erstellt, um diese zur Laufzeit zu verändern oder Events abzufangen. Jedes Layoutelement (View) muss dabei einzeln gefunden werden, um darauf zugreifen zu können. Diesen Overhead reduziert Kotlin auf eine Zeile. Ist die Layoutdatei einmal importiert, können die einzelnen Views direkt durch ihre Ids, welche in den XML-Dateien vergeben werden, angesprochen werden.

activity

xml

Mehr Informationen über die Möglichkeiten von Kotlin sind hier zu finden.

Nachdem wir nun schon in einem ersten Projekt mit Kotlin gearbeitet haben, werden weitere Folgen, um mehr Erfahrungen mit der neuen Programmiersprache zu sammeln und diese auf ihre Qualität zu testen.

Bisher habe ich eigentlich nur positive Erfahrungen mit Kotlin gemacht: Features wie Data Classes oder Lambdas machen es leicht, kompakten Code ohne unnötiges Boilerplate zu schreiben und die eingebaute Null-Safety hat mich schon an einigen Stellen vor Schlimmeren bewahrt. Und auch der Einstieg in die Programmiersprache gestaltete sich dank der guten Dokumentation und der von Android Studio gebotenen Funktion, Java Code direkt in äquivalenten Kotlin Code zu übersetzten, denkbar einfach. Jonas Mehlhaus, App-Entwickler