Programmiersprache Kotlin 1.7.20 bringt Compiler-Plug-ins für Lombok und Co

Neben einer K2-Schnittstelle für Plug-ins hat das Release einen neuen Speichermanager für Kotlin/native an Bord und führt offene Ranges ein.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Luftbild einer Insel

Die Programmiersprache Kotlin ist nach der gleichnamigen russischen Insel benannt.

(Bild: Itmo.News)

Lesezeit: 4 Min.
Inhaltsverzeichnis

Zwei Monate nach Version 1.7 ist nun die erste Beta von Kotlin 1.7.20 erschienen. Das Release erweitert den neuen Compiler K2 um Plug-ins, die unter anderem auf Project Lombok und nicht finale Klassen für Frameworks zielen. Außerdem ist die in 1.7 eingeführte Speicherverwaltung für Kotlin/Native standardmäßig aktiviert. Schließlich gibt es eine syntaktische Neuerung für Ranges mit offenem Ende.

Das im Juni veröffentlichte Kotlin 1.7 hat den neuen K2-Compiler eingeführt, der laut JetBrains deutliche Performanceverbesserungen bringt. In Version 1.7.20 hat er zwar weiterhin Alpha-Status, aber im Gegensatz zum ersten Aufschlag lassen sich nun Compiler-Plug-ins verwenden. Zunächst kann er mit sieben Erweiterungen zusammenarbeiten.

Unter anderem lässt sich das Plug-in für das Einbinden von Project Lombok nutzen. Kotlin kann seit Version 1.5.20 mit der Java-Library zusammenarbeiten. Es kümmert sich auf Bytecode-Ebene um das Generieren von Boilerplate-Code: Durch die Annotation @Data erstellt Lombok neben Getter, Setter, Equals, Hashcode und die Umwandlung in einen String unter der Haube. Dadurch blähen die Methoden den Sourcecode nicht auf, stehen aber sowohl bei der Ausführung als auch in der Entwicklungsumgebung zur Verfügung. Das Compiler-Plug-in ist kein Ersatz für 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. Kotlins Klassen und deren Methoden sind standardmäßig final und erfordern 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.

Der mit der Beta von Kotlin 1.7 eingeführte neue Memory Manager für Kotlin/Native-Anwendungen, die ohne die JVM laufen, ist nun standardmäßig aktiviert. Bisher mussten Entwicklerinnen und Entwickler ihn manuell auswählen. Gleichzeitig wechselt er 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. Diese Restriktionen führten beim Vorgänger unter anderem beim Einsatz von Koroutinen mit der Library kotlinx.coroutines zu Problemen.

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 den neuen Memory Manager soll Kotlin Multiplatform Mobile in Kürze Betastatus erhalten.

Als sprachliche Neuerung sind die am Ende offenen Ranges erwähnenswert: Der Operator ..< zeigt ein oben offenes Intervall an, bei dem der Endwert nicht einbezogen ist: Die Werte sind mindestens so groß sind wie der Startwert und kleiner als der Endwert wie in folgendem Codeausschnitt aus der Kotlin-Dokumentation:

when (value) {
    in 0.0..<0.25 -> // first quarter
    in 0.25..<0.5 -> // second quarter
    in 0.5..<0.75 -> // third quarter
    in 0.75..1.0 ->  // last quarter  <- note closed range here
}

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

11 Jahre Kotlin

Die Programmiersprache hat am 19. Juli ihren elften 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. 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 Version 1.7.20 lassen sich dem Kotlin-Blog entnehmen. Die Betavariante lässt sich mit IntelliJ IDEA und dem darauf basierenden Android Studio nutzen. Wenn der Update-Channel unter Tools | Kotlin | Configure Kotlin Plugin Updates auf Early Access Preview eingestellt ist, schlägt die IDE automatisch das Aktualisieren auf die jüngste Beta vor.

(rme)