kotlin

Was ist Kotlin?

Stefan
8 Min Read
kotlin

Kotlin ist eine universelle Open-Source-Programmiersprache, die für die vollständige Interoperabilität zwischen Android und der JVM (Java Virtual Machine) entwickelt wurde.

Kotlin kombiniert objektorientierte und funktionale Programmierfunktionen mit einer prägnanteren Syntax als Java sowie Sicherheitsfunktionen für Nullwerte.

Wie funktioniert Kotlin?

Ähnlich wie Java und Scala ist Kotlin eine statisch typisierte Sprache, bei der die Überprüfung der Variablentypen während der Kompilierungszeit ausgeführt wird. Der Hauptvorteil einer statisch typisierten Sprache ist der Schutz vor Laufzeitfehlern und schnellere Ausführungszeiten. Dies liegt daran, dass der Compiler die genauen verwendeten Datentypen kennt und optimierten Maschinencode erstellen kann. 

Andere Programmiersprachen können dynamisch typisiert werden, wobei der Compiler allen Variablen zur Laufzeit einen Typ zuweist. Ein gutes Beispiel für eine dynamisch typisierte Programmiersprache ist Python . In Python können Programmierer Code schneller schreiben, da sie Variablentypen nicht bei jeder Ausführung des Codes angeben müssen, was zu weniger ausführlichem Code führt. JavaScript ist auch eine dynamisch typisierte Sprache, sodass wir beim Deklarieren einer Variable ihren Typ nicht angeben müssen.

Als statisch typisierte Sprache wurde Kotlin ursprünglich für die Ausführung auf der JVM entwickelt. Es ist jedoch auch möglich, Kotlin-Code in JavaScript zu kompilieren. Darüber hinaus ermöglicht Kotlin Native Programmierern, Kotlin-Code in native Binärdateien zu kompilieren. Dabei handelt es sich um ausführbare Dateien, die für die native Ausführung in einem bestimmten Betriebssystem erstellt wurden und ohne die JVM ausgeführt werden können. Die nativen Binärdateien von Kotlin können auf macOS, iOS, tvOS, watchOS, Linux , Windows und Android NDK ausgeführt werden. Letztendlich erzeugt Kotlin basierend auf der Zielplattform entweder Java-Bytecode, JavaScript-kompatiblen Code oder native Binärdateien. 

Warum ist Kotlin wichtig?

Die wichtigsten Funktionen von Kotlin sind Interoperabilität, Sicherheit, Übersichtlichkeit und Tool-Unterstützung. Kotlin ist für die Ausführung auf einer JVM konzipiert und kann parallel zu einer Java-Codebasis ausgeführt werden. Das bedeutet, dass Sie Kotlin für die Android-Entwicklung , Back-End-Entwicklung oder Data Science verwenden können . 

Wofür wird Kotlin verwendet?

Kotlin wurde ursprünglich für die Android-Entwicklung entwickelt. Daher wird Kotlin zunehmend von Android-Entwicklern verwendet und ist eine der offiziellen Programmiersprachen von Google . Darüber hinaus haben große Unternehmen wie Netflix , Amazon , Uber , Foursquare und Coursera Kotlin verwendet oder verwenden es derzeit. 

Kotlins Interoperabilität mit der JVM macht es mit vorhandenem Java-Code kompatibel und ermöglicht es Unternehmen, vorhandene Java-Ökosysteme zu nutzen. Dies macht Kotlin zu einer großartigen Lösung für Microservices. Eine Microservice-Architektur ist ein Softwarearchitekturstil, der eine Back-End-Anwendung als eine Sammlung von Diensten strukturiert, die unabhängig voneinander bereitgestellt und hochgradig wartungsfreundlich sind. DoorDash bietet eine großartige Fallstudie zur Migration von monolithischer Architektur zu Microservices mit Kotlin. 

Was sind die Vorteile von Kotlin?

Kotlin ist prägnanter als Java, was weniger Boilerplate-Code bedeutet. Zum Beispiel:

JAVA

wird umgewandelt in …

KOTLIN

Kotlin ist leichter zu verstehen als Java, was den Code leichter lesbar und verständlich macht. Ein gutes Beispiel hierfür ist die Unveränderlichkeit. Ein unveränderliches Objekt ist ein Objekt, dessen Zustand nach seiner Deklaration unveränderlich ist. In Kotlin werden unveränderliche Variablen als deklariert val, während veränderliche Variablen als deklariert werden var. 

Die Verwendung von valin unserem Code macht ihn leichter lesbar und unglaublich kompakt. Anhand des obigen Beispiels können wir sehen, dass wir den Variablentyp nicht am Anfang einer HashMap deklarieren müssen. Stattdessen deklarieren wir valdies als unveränderliche Variable. Als unveränderliche Variable kann eine HashMap nichts anderes als eine HashMap werden, aber sie kann wie üblich zum Speichern von Schlüssel-Wert-Paaren verwendet werden.

Ein weiterer großer Vorteil von Kotlin sind seine Sicherheitsfunktionen für Nullwerte. Nullzeigerausnahmen sind eines der häufigsten Probleme in Java-Projekten. NullPointerExceptionist ein Fehler, der in Java generiert wird, wenn der Code versucht, auf ein Objekt mit einer Nullreferenz zuzugreifen. Um dies in Java zu lösen, verwenden Programmierer vorbeugende Techniken wie die Durchführung von Nullprüfungen, bevor sie auf die Methoden oder Eigenschaften eines Objekts verweisen. Entwickler können am Ende Nullprüfungen in ihrem gesamten Code durchführen, ohne die möglichen Zustände eines Objekts wirklich zu verstehen. 

Kotlin gilt als nullsicher. Das bedeutet, dass es nicht möglich ist, einer Variablen einen Nullwert zuzuweisen. Kotlin unterscheidet zwischen Referenzen, die einen Nullzustand enthalten können, und solchen, die dies nicht können. Beispielsweise können wir einen regulären Variablentyp „String“ als entweder fähig deklarieren, Nullwerte zu enthalten, oder nicht.

var message_a: String = “Hello World” // Dies ist standardmäßig eine Variable ungleich Null.

message_a = null // Dies würde einen Kompilierungsfehler erzeugen.

var message_b: String? = “Hello World”// Nullable-String, der auf null gesetzt werden kann.

message_b = null // Das wäre ok.

Kotlin bietet mehrere prägnante Möglichkeiten, nullbare Variablen zu verarbeiten. Eine davon ist die Verwendung sicherer Aufrufe. Anhand des obigen Beispiels können wir unseren nullbaren String wie folgt sicher aufrufen:

println(message_a.length) // Es ist kein sicherer Aufruf erforderlich.

println(message_b?.length) // Gibt die Länge zurück, wenn sie nicht null ist, andernfalls wird null zurückgegeben.

Was sind die Nachteile von Kotlins?

Der einzige Aspekt, in dem Java Kotlins wahrscheinlich überlegen ist, sind saubere Builds. Java ist in dieser Hinsicht tendenziell schneller als Kotlins. Kotlins Funktionen machen es zu einer Sprache auf höherer Ebene als Java, sodass Java bei sauberen Builds einen Nachteil hat. Bei inkrementellen Builds ist Kotlin jedoch definitiv schneller als Java. Inkrementelle Builds, auch reguläre Builds genannt, kompilieren nur die Quelldateien, die bei diesem bestimmten Lauf basierend auf den neuesten Änderungen kompiliert werden müssen. Dies unterscheidet sich von einem sauberen Build, bei dem alles gelöscht und alle Quelldateien erneut von Grund auf neu kompiliert werden. 

Hinter Kotlins Geschwindigkeit für inkrementelle Builds stehen zwei allgemeine Prinzipien: Vermeidung der Kompilierung und inkrementelle Kompilierung. Die Kernidee hinter diesen Prinzipien besteht darin, nur betroffene Module (Vermeidung der Kompilierung) und betroffene Dateien (inkrementelle Kompilierung) neu zu kompilieren.

Eine kurze Geschichte von Kotlins

Ursprünglich benötigte Kotlins Erfinder Dmitry Jemerov Funktionen, die Java nicht hatte. Er fand diese Funktionen in Scala und Groovy, anderen Programmiersprachen, die auf der JVM laufen konnten ( C# und JavaScript beeinflussten Jemerov ebenfalls). In Scala werden Basistypen wie Zahlen und Boolesche Werte nicht als primitive Typen dargestellt, sondern als Objekte. Außerdem bietet Scala prägnanteren Code. Groovy hingegen bietet eine präzise und effiziente Möglichkeit, mit der Nullbarkeit von Variablen umzugehen. Allerdings dauert die Kompilierung von Scala und Groovy beide sehr lange, daher wollte Jemerov eine neue Sprache, die alle Vorteile von Scala und Groovy bietet, aber so schnell wie Java kompiliert werden kann. So entstand Kotlins.