Programmiersprache: Kotlin 1.3.60 bringt zahlreiche Optimierungen

Vor allem im Zusammenspiel mit IntelliJ IDEA bringt die Programmiersprache einige Verbesserungen unter anderem beim Umwandeln von Java-Code mit.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Programmiersprache: Kotlin 1.3.60 bringtzahlreiche Optimierungen
Lesezeit: 5 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Knapp drei Monate nach der Freigabe von Kotlin 1.3.50 hat JetBrains nun das sechste Minor Release der 1.3-Serie veröffentlicht. Die Neuerungen beziehen sich vor allem auf die Werkzeuge zum Debuggen und das Konvertieren von Java zu Kotlin. Kotlin/Native kennt neue Zielplattformen und aktualisierte Anbindung an externe Tools. Das generische Kommadozeilenwerkzeug kotlinx.cli hat eine komplette Überarbeitung erhalten.

Bei den APIs und der Programmiersprache gibt es keine Neuerungen, aber die Entwickler haben die Vergleichsfunktion für inline-Klassen optimiert. Der Compiler erzeugt dafür eine spezielle statische Methode. Für die Klasse kotlin.Result greift die Optimierung jedoch aus Kompatibilitätsgründen aber erst ab Kotlin 1.4.

Besonders bei der Integration in die ebenfalls von JetBrains herausgegebenen Entwicklungsumgebung IntelliJ IDEA gibt es einige Verbesserungen. Entwickler können nun Method beziehungsweise Function Breakpoints in Kotlin-Code setzen. Der Debugger stoppt die Ausführung beim Einsprung und/oder Verlassen der jeweiligen Funktion. Zusätzlich lässt sich eine Bedingung angeben, die beim Einsprung gegeben sein muss.

Der Debugger von IntelliJ IDEA kann neuerdings auch für Kotlin-Funktionen Breakpoints anlegen.

(Bild: JetBrains)

Kotlin 1.3.50 hatte einen neuen Java-to-Kotlin-Konverter für IntelliJ IDEA an Bord, den das aktuelle Release weiter verfeinert. Vor allem in einigen Sonderfällen wie beim Umwandeln statischer Importanweisungen soll die Umwandlung nun konsistenter sein. Zudem untersucht der Konverter genauer die Verwendung von Collections in Java, um festzustellen, ob er daraus in Kotlin eine veränderbare (mutable) oder eine Read-only Collection erzeugt.

Für die Anbindung an die Eclipse-IDE bringt Kotlin 1.3.60 eine Unterstützung für das inkrementelle Kompilieren mit. Das Vorgehen ist auf einzelne Module begrenzt und gilt derzeit als experimentell. Entwickler können sie über den Bereich Kotlin | Building in den Eclipse-Propertys aktivieren.

Im vergangenen Release hat JetBrains Kotlin/Native hinsichtlich der Versionierung an Kotlin angeglichen. Mit Kotlin/Native lassen sich Binaries statt Code für die JVM erstellen. Die Motivation für den Einsatz ist vor allem das Verwenden der Programmiersprache für Plattformen, die nicht von Haus aus eine JVM mitbringen, was vor allem für Apples Produktportfolio gilt.

Das aktuelle Release kennt gleich mehrere neue Plattformen: Bei watchOS sind es die Varianten für x86 sowie 32-Bit und 64-Bit ARM, und für tvOS sind x64 sowie ARM64 hinzugekommen. Auch wenn unter Android der typische Weg mit Kotlin über die JVM führt, sind neuerdings auch x86 und x64 als Build-Ziele für Kotlin/Native verfügbar. Hinsichtlich der angebundenen Werkzeuge ist das Release mit XCode 11 und LLVM 8.0 kompatibel.

Die Kotlin-Macher haben zudem die Performance für die native Kotlin-Variante optimiert. So sollen bei der Ausführung nun Interface-Aufrufe bis zu fünffach schneller sein und Type Checks sogar bis zu 50 mal. Die Kompilierzeit für große Projekte reduziert sich ebenfalls, da die Toolchain native Librarys aus klibs statt dem Sourcecode erzeugt.

Das Werkzeug kotlinx.cli ist ein separates gepflegtes Open-Source-Projekt mit einem eigenen GitHub-Repository. Der generische Kommandozeilen-Parser ist komplett in Kotlin geschrieben. Er lässt sich sowohl für die JVM- als auch die native Variante von Kotlin verwenden. Die Entwickler haben das Werkzeug wohl fast vollständig neu geschrieben, und es ist in Kotlin 1.3.60 zusammen mit dem Kotlin/Native-Compiler an Bord.

Kotlin/JS zum Erstellen von JavaScript-Code aus Kotlin bietet ein paar Ergänzungen, die vor allem bei der Fehlersuche und beim Testing helfen. So erstellt das Gradle-Plug-in nun automatisch Source Maps. Damit lassen sich lesbare Stack-Traces erstellen, die bei der Fehlersuche helfen.

Source Maps geben einen besseren Einblick in Kotlin/JS-Code.

(Bild: JetBrains)

Zudem helfen die Source Maps bei Tests, da die Gradle Reports nun die passenden Dateinamen und Zeilennummern den über die Standardausgabekanäle log, warn und error ausgegebenen Meldungen zuordnen. Neuerdings lassen sich zudem für Kotlin/JS selektive Tests über die Kommandozeilenoption --tests von Gradle durchführen.

Änderungen an der API sind erst für Kotlin 1.4 geplant, das im Lauf des kommenden Jahres erscheinen soll. Allerdings können Entwickler bereits in Kotlin 1.3.60 einige der für Version1.4 geplanten Neuerungen testen, indem sie languageVersion = "1.4" und optional zusätzlich apiVersion = "1.4" setzen.

Letzteres wirft unter anderem eine passende NullPointerException statt einer IllegalStateException für Aufrufe, die den entsprechenden Ausnahmezustand eines Nullzeigers auslösen. Als Neuerung in der Sprache ist vorgesehen, dass innerhalb von when-Blöcken sowohl break als auch continue ohne Label erlaubt sind.

Weitere Neuerungen in Koltin 1.3.60 wie die verbesserten Fehlermeldungen des Compilers lassen sich dem Kotlin-Blog entnehmen. (rme)