Kotlin-Skripte
Problem
Java und Kotlin sind schöne Sprachen für die Softwareentwicklung, aber wenn man nur ein kleines Script braucht, ist man bisher auf andere Sprachen wie Python oder JavaScript ausgewichen. An den Sprachen ist per se nichts Schlechtes, aber die Syntax und Standardbibliotheken sind anders als bei JVM-Sprachen und ich muss diese dann googeln.
Lösung
In Kotlin kann man Skripte schreiben. Dafür braucht man keine Gradle-Buildskripte, keine package.json o. ä., man kann in der Skriptdatei direkt die Abhängigkeiten angeben und dann einfach Kotlin-Code schreiben. Die Datei muss auf .main.kts enden, Intellij IDEA unterstützt diese nativ. Unten ist ein kleines Skript, das die bekannte Petstore-API abfragt. Zum Ausführen muss man Java und den Kotlin-Compiler installieren. Unter Windows lädt man diesen von Github herunter (kotlin-compiler-X.X.XX.zip) und fügt dann den bin-Ordner dem PATH hinzu. Unter Linux kann man z. B. snap nutzen `sudo snap install --classic kotlin`, unter Mac z. B. homebrew `brew install kotlin`.
Beispiel
@file:DependsOn("io.ktor:ktor-client-okhttp:+")
@file:DependsOn("io.ktor:ktor-client-gson:+")
import io.ktor.client.*
import io.ktor.client.features.json.*
import io.ktor.client.request.*
import kotlinx.coroutines.runBlocking
data class InventoryResponse(val sold: Int, val pending: Int, val available: Int)
val url = "https://petstore.swagger.io/v2/store/inventory"
HttpClient { install(JsonFeature) }.use { client ->
runBlocking {
val (sold, pending, available) = client.get<InventoryResponse>(url)
println("Result: Sold $sold, pending $pending, available $available")
}
}
C:\Users\findu\Development>kotlin petstore.main.kts
# Warnings about reflective access if Java version > 1.8
Result: Sold 4, pending 4, available 666
Weiterführende Aspekte
- Kotlin-Skripte sind schon recht stabil, ein paar Bugs gibt es dennoch: KT-28475, KT-43520 etc., aber diese werden laufend gefixt.
- Code: https://jamb.it/kotlinscript
- Ich kann jedem Java-Entwickler Kotlin empfehlen, weil es eine schöne Sprache ist.
---
Autor: Sebastian Lehrbaum / Software Architect / Business Division Automotive
Zum Toilet Paper #142: Kotlin-Skripte (PDF)
Lust, das nächste ToiletPaper zu schreiben? Jetzt bei jambit bewerben!