How-To

From Zero to Hero: Kotlin ist mehr als eine Alternative zu Java

Seite 2 / 2

Eine weitere Besonderheit in Kotlin sind Lambda-­Funktionen, anonyme Funktionen, die häufig als Parameter übergeben werden. Was bei Java erst in späteren Versionen Einzug gehalten hat, ist bei Kotlin von Anfang an mit dabei. Auch hier hat sich Jetbrains bemüht, die in der modernen Entwicklung nicht mehr wegzudenkenden Lambda-Funktionen so intelligent wie möglich zu implementieren. Sie lassen sich nicht nur kürzer schreiben, sondern sind auch besser lesbar als bei anderen Sprachen. Die folgenden Aufrufe mit der auf Collections vordefinierten Filterfunktion sind äquivalent zueinander:

val ints = listOf(1, 2, 3, 4, 5)
ints.filter ({ item ->
    item < 3 }) 
ints.filter { item ->
    item < 3
}
ints.filter { it < 3 }

Dabei werden für die Übergabe des Function-Bodys, also der Teil der auszuführenden Anweisungen, weder runde Klammern noch der Name des Parameters benötigt – vorausgesetzt, dass es nur einen Parameter gibt. Innerhalb der Funktion erfolgt der Zugriff auf den Parameter dann mit dem Schlüsselwort it. Am besten ­lesbar und mit zugleich weniger Code ist die Variante in der letzten ­Zeile. Eine weitere Syntaxbesonderheit lässt sich bei der Verwendung der Fold-Funktion feststellen: Diese bekommt, wie im Folgenden zu sehen, neben der Lambda-­Funktion einen weiteren Parameter übergeben:

val ints = listOf(1, 2, 3, 4, 5) 
ints.fold(1) { acc, _ ->
    acc * 3
}

Da die Funktion jedoch als letzter Parameter übergeben wird, kann die runde Klammer zuvor geschlossen werden, bevor die Implementierung der Lambda-Funktion mit geöffneter geschweifter Klammer folgt. Dieses Vorgehen vermeidet ein Wirrwarr aus zeitgleich zwei verschiedenen geöffneten Klammern. Der Unterstrich kann als anonymer Parameter verstanden werden, da er selbst im Function-Body nicht benötigt wird.

Weitere nennenswerte Features von Kotlin sind das Erweitern beliebiger bestehender Klassen mit neuen Funktionen, Typ-Aliasse und Funktionen höherer Ordnung, die das Übergeben einer Funktion als Parameter oder das Zurückgeben dieser als Ergebnis ermöglichen.

Android, Javascript und mehr

Die Stackoverflow-Umfrage zeigt neben der großen Beliebtheit ­Kotlins auch: Die Sprache ist noch lange nicht so weit verbreitet wie Java oder Javascript. Weniger als fünf Prozent der befragten Entwickler nutzen sie bislang regelmäßig. Kein Wunder, hatte Kotlin seinen offiziellen Release doch erst vor weniger als drei Jahren. Erst seit Mitte 2017 wird Kotlin offiziell als Sprache für Android unterstützt – ist dort aber schon heute kaum noch wegzudenken. Im Github Octoverse Report 2018 landet Kotlin zudem auf dem zweiten Platz der am schnellsten wachsenden Programmiersprachen. Wer neue native Apps für Googles mobiles Betriebssystem schreiben will, sollte sich Kotlin auf jeden Fall genauer anschauen.

Doch Kotlin kann auch bei Projekten fürs Web zum Einsatz kommen. Hierbei wird der Code in Javascript transpiliert, also vom Compiler in die Zielsprache übersetzt. Aber auch für alle anderen Javascript-Projekte, die nicht fürs Web sind, lässt sich ­Kotlin verwenden. Obwohl das Sprachdesign der beiden ­Sprachen sich bereits in den grundlegenden Ansätzen unterscheidet, findet Kotlin auch in diesem Bereich immer mehr Anklang. ­Javascript ist klassenlos und dynamisch typisiert. Kotlin hingegen das genaue Gegenteil: Für die objektorientierte Programmierung ­werden Klassen verwendet und einer der zentralen Aspekte der Sprache ist die statische Typisierung. Sicher, jedes Konzept hat Vor- und Nachteile und nicht für jedes Javascript-Projekt ergibt der Einsatz von Kotlin zwangsweise Sinn. Dennoch gibt es einige gute Gründe, sich den Einsatz von Kotlin für Javascript genauer anzuschauen.

Auf der einen Seite sind die bereits erwähnten Klassen ein Vorteil. Das und viele weitere Kotlin-Features sorgen für einen deutlich aufgeräumteren und somit auch besser lesbaren Code. Gerade bei größeren Projekten kann das einen großen ­Unterschied ausmachen. Auf der anderen Seite sorgt die statische Typisierung auch für die ­Vermeidung vieler Fehler während der Laufzeit, da die ­Datentypen bei der Kompilierung bereits feststehen. ­Zusätzlich sollte erwähnt ­werden, dass Kotlin für Javascript, trotz des ­Widerspruchs zum eigentlichen Sprachdesign, auch die Möglichkeit von dynamisch typisierten Variablen zur Verfügung stellt.

Kotlin: So gelingt der Einstieg

Einen ersten Überblick über die Kotlin-Syntax geben wir euch hier. Hilfe beim Einstieg sowie die komplette, ­aktuell gehaltene Dokumentation von ­Jetbrains findet ihr unter kotlinlang.org/docs/reference. Neben den von Jetbrains selbst zur Verfügung gestellten Tutorials legen wir euch den Medium-Post „Learn Kotlin while developing an Android App“ von Juan Ignacio Saravia und die Youtube-­Tutorials von Peter ­Sommerhoff ans Herz.

Seit einiger Zeit arbeitet Jetbrains außerdem an bislang noch experimentellen Features für Multiplattformprojekte. Konkret können Entwickler dadurch Kotlin-Code schreiben, welcher unabhängig vom Kompilierungsziel wieder­verwendet werden kann. Das ermöglicht Entwicklern, elementare und ­plattform­unabhängige identische Code-Ausschnitte für die JVM sowie beispielsweise auch für ­Javascript zu schreiben. Wird ­neben dem in Javascript geschriebenen Frontend eine serverseitige ­­Java- ­beziehungsweise Kotlin-­Anwendung genutzt, muss nach dem Paradigma „don’t repeat yourself“ kaum Source-­Code doppelt ­geschrieben werden. Einen kleinen Wermutstropfen gibt es jedoch: Auch wenn erste Ansätze schon Teil der letzten ­Updates waren, befinden sich die Multiplattformprojekte noch in der ­Entwicklungsphase. Und obwohl die Kernsprache definitiv ausgereift ist, stößt man öfters auf noch experimentelle Features, die erst in den nächsten Monaten oder sogar Jahren ernsthaft ­verwendet werden können.So auch bei der nativen Kompilierung von Kotlin. ­Jetbrains ­liefert mit Kotlin/Native nämlich eine weitere Möglichkeit, ­Projekte für den Desktop oder auch iOS zu realisieren. Sie sollte jedoch noch mit Vorsicht genossen werden. Auch wenn es ­beispielsweise einen ersten Ansatz gibt, mit Kotlin-Apps ­zeitgleich für Android und iOS zu entwickeln, ist Kotlin/Native noch in der ­Entwicklung. Da das Projekt jedoch bereits öffentlich ­zugänglich ist, kann ­damit schon experimentiert werden.

Wann lohnt sich eigentlich der Umstieg?

Vor allem Java- und Android-Entwickler sollten sich Kotlin ganz genau anschauen. Gerade durch die Kompatibilität zu Java ­lassen sich zunächst einzelne Klassen in Kotlin umschreiben, ­während für das restliche Projekt weiterhin Java verwendet wird. Aber auch für Webentwickler, die mit Javascript arbeiten, ist der ­Umstieg auf Kotlin durchaus eine realistische Option: Gerade weil Javascript für größere Projekte eher ungeeignet ist, ergibt die Verwendung von Kotlin dort oftmals mehr Sinn. Bedacht ­werden sollte allerdings, dass die Kompatibilität von Kotlin zu ­Javascript keinesfalls so ­reibungslos funktioniert wie die zu Java. Wer bestehende ­Projekte in Kotlin umschreiben will, muss damit rechnen, das gesamte Projekt in Kotlin umschreiben zu müssen. Doch der Mehraufwand könnte sich für Entwickler am Ende durchaus lohnen.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!