Warum Kotlin die ideale Sprache für CLI-Dienstprogramme ist?
\n\nWenn es um die Erstellung von Konsolenwerkzeugen geht, greifen viele Entwickler aus Gewohnheit zu Python oder Bash. Aber wenn Sie bereits mit Kotlin vertraut sind (und auf unserer Website pythonlib.ru sind wir überzeugt, dass ein guter Entwickler mehrere Sprachen beherrscht), dann wissen Sie, wie prägnant und ausdrucksstark diese Sprache ist. Die Erstellung von CLI-Dienstprogrammen in Kotlin ist nicht nur eine Modeerscheinung, sondern eine echte Möglichkeit, schnelle, typsichere und plattformübergreifende Werkzeuge zu erhalten.
\n\nStellen Sie sich vor: Sie schreiben eine Konsolenanwendung in Kotlin, die in ein JAR oder ein natives Binary über GraalVM oder Kotlin/Native kompiliert wird. Sie läuft überall – vom Linux-Server bis zum Windows-Rechner eines Kollegen. Dabei ist der Code 2-3 mal kürzer als in Java und viel sicherer als in Python. Klingt verlockend? Lassen Sie uns loslegen.
\n\nWas wird für den Start benötigt?
\n\nFür die Erstellung einer Kotlin CLI benötigen Sie ein Minimum:
\n- \n
- Installiertes JDK 11+ (ich empfehle 17 oder 21) \n
- IntelliJ IDEA (Community-Version reicht aus) oder einen beliebigen Texteditor \n
- Grundkenntnisse in Kotlin (Funktionen, Klassen, Collections) \n
- Gradle oder Maven für den Build \n
Wenn Sie noch nicht mit Kotlin in der Konsole gearbeitet haben – kein Problem. Wir gehen den Weg von einer leeren Datei bis zu einem vollwertigen Dienstprogramm, das veröffentlicht und in CI/CD-Pipelines verwendet werden kann.
\n\nSchritt 1: Projekteinrichtung für das CLI-Dienstprogramm
\n\nErstellen wir ein einfaches Gradle-Projekt. Hier ist das minimale build.gradle.kts:
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.pythonlib.cli.MainKt")\n}\n\nrepositories {\n mavenCentral()\n}\n\ndependencies {\n implementation("com.github.ajalt.clikt:clikt:4.2.2")\n implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")\n}\n\nBeachten Sie die beiden wichtigen Bibliotheken: Clikt und Kotlinx CLI. Die erste ist die beliebteste Bibliothek zur Erstellung von CLI-Dienstprogrammen in Kotlin. Die zweite ist die offizielle Lösung von JetBrains. In diesem Artikel werden wir Clikt verwenden, da es mehr Flexibilität bietet und schöner aussieht.
\n\nSchritt 2: Den ersten Befehl schreiben
\n\nErstellen wir die Datei src/main/kotlin/com/pythonlib/cli/Main.kt:
package com.pythonlib.cli\n\nimport com.github.ajalt.clikt.core.CliktCommand\nimport com.github.ajalt.clikt.parameters.arguments.argument\nimport com.github.ajalt.clikt.parameters.options.option\nimport com.github.ajalt.clikt.parameters.options.flag\n\nclass GreetCommand : CliktCommand(\n name = "greet",\n help = "Begrüßt den Benutzer"\n) {\n private val name: String by argument(\n help = "Benutzername"\n )\n\n private val uppercase: Boolean by option(\n "--uppercase", "-u",\n help = "Namen in Großbuchstaben ausgeben"\n ).flag()\n\n override fun run() {\n val greeting = "Hallo, $name!"\n if (uppercase) {\n echo(greeting.uppercase())\n } else {\n echo(greeting)\n }\n }\n}\n\nfun main(args: Array<String>) {\n GreetCommand().main(args)\n}\n\nDies ist ein einfaches Kotlin CLI-Dienstprogramm, das einen Namen und ein optionales Flag akzeptiert. Starten wir es:
\n\n./gradlew run --args="Alexei --uppercase"\n# Ausgabe: HALLO, ALEXEI!\n\nNur 30 Zeilen Code – und wir haben ein funktionierendes Konsolenwerkzeug. Clikt generiert selbstständig die Hilfe, verarbeitet Fehler und unterstützt die Autovervollständigung für bash/zsh.
\n\nSchritt 3: Mehrstufige Befehle (wie in Git)
\n\nEchte Konsolenanwendungen in Kotlin bestehen selten aus nur einem Befehl. Lassen Sie uns ein Dienstprogramm für die Dateiarbeit erstellen, das Unterbefehle unterstützt:
\n\nimport com.github.ajalt.clikt.core.subcommands\n\nclass FileTool : CliktCommand(\n name