Analyse

Kotlin: Warum die neue Programmiersprache so unglaublich beliebt ist

(Foto: Shutterstock)

Zeitgemäße Features und weniger Code – das sind die Versprechen der noch jungen Programmiersprache Kotlin. Nutzen kannst du sie für Javascript, Android und mehr. Das hat die Sprache alles zu bieten.

Die beliebteste Programmiersprache nach Rust ist Kotlin. Das ist zumindest das Ergebnis der letzten Entwicklerumfrage von Stackoverflow. Wir haben die Sprache näher unter die Lupe genommen und wollen einige der vielseitigen Gründe dafür vorstellen.

Was ist Kotlin?

Jetbrains rief das Projekt Kotlin 2011 ins Leben. Die erste stabile Version wurde jedoch erst 2016 veröffentlicht – die Sprache ist also noch sehr jung. Deshalb hat sie aber auch viele moderne Features und macht vieles besser als Java. Entwickelt wurde sie ursprünglich nur für die Java Virtual Machine (JVM). Bedeutet: Ein in Kotlin geschriebenes Programm wird in einen Bytecode übersetzt, der von der JVM gelesen werden kann.

Kotlin ist seit 2017 eine offizielle von Android unterstütze Programmiersprache. (Grafik: Jetbrains)

Kotlin ist seit 2017 eine offizielle, von Android unterstützte Programmiersprache. (Grafik: Jetbrains)

Inzwischen ist Kotlin nicht nur eine offizielle Android-Sprache, sondern auch fürs Web geeignet. Dafür wird der Kotlin-Code in Javascript übersetzt. Neben server-seitigen Anwendungen kann die Sprache mit Kotlin/Native (aktuell noch in der Entwicklung) auch für weitere Plattformen wie beispielsweise Windows, macOS oder sogar iOS verwendet werden.

Eine Besonderheit der Sprache ist die Kompatibilität zu Java. So kann im Kotlin-Code ohne Probleme eine Java-Klasse aufgerufen werden und umgekehrt. Dadurch lassen sich Java-Projekte nach und nach in Kotlin umschreiben. Das hat den Vorteil, dass es nicht auf einen Schlag komplett neu geschrieben werden muss. Aus diesem Grund wird auch bei bestehenden Android-Apps immer mehr auf Kotlin und nicht auf Java gesetzt.

Das macht Kotlin anders (und besser) als Java

Kotlin macht in vielerlei Hinsicht einiges besser als Java. Beispiel: Null-Pointer-Exceptions. Einer der am häufigsten auftretenden Fehler unter Java soll bei Kotlin vermieden werden. Unter Java tritt die Exception meistens erst während der Laufzeit auf, weil man irgendeinen Sonderfall nicht bedacht hat. Jetbrains beseitigt das Problem bei Kotlin ganz einfach: Der Wert einer Variable darf nicht ins Leere verweisen. Tut er es doch, wird bereits beim Kompilieren ein Fehler geworfen.

Aber keine Sorge, ganz ohne Null kommt auch Kotlin nicht aus. Mit einem „?“ hinter dem Typen wird eine Referenz auf Null zugelassen. Greift ihr nun ohne Weiteres auf diese Variable zu, wird vom Compiler wieder ein Fehler geworfen, da die Variable auf Null verweisen könnte. Kotlin liefert nun Möglichkeiten mit, wie man auf diese Variable dennoch zugreifen kann.

Was erstmal umständlich aussieht, ist in der Praxis ein sehr nützliches Hilfsmittel. So habt ihr die Möglichkeit, von Beginn an jegliche Null-Pointer-Exceptions zu verhindern. Wollt ihr dennoch einen derartigen Fehler auslösen, liefert Kotlin auch hier eine entsprechende Syntax mit.

Weitere Features von Kotlin sind:

  • Erweitern einer beliebigen bestehenden Klasse mit neuen Funktionen
  • Funktionen höherer Ordnung ermöglichen das Übergeben einer Funktion als Parameter oder das Zurückgeben dieser als Ergebnis
  • Schlauer Syntax für Lambda-Ausdrücke
  • Daten-Klassen
  • Typ-Aliasse
  • Und viele mehr…

Kotlin ist schlanker als Java

Das sind einige der zentralen Features von Kotlin. Außerdem ist Kotlin-Code in den allermeisten Fällen deutlich kürzer als äquivalenter Code in Java. Ein Beispiel dafür sind Daten-Klassen. Das Feature soll die Menge redundanten Codes verringern. Für solche Klassen werden neben Getter- und Setter-Funktionen auch sinnvolle Equal- und toString-Funktionen generiert, ohne zusätzlichen Code schreiben zu müssen.

Nehmen wir an, wir wollen eine Klasse für ein Auto schreiben. In Java sieht das dann beispielsweise so aus:

Um genau das gleiche in Kotlin zu realisieren, brauchen wir nur eine Zeile Code und sparen uns das Schreiben der immer wieder gleichen Funktionen:

Lohnt sich der Umstieg?

Vor allem Java- und Android-Entwickler sollten sich Kotlin einmal näher anschauen. Durch die Kompatibilität zu Java können auch erstmal nur einzelne Klassen in Kotlin geschrieben werden, während das restliche Projekt noch in Java geschrieben ist. Aber auch für Programmierer, die mit Javascript arbeiten, sollten den Umstieg auf Kotlin in Betracht ziehen. Da Javascript für große Projekte eher nicht geeignet ist, ergibt die Verwendung von Kotlin hier einfach mehr Sinn.

Den Umstieg für Projekte anderer Plattformen solltet ihr jedoch besser noch herauszögern. Jetbrains liefert mit Kotlin/Native zwar eine Möglichkeit, sie befindet sich aber noch in der Entwicklungsphase. Wer aber damit bereits experimentieren will, kann hier schon einen Einblick gewinnen.

Bildergalerie: Android Studio 3.0 unterstützt Kotlin
(Screenshot: Android Studio 3.0 / Google)

1 von 4

Passend dazu: Java 8 und Kotlin: Das ist neu bei Android Studio 3.0

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

4 Kommentare
stephan-hartmann
stephan-hartmann

Ja klar. 0,253% sind also „unfassbar beliebt“.
https://www.tiobe.com/tiobe-index/
Java: 15,32%
Wofür wird hier eigentlich (Schleich-) Werbung gemacht?
Scala war auch mal der Super-Ersatz für das so unglaublich schlechte und veraltete Java. Ist heute bei superüberragenden 0,44%. Immerhin fast doppelt so viel wie Kotlin, gell?

Antworten
unwichtig
unwichtig

Zahlen sind nicht alles mein lieber oder warum denkst du hat Google Kotlin als offizielle Zweitsprache für Android genommen?

was ist nicht ist, das kann werden…

Abgesehen davon ob Kotlin gut ist oder nicht auf die faule Haut muss man sich nicht legen,
besser ist es immer Verbesserungspotential auszureizen.

Antworten
Skeptiker
Skeptiker

„eine Klasse für ein Auto“
Das ist keine einfache Klasse. Das ist eine JavaBean.
Niemand zwingt mich zu Gettern, Settern und Konstruktor.
Eine reine Daten-Klasse sieht bei mir in JAVA auch nicht großartig aus als das Kotlin-Beispiel hier.
Wenn ich tatsächlich alles in einer Zeile stehen haben wollte, sind die Unterschiede marginal:
public class Car { private String name; private int color; private double speed; }

„sparen uns das Schreiben der immer wieder gleichen Funktionen“
Dafür gibt es bei wirklich identischen Funktionen Vererbung. Eine der besten Grundideen objektorientierter Programmierung.

Dieser Artikel hat mir erneut gezeigt, dass sich für etablierte JAVA-Entwickler der Umstieg auf Kotlin kaum lohnt. Hoher Lern- und Umstellungsaufwand für (bestenfalls) wenig Vorteile. Und wenn man Pech hat, endet das Ganze wie Silverlight…

Antworten
sasbob
sasbob

Dann bleiben Sie bei Java. Hätte ich freie Wahl (die man als Consultant leider fast nie hat) würde ich nur noch in Kotlin implementieren. Die Data Klassen sorgen schon einmal dafür, dass man sich nicht solche Sachen wie Lombok ans Bein binden muss (was recht häufig nur für die Ersparnis von gettern und settern benutzt wird). ExtensionFunctions machen die lästigen Util-Klassen mit statischen Methoden meist überflüssig. Default Werte für Methoden Parameter sorgen dafür, dass man bei der Einführung neuer Parameter die alte Methode zwecks Kompatibilität nicht mehr überladen muss. Die Unterscheidung zwischen Nullable und non-nullable Typen macht NPE schon zur Laufzeit sichtbar.

Jeder, der sich ein wenig mit Kotlin beschäftigt, wird nicht mit allen Unterschieden was anfangen können, aber wer zumindest nicht 1-2 Vorteile gegenüber Java entdeckt und für sich nutzen kann ist blind.

Habe ich schon erweiterte Collections (über Extension Functions), Smart Casts und Safe Calls erwähnt? Hier mal ein Einzeiler für die n-te Fibonacci Zahl, welche mehrere Vorteile vereint (Funktionen als Expressions schreiben, Ranges, Stream Operationen ohne Stream und „Pair“ als Standard-Hilfsklasse):

fun fibonacci(factor: Int) = (1..factor).fold(Pair(0,1), {x,y -> Pair(x.second,x.first + x.second)} ).first

Ja, das kann man auch rekursiv oder iterativ in Java schreiben, aber Kotlin ist da viel eleganter. Hohen Lern- und Umstellungsaufwand kann ich auch nicht wirklich erkennen, aber so mancher langjähriger JAVA-Entwickler ist halt nicht „etabliert“, sondern einfach nur zu faul was Neues zu lernen.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung