JVM-Sprache Kotlin erreicht 10. Meilenstein

Michael Thomas
© JetBrains

JetBrains, Hersteller der populären Entwicklungsumgebung IntelliJ IDEA, hat ein neues Release von Kotlin bekannt gegeben. Der mittlerweile 10. Meilenstein der auf Java- und JavaScript-Plattformen abzielenden Programmiersprache führt umfassende Neuerungen ein, von denen einige im Folgenden näher beleuchtet werden.

Spracherweiterungen

Mit M10 unterstützen Kotlins Inline-Funktionen nun auch reifizierte Typparameter. Typparameter, denen der reified-Modifikator verliehen wird, sind von innerhalb der Funktion zugänglich  fast so, als handele es sich um eine normale Klasse. Da es sich um eine Inline-Funktion handelt, ist auch keine Reflection nötig, und es funktionieren gewöhnliche Operatoren wie !is. Das Feature soll in erster Linie dann zum Einsatz kommen, wenn Code in Frameworks vereinfacht werden soll, die sich traditionellerweise auf Reflection verlassen.

JavaScript-Verbesserungen und -Änderungen

Eine der bedeutsamsten Neuerung stellt die Einführung der Unterstützung dynamischer Typen dar: Mit dem Schlüsselwort dynamic können Typen als dynamisch deklariert werden. Zur Zeit ist dies jedoch nur möglich, wenn auf JavaScript abgezielt wird (die JVM bleibt zunächst außen vor). Folge der Änderung: Bei der Zusammenarbeit mit JavaScript kann Kotlin eine Funktion nun als Parameter übergeben werden oder einen dynamischen Typ zurückgeben.

Außerdem stehen neue Annotationen (namentlich nativeInvoke, nativeGetter und nativeSetter) bereit, die die JavaScript-Interoperabilität erleichtern sollen.

Radikale Änderungen gegenüber M9 betreffen den kotlin.js-Output und den kotlin-js-Compiler. In früheren Versionen wurde die kotlin.js-Laufzeit bei der Erstellung eines neuen Projekts in einem Verzeichnis namens scripts erstellt. Mit M10 wird dieses Verzeichnis bei der ersten Kompilierung erstellt  und zwar im Output-Verzeichnis. Da sich Bibliothek und Projekt-Output nun im selben Root-Verzeichnis befinden, sind deutlich einfachere Bereitstellungsszenarien möglich. Gleichzeitig wird damit eine Abwärtskompatibilität verhindert. Eine weitere Neuerung gegenüber M9 ist die Kommandozeilenoption no-stdlib. Wird diese nicht spezifiziert, verwendet der Compiler die mitgelieferten Standard-Bibliotheken.

Java-Interoperabilität

Properties können nun als [platformStatic] markiert werden, wodurch ihre Zugriffsmethoden von Java als statische Methoden sichtbar werden. Zudem können Properties eines jeden Objekts nun statische Felder erzeugen, ohne dass sie dazu mit platformStatic-Annotationen versehen werden müssten, wodurch sie von Java leichter konsumiert werden können. Über die [native]-Annotation unterstützt Kotlin außerdem nun auch die im kotlin.jvm-Package definierte JNI  um eine native Methode zu deklarieren muss sie also nur mit einer Annotation versehen werden.

IntelliJ IDEA-Verbesserungen

Mit M10 ist in Kotlin nun die inkrementelle Kompilierung bei gemischten Projekten möglich, d.h. es werden Abhängigkeiten zwischen Kotlin- und Java-Code unterstützt: Bei einer Änderung des Java-Codes werden die relevanten Teile des Kotlin-Codes rekompiliert. Ebenfalls verbessert wurde die Code-Vervollständigung: So findet die intelligente Code-Vervollständigung nun Erben erwarteter Typen, außerdem wurde ihre Performance insgesamt deutlich verbessert. Auch im im Hinblick auf die JavaScript-Projektkonfiguration sind Neuerungen zu vermelden: Das IDE-Plug-in kann Maven-Projekte nun automatisch für die Arbeit mit Kotlin/JS konfigurieren. Sollte man eine veraltete Version von Kotlins Laufzeit-Bibliothek verwenden, schlägt die IDE zudem automatisch ein Update vor. Anstatt eine entsprechende Bibliothek ins Projekt zu kopieren, kann diese dabei auch aus der Plugin-Distribution ausgewählt werden.

Detailliertere Informationen (samt Codebeispielen) finden sich in der offiziellen Release-Mitteilung. Zu einigen der neuen Features sollen in den nächsten Tagen zudem gesonderte Beiträge erscheinen.

Kotlin Basics

Kotlin wird von dem tschechischen Tool-Anbieter JetBrains entwickelt und zielt auf Java- und JavaScript-Plattformen ab. Die Sprache kann in Bytecode oder JavaScript kompiliert werden; zu ihren Merkmalen gehören ein statisches Typensystem, Objektorientierung, prozedurales Programmieren mittels Funktionen, Unterstützung für Variable Type Inference und Support für Closures.

Seit Februar 2012 ist Kotlin als Open Source verfügbar. Ursprünglich aus der Taufe gehoben wurde die Sprache, weil Scala nach JetBrains-Aussage zu komplex, Groovy zu langsam und Ceylon zu Java-inkompatibel gewesen sei (siehe unseren ursprünglichen Beitrag zum Launch von Kotlin).

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.