Programmiersprache: Kotlin 1.5.30 bereitet gewĂĽnschte Sprachneuerungen vor
Neben Previews fĂĽr Features wie versiegelte when-Anweisungen bringt das Release eine native Anbindung an Apple Silicon.
JetBrains hat die Programmiersprache Kotlin in der Version 1.5.30 veröffentlicht. Das Release bringt einige für Kotlin 1.6 geplante Sprachfeatures mit, die zunächst als Preview gekennzeichnet sind. Dazu gehören versiegelte when
-Anweisungen und die Verwendung unterbrechender Funktionen als Elterntyp.
Außerdem lässt sich das Release nativ auf den M1-Prozessoren von Apple verwenden. Bisher benötigte Kotlin Rosetta zum Erstellen und Ausführen von Anwendungen auf Apple Silicon. Kotlin 1.5.30 kommt ohne die Kompatibilitätsschicht aus und kennt die neuen Zielplattformen macosArm64
, iosSimulatorArm64
, watchosSimulatorArm64
sowie tvosSimulatorArm64
.
Wenn ohne aber
Die versiegelten (sealed) oder auch erschöpften (exhausted) when
-Anweisungen sind wohl seit Langem gewünscht. Versiegelt bedeutet in dem Fall, dass für alle möglichen Fälle ein Zweig existieren muss. Im Zweifel kann ein else
-Block alle nicht behandelten Fälle abdecken. Version 1.6 der Programmiersprache warnt bei nicht erschöpften when
-Anweisungen, und ab Kotlin 1.7 soll der Compiler einen Fehler ausgeben.
Derzeit mĂĽssen Entwicklerinnen und Entwickler die Warnungen manuell aktivieren, indem sie die Umgebungsvariable languageVersion
auf 1.6
setzen. Folgendes Beispiel aus der Dokumentation zeigt die Warnung für eine unvollständig abgearbeitete Anweisung:
val y: Boolean = true
when (y) {
true -> println("true")
}
// WARNING: Non exhaustive 'when' statements
// on Booleans will be prohibited
// in 1.7, add a 'false' or 'else' branch instead
Eine weitere Neuerung ist, dass unterbrechende Funktionen nun als Elterntyp erlaubt sind. Die mit suspend
gekennzeichneten Funktionen können in nebenläufigen Programmen eingesetzt werden, um die Ausführung von Koroutinen zu unterbrechen. So können sie beispielsweise auf die Übertragung einer Datei über das Netzwerk warten, ohne den aktuellen Thread zu blockieren. Das Konzept der Koroutinen kennt Kotlin seit Version 1.1.
FĂĽr das folgende kurze Beispiel ist ebenfalls die Anpassung der Umgebungsvariable languageVersion
auf 1.6
erforderlich:
class MyClass: suspend () -> Unit {
override suspend fun invoke() { TODO() }
}
Auf Sprachebene bringt Kotlin 1.5.30 zusätzliche Regeln für Opt-in-Annotationen und eine erweiterte Typinferenz für rekursive generische Typen mit.
Native, JavaScript und Multiplattform
Kotlin/Native bietet eine Integration in CocoaPods, den Dependency-Manager fĂĽr Swift und Objective-C. Ein Plug-in sorgt fĂĽr das Zusammenspiel mit dem Build-Werkzeug Gradle. Das aktuelle Release der Programmiersprache erweitert das DSL-Format und fĂĽhrt neue Parameter ein, um das Plug-in zu konfigurieren. Unter anderem lassen sich ĂĽber die Kotlin-DSL neuerdings die dynamische oder statische Version des Frameworks festlegen und Export-Dependencies explizit angeben.
Das in Version 1.4 eingeführte IR-Compiler-Backend (Intermediate Representation), das eine einheitliche Basis des Zwischencodes beim Kompilieren bietet, erreicht nun für Kotlin/JS den Beta-Status, während es für die Java Virtual Machine (JVM) bereits seit Version 1.5 als stabil gilt.
Eine weitere Neuerung betrifft das gemeinsame Verwenden plattformabhängiger Libraries für mehrere native Ziele in Multiplattformprojekten. Während sich bisher nur die mit Kotlin/Native ausgelieferten Libraries teilen ließen, erlaubt Version 1.5.30 das Teilen von Bibliotheken, die im cinterops
-Block des Build-Skripts definiert sind. Der Block enthält die Konfigurationen für C-, Objective-C- und Swift-Libraries.
Die Programmiersprache hat am 19. Juli ihren zehnten Geburtstag gefeiert. In den Anfängen war Kotlin auf die Java Virtual Machine (JVM) begrenzt. Besonders auf Android hat sie einen Siegeszug angetreten, seit Google sie 2017 offiziell als Alternative zu Java auch in Android Studio aufgenommen und zwei Jahre später zur ersten Wahl für das mobile Betriebssystem erklärt hat. Inzwischen ist die Programmiersprache aber auf diverse Plattformen ausgelegt: Kotlin/Native ermöglicht die Ausführung ohne virtuelle Maschine, vor allem um Plattformen wie iOS abzudecken, die von Haus aus keine JVM an Bord haben.
Mit Kotlin/JS ist zudem eine Anbindung an JavaScript verfügbar, und seit Kotlin 1.2 lassen sich Multiplattformprojekte erstellen, die mit einer Codebasis JVM und JavaScript abdecken. Den Namen, der hierzulande gerne Trolle in Foren anzieht, verdankt die Sprache einer Insel vor St. Petersburg. Das dortige JetBrains-Team hat Kotlin anfänglich maßgeblich entwickelt.
Kotlin 1.5.30 ist planmäßig das letzte inkrementelle Release in der 1.5.x-Reihe. JetBrains hat im Oktober 2020 den Release-Zyklus umgestellt, in dem alle sechs Monate ein Feature-Relese erscheint, und Version 1.6 ist für den November vorgesehen.
Weitere Details lassen sich dem Kotlin-Blog entnehmen. IntelliJ IDEA sollte automatisch ein Update zur aktuellen Version vorschlagen. Dasselbe gilt fĂĽr das auf IntelliJ IDEA basierende Android Studio.
(rme)