Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Kotlin (Programmiersprache)

Kotlin ist eine plattformübergreifende, statisch typisierte Programmiersprache, die in Bytecode für die Java Virtual Machine (JVM) übersetzt wird, …

Inhalt5 Abschnitte
  1. 1. Überblick und Einsatzbereiche
  2. 2. Entwicklung und Werkzeuge
  3. 3. Grundlegende Syntax, Funktionen und Objekte
  4. 4. Kontrollstrukturen und Funktionen höherer Ordnung
  5. 5. Null Safety und Release-System

Überblick und Einsatzbereiche

Kotlin ist eine plattformübergreifende, statisch typisierte Programmiersprache von JetBrains. Statische Typisierung bedeutet, dass Typen von Werten beim Übersetzen des Programms geprüft werden; Typinferenz erlaubt es, den Typ wegzulassen, wenn er aus dem Zusammenhang hervorgeht. Kotlin ist außerdem stark typisiert.

Kotlin wird meist in Bytecode für die Java Virtual Machine (JVM) übersetzt. Es kann aber auch JavaScript-Quellcode, WebAssembly oder mithilfe von LLVM Maschinencode erzeugen. Dadurch ist es für JVM und Dalvik VM sowie unter anderem für iOS, watchOS, tvOS, macOS, Linux, Microsoft Windows und JavaScript nutzbar. Kotlin dient auch zur Entwicklung von Android- und iOS-Apps. Google unterstützt Kotlin für Android seit 2017 offiziell und erklärte es im Mai 2019 zur bevorzugten Sprache.

Die Sprache vereint generische, objektorientierte, funktionale, imperative, strukturierte, deklarative und nebenläufige Programmierung sowie Reflexion. Sie steht unter der Apache-2-Lizenz. Kotlin erschien erstmals 2011; die stabile Version 1.0 erschien am 15. Februar 2016. Als aktuelle Version nennt der Artikel Kotlin 2.4.0 vom 3. Juni 2026.

Entwicklung und Werkzeuge

JetBrains stellte Kotlin nach einem Jahr Entwicklung im Juli 2011 als neue JVM-Sprache vor und veröffentlichte den Quellcode im Februar 2012 unter der Apache-2-Lizenz. Entwickelt wurde die Sprache hauptsächlich von damaligen JetBrains-Programmierern in Sankt Petersburg. Laut dem leitenden Entwickler Dmitry Jemerov war eine hohe Kompiliergeschwindigkeit ein wichtiges Ziel: Scala besitze viele gesuchte Merkmale, habe aber einen langsamen Compiler.

Kotlin ist syntaktisch nicht zu Java kompatibel, kann aber mit Java-Code zusammenarbeiten und verwendet vorhandenen Code der Java Class Library, etwa das Java Collections Framework. Diese vollständige Interoperabilität erlaubt auch die Nutzung zahlreicher Java-Testwerkzeuge für Kotlin-Code. Als eigenes Test-Framework wird kotlin-test genannt.

IntelliJ IDEA unterstützt Kotlin seit Version 15 nativ über ein Plug-in. Plug-ins gibt es auch für Eclipse und Visual Studio Code sowie für Apache Maven und Gradle; für Apache Ant existiert ein Task. Android Studio unterstützt Kotlin seit Version 3.0 nativ für Android-Apps.

Grundlegende Syntax, Funktionen und Objekte

Bei einer Variablendeklaration steht der Typ nach dem Namen und wird mit einem Doppelpunkt getrennt, zum Beispiel x: Int. Ein Zeilenumbruch beendet normalerweise eine Anweisung; ein Semikolon wird nur benötigt, wenn eine Zeile mehrere Anweisungen enthält. Der Programmeinstieg ist eine Main-Funktion. fun main() { println("Hallo Welt!") } gibt die Zeichenkette „Hallo Welt!“ aus.

Funktionen beginnen mit fun. Eine Funktion mit zwei Ganzzahlargumenten und Rückgabewert kann als fun add(x: Int, y: Int): Int { return x + y } geschrieben werden. Besteht sie nur aus einem Ausdruck, sind geschweifte Klammern, Rückgabetyp und return entbehrlich: fun add2(x: Int, y: Int) = x + y. Funktionen können auch verschachtelt werden und sind dann nur in ihrem umgebenden Bereich aufrufbar.

Klassen werden mit class definiert. Konstruktorargumente können Attribute sein, etwa var text: String; var bezeichnet veränderbare, val schreibgeschützte Werte. Ein init-Block wird bei der Initialisierung ausgeführt. Methoden können Attribute verändern oder Werte zurückgeben. Im Beispiel erzeugt KlassenBeispiel(4f, "Hallo Wiki") aus dem Float-Wert das Attribut zahl = 4, dreht den Text zu „ikiW ollaH“ um und liefert mit ersteXTextBuchstaben() die ersten vier Buchstaben, also „ikiW“.

Kontrollstrukturen und Funktionen höherer Ordnung

