Programmiersprache Kotlin 1.5: Stabilität an allen Ecken und Enden

Neben dem JVM-IR-Backend gelten vorzeichenlose Integer sowie die Sprachfeatures für Sealed Interfaces und das Zusammenspiel mit JVM Records als stabil.

Lesezeit: 4 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 4 Beiträge
Luftbild einer Insel

Die Programmiersprache Kotlin ist nach der gleichnamigen russischen Insel benannt.

(Bild: news.ifmo.ru)

Von
  • Rainald Menge-Sonnentag

JetBrains hat Kotlin 1.5 veröffentlicht. Das erste größere Release der Programmiersprache im Jahr 2021 bringt kaum Neuerungen mit, stabilisiert aber zahlreiche in Kotlin 1.4.x eingeführte Sprachfeatures. Auch das neue JVM-Backend (Java Virtual Machine) gilt nun als stabil. Für Kotlin/Native bringt das Release Compiler-Caches im Debug-Modus für Linux und iOS mit, die das Kompilieren von Debug-Projekten beschleunigen sollen.

Java kennt seit Version 15 Records zum Speichern unveränderlicher Daten (Immutable Data), die den data-Klassen in Kotlin ähneln. Version 1.4.30 von JetBrains Programmiersprache führte die Annotation JvmRecord für data-Klassen zunächst als experimentelles Feature ein. Die Annotation sorgt dafür, dass der Compiler die benötigten Record-Methoden zum Zugriff auf die Poperties generiert. Die Umsetzung gilt in Kotlin 1.5 als stabil.

Dasselbe gilt für Sealed Interfaces: Versiegelte Klassen kannte Kotlin bereits, bevor auch sie als Preview in Java 15 Einzug hielten. Die bisher als Preview markierte Auszeichnung von Interfaces als sealed gilt in Kotlin 1.5 als stabil. Unterklassen von versiegelten Klassen müssen unabhängig davon, ob sie ebenfalls versiegelt sind oder nicht, im selben Paket und derselben Kompiliereinheit, aber nicht notwendigerweise in derselben Datei liegen.

Das Konzept der Inline Classes hat Kotlin in Version 1.3 als Alpha eingeführt, und in Kotlin 1.4.30 zur Beta befördert. Im aktuellen Release gelten sie ebenfalls als stabil. Inline Classes haben nichts mit den verschachtelten Inner Classes zu tun, sondern lassen sich als Wrapper für einen Wert nutzen, um Compileroptimierungen zu ermöglichen. Als Werte sind sowohl primitive Typen wie Int als auch Referenztypen wie String erlaubt.

Die Standard-Library stabilisiert die APIs für vorzeichenlose Integer-Varianten. Damit kennt Kotlin nun die Unsigned-Integer-Typen UByte (8 Bit), UShort (16 Bit), UInt (32 Bit) und ULong (64 Bit). Für alle vier existieren zugehörige Array-Typen, die jedoch in Version 1.5 noch als Beta gekennzeichnet sind.

Die Duration-API nutzt neuerdings Long-Werte als interne Repräsentation und bietet Properties zum Zugriff auf diesen Wert. Außerdem hat JetBrains die APIs zum Verarbeiten von Strings und Zeichen überarbeitet. Unter anderem existiert nun eine API, die beim Umwandeln zwischen Groß- und Kleinschreibung das zugehörige Locale für das Gebietsschema berücksichtigt.

Die Test-Library benötigt nur eine einzelne Dependency für kotlin-test im gemeinsamen Set von Multiplattformprojekten. Außerdem wählt die Library nun automatisch ein Testing-Framework für Kotlin/JVM-Sources aus. Schließlich gibt es für die Standard- und Test-Library Verbesserungen im Zusammenspiel mit Non-blocking I/O (NIO).

In Kotlin 1.4 hat JetBrains ein neues Backend eingeführt, und in Version 1.4.30 war das JVM-Backend als Beta gekennzeichnet. Im aktuellen Release gilt es nun als stabil und ist standardmäßig aktiviert. Das in einem separaten Blogbeitrag vorgestellte neue JVM-IR-Backend (Intermediate Representation) soll vor allem die Entwicklung neuer Sprachfeatures beschleunigen, da es eine gemeinsame Zwischenebene für alle Multiplattformziele gibt: für die JVM, JavaScript und native Anwendungen.

Der neue JVM-IR-Compiler nutzt eine gemeinsame Pipeline mit den Compilern für native Projekte über Kotlin/Native und JavaScript-Code mit Kotlin/JS. Laut dem Blogbeitrag zur Veröffentlichung von Kotlin 1.5 haben gut 25.000 Entwicklerinnen und Entwickler den neuen JVM-IR-Compiler in IntelliJ IDEA bereits in der Betaphase genutzt. Mit dem neuen Backend lassen sich zudem eigene Transformationen und Verarbeitungsprozesse definieren, die einheitlich in Multiplattformprojekten funktionieren.

Kotlin: Von der JVM zur Multiplattformsprache

Ursprünglich hatte JetBrains die Programmiersprache als Alternative zu Java ins Rennen geschickt. In den Anfängen war die Sprache auch auf die JVM begrenzt. Besonders auf Android hat sie einen Siegeszug angetreten, seit Google sie 2017 offiziell als Alternative zu Java auch in Android Studio aufgenommen 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 die Sprache anfänglich maßgeblich entwickelt.

Im Oktober hat JetBrains einen neuen Release-Zyklus angekündigt, nachdem alle sechs Monate ein Feature-Release mit der Versionierung 1.x erscheint. Inkrementelle Releases mit der Versionsnummer 1.x.y0 (1.5.10, 1.5.20, ...) sollen alle zwei bis drei Monate erscheinen, und Bugfix-Releases erscheinen nach Bedarf mit der Versionierung 1.x.yz (1.5.11, 1.5.12, ...).

Kotlin 1.5 ist das erste Feature-Release im neuen Sechsmonatstakt.

(Bild: JetBrains)

Weitere Details lassen sich dem Kotlin-Blog entnehmen. IntelliJ IDEA sollte automatisch ein Update zu Kotlin 1.5.0 vorschlagen. Dasselbe gilt für das auf IntelliJ IDEA basierenden Android Studio, allerdings erst ab der frischen Version 4.2.

(rme)