Programmiersprache Kotlin 1.7.20 bringt offene Intervalle und Compiler-Plug-ins

Ein neuer Operator zeigt oben offene Ranges an, und der in 1.7 eingeführte K2-Compiler bekommt Plug-ins, mit denen er unter anderem Project Lombok anbindet.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Kotlin

(Bild: Shutterstock)

Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Drei Monate nach Kotlin 1.7 ist nun Version 1.7.20 der Programmiersprache erschienen. Das Release bringt eine syntaktische Neuerung für Ranges mit offenem Ende mit und öffnet den Compiler K2 für Plug-ins. Darüber hinaus ist die im vorigen Release eingeführte Speicherverwaltung für Kotlin/Native nun standardmäßig aktiviert.

Hinsichtlich der Syntax bringt das Release nur eine nennenswerte Ergänzung mit: Der Operator ..< zeigt einen nach oben offenen Range an. Die Werte im Intervall sind mindestens so groß wie der Start und kleiner als das Ende:

when (value) {
    in 0.0..<0.5 -> // offener Range: ohne 0.5
    in 0.5..1.0 ->  // geschlossener Range: mit 1.0
}

Mit dem neuen Operator erhält auch die Standard-Library von Kotlin eine Ergänzung: Das Interface OpenEndRange<T> ist ebenso das Pendant zu ClosedRange<T> wie ..< das Gegenstück zum geschlossenen .. ist.

Der K2-Compiler gehört zu den größten Neuerungen in Kotlin 1.7. Allerdings arbeitete er beim ersten Aufschlag nicht mit Compiler-Plug-ins zusammen. Das ändert sich im aktuellen Release, auch wenn K2 weiterhin Alphastatus hat. Der Compiler kann zunächst sieben Plug-ins verwenden, darunter die Erweiterung für Project Lombok.

Kotlin kann seit Version 1.5.20 mit der Java-Library zusammenarbeiten. Project Lombok kümmert sich auf Bytecode-Ebene um das Generieren von Boilerplate-Code: Durch die Annotation @Data erstellt Lombok unter anderem Getter und Setter unter der Haube. Das Compiler-Plug-in ersetzt nicht die Lombok-Bibliothek, sondern kümmert sich um das saubere Zusammenspiel beim Einsatz der Library für gemischten Java- und Kotlin-Code.

Zu den weiteren Plug-ins für K2 gehört mit all-open eine Erweiterung, die das Zusammenspiel von Kotlin mit Frameworks wie Spring AOP (Aspect Oriented Programming, Aspektorientierte Programmierung) ermöglicht, die offene Klassen erfordern. Da Kotlins Klassen und deren Methoden standardmäßig final sind, erfordern sie die explizite Auszeichnung als open. Das all-open-Plug-in annotiert Klassen und deren Member als offen, sodass kein manuelles Einfügen von open erforderlich ist.

Neben dem Compiler hat Kotlin 1.7 den Memory Manager für ohne JVM laufende Kotlin/Native-Anwendungen ausgetauscht. In Version 1.7.20 ist er nun standardmäßig aktiviert und wechselt vom Alpha- zum Betastatus. Er bringt unter anderem Vorteile für nebenläufige Programmierung, indem er Einschränkungen beim Teilen von Objekten zwischen Threads behebt.

Der neue Speichermanager soll vor allem die Tür für Kotlin Multiplatform Mobile öffnen, das auf die plattformübergreifende Mobilentwicklung für Android und iOS ausgelegt ist. Kotlin nutzt auf Googles Betriebssystem die JVM, die aber auf iOS fehlt, weshalb die Anwendungen in Kotlin/Native umgesetzt sind. Mit der Anbindung an den neuen Memory Manager soll Kotlin Multiplatform Mobile in Kürze Betastatus erhalten.

Kotlin – die Sprache mit und ohne JVM

JetBrains hat die Programmiersprache Kotlin ursprünglich für die Java Virtual Machine (JVM) entwickelt. 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. Im März hat JetBrains als Reaktion auf den russischen Angriffskrieg auf die Ukraine alle russischen Niederlassungen geschlossen und die Mitarbeiterinnen und Mitarbeiter in andere Länder umgezogen.

2020 hat JetBrains den Releasezyklus für Kotlin geändert. Das Unternehmen veröffentlicht planmäßig alle sechs Monate ein Feature-Release mit der Versionierung 1.x. Inkrementelle Releases mit der Versionsnummer 1.x.y0 (1.7.10, 1.7.20, ...) sollen alle zwei bis drei Monate erscheinen, und Bugfix-Releases folgen nach Bedarf mit der Versionierung 1.x.yz (1.7.21, 1.7.22, ...).

Weitere Neuerungen in Kotlin 1.7.20 wie die Anbindung an Gradle 7.1 lassen sich dem Kotlin-Blog entnehmen.

(rme)