Kotlin setzt die Segel Richtung Unabhägigkeit

Kotlin/Native läuft jetzt auch auf Windows

Melanie Feldmann

© Shutterstock / Naruden Boonareesirichai

JetBrains hat mit Kotlin/Native eine Variante der beliebten Programmiersprache herausgebracht, die Kotlin direkt in Maschinencode kompiliert. Es handelt sich aber zunächst nur um eine Preview, die zwar lauffähig ist aber noch nicht in Produktion zum Einsatz kommen sollte. Seit der Ankündigung im April hat sich bereits einiges getan. Jetzt läuft Kotlin/Native auch auf Windows, sowohl was das Kompilieren selbst als auch die Ausführung betrifft.

Kotlin/Native nutzt den LLVM-Kompiler, um Maschinencode zu generieren. In der Preview der Programmiersprache werden zunächst vier Plattformen unterstützt: Mac OS (ab Version 10.10), x86-64 Ubuntu Linux (ab Version 14.04, 16.04), Apple iOS (arm64) cross-kompiliert auf einem MacOS-X-Host, und Raspberry Pi cross-kompiliert auf einem Linux-Host. Laut den Entwicklern lassen sich weitere Plattformen einfach ergänzen. So sollen noch verschiedene Linuxderivate bald folgen. Mit der Version 0.3 kommt jetzt der Support für Windows sowohl als Compilation Host als auch als Zielplattform. Auch Google-Android-Geräte können Kotlin/Native nun ausführen.

Basis der Plattformunabhängigkeit und Interoperabilität ist die Zusammenarbeit von Kotlin/Native und C. Kotlin/Native kann C-Funktionen direkt ansprechen und Daten von diesen sowohl erhalten als auch an diese weitergeben. Entwickler können Kotlin-Bindings in einer C-Header-Datei zur Build-Zeit generieren und erhalten typensicheren Zugriff zu allen nativen APIs der Zielplattform.

Momentan nutzt Kotlin/Native als Memory Management Automatic Reference Counting (ARC) mit Cycle Collection. Das ist aber nicht für jede Plattform sinnvoll. Deswegen soll die Programmiersprache in Zukunft verschiedene Arten des Speichermanagements unterstützen. Welche und wie, steht aber noch nicht fest. Außerdem ist Kotlin/Native auch noch nicht auf Performance optimiert. Deswegen sollen Entwickler von Benchmark-Tests noch Abstand nehmen, da sie wenig aussagekräftig seien. Die Standard-Library und die Unterstützung für Reflections sind ebenfalls noch weit von einer wirklichen Fertigstellung entfernt. Die genauen Einschränkungen der Preview kann man in den Release Notes der Version 0.1. nachlesen. Mit Version 0.2 unterstützt Kotlin/Native Co-Routinen und cross-modulare Inline-Funktionen.

Lesen Sie auch: Pirates of the JVM: Kotlin – lesbar, bündig, sicher

Die Ziele von Kotlin/Native

Das Ziel von Kotlin/Native ist es, Kotlin plattformunabhänig zu machen. Die Sprache soll genauso im Server-Backend laufen wie im Web oder auf mobilen Geräten. Dafür sollen Entwickler einzelne Module in Kotlin schreiben, den so genannten Common Modules, und diese dann für unterschiedliche Sprachen-Plattformen kompilieren. Zurzeit umfassen diese Kotlin/JVM, Kotlin/JS und nun Kotlin/Native. Common Modules verfügen über ein API für alle Clients. Andere plattformspezifische Module können das API erweitern, um exklusive Features der jeweiligen Plattform zu unterstützen. Das soll aber nicht dazu führen, dass alle Kotlin/JVM-Programme auf einmal auf Kotlin/Native oder Kotlin/JS laufen. „Wir gehen einen anderen Weg“, erklärt der Language Designer für Kotlin Andrey Breslav. „Wir bieten eine gemeinsame Sprache für alle Plattformen an und ermöglichen es gemeinsame Librarys zu erstellen, die nahtlos mit dem Plattformcode zusammenarbeiten.“ Kotlin/Native steht unter eine Apache-2-Lizenz.

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Schreibe einen Kommentar

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