Kotlin unterstützt übliche Kontrollstrukturen. Mit if, else if und else kann beispielsweise eine eingegebene Ganzzahl als positiv, negativ oder 0 ausgegeben werden. Die when-Anweisung dient dem Pattern Matching: Sie kann einzelne Werte (1), mehrere Werte (3, 4), Bereiche (in 5..7) und einen Auffangfall mit else behandeln. repeat(2) { ... } führt einen Block zweimal aus. Eine For-Schleife kann Bereiche durchlaufen; for (i in 7 downTo 1 step 2) liefert 7, 5, 3 und 1.

Funktionen höherer Ordnung nehmen Funktionen entgegen oder geben sie zurück. Kotlin unterstützt dafür Funktionszeiger wie ::double, anonyme Funktionen und Lambda-Ausdrücke wie { x -> x * 2 }. Steht ein Lambda als letztes Argument, darf es hinter die runden Klammern geschrieben werden; bei genau einem Argument heißt dieses ohne eigene Benennung it. Closures dürfen in Kotlin auch schreibend auf Variablen zugreifen: Ein Zähler kann dadurch bei aufeinanderfolgenden Aufrufen 1 und dann 2 liefern.

Die Standardbibliothek nutzt solche Funktionen besonders für Collections wie Listen, Maps und Sets. Bei setOf(1, 2, 3, 4, 5) erzeugt map { it * 2 } die Werte [2, 4, 6, 8, 10], filter { it > 2 } liefert [3, 4, 5], und groupBy { it % 2 } gruppiert nach Rest bei Division durch 2. Die Kette sortedBy, take, map und fold bildet aus den drei kürzesten Städtenamen im Beispiel das Ergebnis KBH.

Null Safety und Release-System

Null Safety soll Null Pointer Exceptions bereits zur Kompilierzeit verhindern. Eine Variable ohne Fragezeichen im Typ darf nicht null sein, zum Beispiel var a: Int = 123; a = null führt zu einem Kompilierfehler. Ein Fragezeichen kennzeichnet einen nullable Typ, also einen Typ, der null annehmen darf: var b: Int? = 456; b = null ist erlaubt.

Auf Eigenschaften nullable Werte darf erst nach einer Nullprüfung zugegriffen werden. Bei val test: String? = "Test" ist test.length direkt ein Kompilierfehler. Nach if (test != null) ist der Zugriff zulässig. Ebenso kann man zuerst bei test == null zurückkehren und anschließend test.length verwenden. Der Safe-Call-Operator ?. verkürzt verschachtelte Prüfungen, etwa kunde?.adresse?.ort; er liefert bei einem fehlenden Zwischenschritt null. Der Elvis-Operator ?: legt einen Ersatzwert fest, etwa ort ?: "".

Seit Kotlin 2.0.0 gibt es drei Release-Arten: Language Releases 2.x.0 mit großen Sprachänderungen und Tooling-Aktualisierungen erscheinen alle 6 Monate. Tooling Releases 2.x.20 bringen Performanceverbesserungen und Fehlerbehebungen und erscheinen 3 Monate nach dem zugehörigen Language Release. Bug Fix Releases 2.x.yz beheben Fehler in Tooling Releases und haben keinen festen Zeitplan. Wichtige Versionen sind 1.1 vom 1. März 2017 mit Koroutinen für asynchronen Code und dem offiziellen Kotlin-JavaScript-Target, 1.2 vom 28. November 2017 mit Multiplattform-Projekten, 1.3 vom 29. Oktober 2018 mit der Beta von Kotlin Native sowie 2.0.0 vom 21. Mai 2024 mit dem stabilen Kotlin-K2-Compiler.

Weiterlesen

Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es … Bytecode Bytecode ist in der Informatik die Bezeichnung für eine Sammlung von Befehlen, also die Maschinensprache für eine virtuelle Maschine. Quelltext Quelltext, auch Quellcode (englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer … Maschinensprache Mit einem Assembler: Assemblersprachen formulieren die Prozessorbefehle des Maschinencodes als Mnemonics in einer einfachen Syntax. Dieser Quelltext wird … Compiler Ein Übersetzer zur Übertragung von Assembler-Quellprogrammen in Maschinensprache wird als Assembler oder Assemblierer bezeichnet. Geschichte. Bearbeiten. Integrierte Entwicklungsumgebung Eine integrierte Entwicklungsumgebung (IDE, von englisch integrated development environment) ist eine Sammlung von Computerprogrammen, mit denen die … Datentyp Die Konkretisierung der Operationsmenge führt zu Abstrakten Datentypen beziehungsweise Algebraischen Strukturen. Mit der weiteren Konkretisierung der … Variable (Programmierung) In der Programmierung ist eine Variable ein abstrakter Behälter für einen Wert, der bei der Ausführung eines Computerprogramms auftritt. Klasse (Objektorientierung) Die Klasse dient als Bauplan für die Abbildung von realen Objekten in Softwareobjekte und beschreibt Attribute (Eigenschaften) und Methoden (Verhaltensweisen) … Methode (Programmierung) Methoden (englisch method oder member function) sind in der objektorientierten Programmierung Unterprogramme in der Form von Funktionen oder Prozeduren, … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin …