Google kündigt Kotlin Symbol Processing für Android-Apps an
Das neue Tool für Compiler-Plug-ins soll direkt auf Compiler-Features in Kotlin zugreifen können und Code ohne Zwischenstufe in Java parsen.
- Silke Hahn
Google hat die Alpha von Kotlin Symbol Processing (KSP) vorgestellt. Mit dem noch in der Entwicklung befindlichen Tool sollen sich künftig Compiler-Plug-ins in der Programmiersprache Kotlin erstellen lassen. Von der Funktionalität her ähnelt KSP offenbar KAPT, einem bereits vorhandenen Compiler-Plug-in für Kotlin (KAPT steht für Kotlin Annotation Processing Tool).
Beschleunigter Bau von Builds
Allerdings soll das neue Kotlin Symbol Processing deutlich schneller sein, direkten Zugriff auf die Compiler-Features von Kotlin eröffnen und die Neuentwicklung strebt laut Ankündigung im Google-Blog nach plattformübergreifender Kompatibilität.
Videos by heise
Motivation für das neue Projekt war der Wunsch von Kotlin-Entwicklern nach einem beschleunigten Erstellen von Builds. Eine der größten Herausforderungen bei der Arbeit mit Kotlin ist laut Blogeintrag, dass Kotlin kein natives System zum Verarbeiten von Annotationen mitbringt. Durch das Kotlin Annotation Processing (KAPT) vermittelt lassen sich Annotationsprozesse von Java anzapfen. Prozessoren für Annotationen wie Room gibt es auf Android zuhauf und sie beruhen alle im Grunde auf Java, äußern die Android-Entwickler im Blog ihr Bedauern. KAPT ist offenbar nicht für Geschwindigkeit berühmt, da es als Zwischenstufe zunächst Java-Code generieren muss, den das Verarbeitungssystem für Java-Annotationen dann im nächsten Schritt aufnehmen kann.
Direktes Parsen von Kotlin-Code
Der Entwurf des Kotlin Symbol Processing (KSP) sieht das direkte Parsen von Kotlin-Code ohne Java als Zwischenstopp vor. Dazu dient eine API, die bei ersten Benchmark-Tests mit der Room-Library gut abgeschnitten hat (etwa zweimal so schnell wit KAPT laut Blogeintrag). Ausprobieren lässt sich die Alpha als Playground-Version mit der Library (test-processor) und einem Testprojekt (workload). Der Unterschied beim Implementieren der Logik zwischen KAPT und KSP besteht offenbar lediglich in zwei Zeilen Code:
(Bild: Android Developers, Google)
KAPT und KSP sollten nicht im selben Modul zum Einsatz kommen, da das den Build-Prozess verlangsamt. Die meisten Entwickler von Android-Apps müssen sich aber jenseits der geänderten Codezeile laut Blogankündigung keine Gedanken machen, abgesehen davon soll KSP wie ein normaler Annotation Processor funktionieren (bloß schneller, heißt es). Für die Zukunft erwarten die Android-Entwickler, dass zahlreiche Annotationsprozessoren mit KSP kompatibel werden und dass App-Entwickler dann KAPT zunehmend durch KSP ersetzen können.
Ressourcen und Hinweise
Derzeit ist KSP mit Kotlin ab der aktuellen Version 1.4.30 kompatibel und steht Interessierten auf GitHub bereit – mehr Informationen lassen sich dem Blogeintrag der Android-Entwickler entnehmen. Wer neugierig geworden ist, kann zum Ausprobieren eine ZIP-Datei mit dem KSP-Playground aus dem GitHub-Repository beziehen. Urheber von Libraries, die Annotation Processing verwenden, können auf GitHub nachschlagen, inwiefern sie von Änderungen betroffen sind. Die KSP-Entwickler betreiben im Kotlin-Slack einen eigenen KSP-Kanal und auf GitHub einen Issue-Tracker.
(sih)