Haben Sie jemals davon geträumt, eine CLI-App zu erstellen, die schneller startet, als Sie "Java" sagen können? Dann schnallen Sie sich an, denn wir tauchen ein in die Welt der Quarkus-gestützten Kommandozeilen-Zauberei!

Erinnern Sie sich an die Zeiten, als das Starten einer Java-App so lange dauerte, als würde man darauf warten, dass Ihre Oma ihre Geschichte über die guten alten Zeiten beendet? Diese Zeiten sind vorbei, mein Freund. Hier kommt Quarkus ins Spiel: das Superhelden-Framework, das uns von der Tyrannei langsamer Startzeiten und speicherhungriger Anwendungen befreit.

Warum Quarkus für CLI? Weil wir es können!

Seien wir ehrlich: CLI-Apps mit traditionellen Java-Frameworks zu bauen, ist so spannend wie Farbe beim Trocknen zuzusehen. Aber Quarkus? Es ist, als würde man Ihrer CLI-App einen Espresso-Schuss geben. Hier ist der Grund:

  • Blitzschnelle Startzeiten (wir sprechen von Millisekunden, nicht von Kaffeepausenlängen)
  • Speicherbedarf kleiner als die Instagram-Follower Ihrer Katze
  • Native Kompilierung, die Ihre App so wirken lässt, als wäre sie in C geschrieben (aber ohne die Segfaults)
  • Hot Reload, das wirklich heiß ist, nicht lauwarm wie Ihr Bürokaffee

Einrichten Ihres Quarkus CLI-Spielplatzes

Erstmal loslegen. Starten Sie Ihr Terminal und erstellen Sie ein Quarkus-Projekt schneller, als Sie "Maven Central ist wieder ausgefallen" sagen können:

mvn io.quarkus:quarkus-maven-plugin:2.16.5.Final:create \
    -DprojectGroupId=com.example \
    -DprojectArtifactId=quarkus-cli-demo \
    -DclassName="com.example.CliCommand" \
    -Dpath="/hello" \
    -Dextensions="quarkus-picocli"
cd quarkus-cli-demo

Boom! Sie haben gerade ein Quarkus-Projekt mit Picocli-Unterstützung erstellt. Es ist wie Magie, aber für faule Entwickler.

Die Anatomie einer Quarkus CLI-App

Werfen wir nun einen Blick unter die Haube unserer glänzenden neuen CLI-App. Öffnen Sie CliCommand.java und bestaunen Sie dieses Schmuckstück:

@CommandLine.Command(name = "greeting", mixinStandardHelpOptions = true)
public class CliCommand implements Runnable {

    @CommandLine.Option(names = {"-n", "--name"}, description = "Wen begrüßen", defaultValue = "Welt")
    String name;

    @Override
    public void run() {
        System.out.println("Hallo " + name + "!");
    }
}

Dieses kleine Snippet ist das Herz Ihrer CLI-App. Es ist einfach, elegant und begrüßt Menschen. Was will man mehr?

Es zum Laufen bringen: Der spaßige Teil

Menschen zu begrüßen ist nett, aber lassen Sie uns unsere CLI etwas Spannenderes tun lassen. Wie wäre es mit einem Wetterabfrager? Denn wer redet nicht gerne über das Wetter?

@CommandLine.Command(name = "weather", mixinStandardHelpOptions = true)
public class WeatherCommand implements Runnable {

    @CommandLine.Option(names = {"-c", "--city"}, description = "Stadt, für die das Wetter abgefragt werden soll", required = true)
    String city;

    @Inject
    WeatherService weatherService;

    @Override
    public void run() {
        String weather = weatherService.getWeather(city);
        System.out.println("Wetter in " + city + ": " + weather);
    }
}

Jetzt geht's los! Dieser Befehl verwendet Dependency Injection, um Wetterdaten abzurufen. Quarkus macht das unglaublich einfach.

Das Geheimnis: Native Images

Hier glänzt Quarkus wirklich. Lassen Sie uns unsere Java-App in ein schlankes, schnelles, natives ausführbares Programm verwandeln:

./mvnw package -Pnative

Holen Sie sich einen Kaffee, machen Sie ein paar Liegestütze oder denken Sie über den Sinn des Lebens nach. Wenn Sie zurückkommen, haben Sie ein natives ausführbares Programm, das schneller startet, als Sie blinzeln können.

Testen: Weil wir Profis sind

Wir können dieses Meisterwerk nicht einfach ohne Tests ausliefern, oder? Quarkus unterstützt uns dabei:

@QuarkusTest
public class WeatherCommandTest {

    @Test
    public void testWeatherCommand() {
        CommandLine.ParseResult pr = new CommandLine(new WeatherCommand()).parseArgs("-c", "London");
        Assertions.assertTrue(pr.hasMatchedOption("c"));
        Assertions.assertEquals("London", pr.matchedOption("c").getValue());
    }
}

Führen Sie diesen Test aus, und wenn er besteht, herzlichen Glückwunsch! Sie sind jetzt offiziell ein Quarkus CLI-Entwickler.

Praxisbeispiel: Weil Theorie langweilig ist

Werden wir mal realistisch. Stellen Sie sich vor, Sie bauen ein CLI-Tool zur Verwaltung der Cloud-Infrastruktur Ihres Unternehmens. Sie könnten Quarkus verwenden, um Befehle zu erstellen für:

  • Neue Server hochfahren
  • Anwendungen bereitstellen
  • Ressourcennutzung überwachen

Hier ein kleiner Vorgeschmack, wie das aussehen könnte:

@CommandLine.Command(name = "cloud-manage", subcommands = {
    SpinUpCommand.class,
    DeployCommand.class,
    MonitorCommand.class
})
public class CloudManageCli implements Runnable {
    @Override
    public void run() {
        System.out.println("Willkommen beim Cloud Manager CLI!");
    }
}

Jeder Unterbefehl könnte mit verschiedenen Cloud-APIs interagieren, während er von den schnellen Startzeiten und dem geringen Speicherverbrauch von Quarkus profitiert.

Der Mic-Drop-Moment

Da haben Sie es, Leute. Wir sind durch das Land der Quarkus CLI-Apps gereist, von bescheidenen Anfängen bis hin zur Verwaltung von Cloud-Infrastrukturen. Hier ist, was wir gelernt haben:

  • Quarkus macht CLI-Apps schnell. Wirklich schnell.
  • Native Images sind die Geheimwaffe für sofortige Starts.
  • Dependency Injection in CLI-Apps? Quarkus sagt "Warum nicht?"
  • Tests sind einfach, also gibt es keine Ausrede, sie nicht zu machen.
  • Reale Anwendungen sind nur durch Ihre Vorstellungskraft begrenzt (und vielleicht Ihren Kaffeekonsum).

Das nächste Mal, wenn jemand Sie bittet, ein CLI-Tool zu bauen, geben Sie sich nicht mit der gleichen alten langweiligen Java-App zufrieden. Zeigen Sie Ihre Quarkus-Fähigkeiten und zeigen Sie, was ein modernes, blitzschnelles CLI leisten kann!

"In der Welt der CLI-Apps ist Quarkus der Unterschied zwischen 'Läuft es schon?' und 'Warte, es ist schon fertig?'"

Gehen Sie nun hinaus und bauen Sie CLI-Apps, die schneller starten, als Ihre Kollegen ihre IDE öffnen können. Und denken Sie daran, mit großer Macht kommt große Verantwortung... Ihre Quarkus-Fähigkeiten bei jeder Gelegenheit zu zeigen.

Denkanstoß

Bevor Sie losstürmen, um all Ihre CLI-Tools in Quarkus neu zu schreiben (und wir wissen, dass Sie es wollen), überlegen Sie Folgendes: Wie könnte der Aufstieg super-schneller, ressourcenschonender CLI-Tools die Art und Weise verändern, wie wir mit komplexen Systemen interagieren? Könnte Quarkus der Schlüssel sein, um mächtige Admin-Tools einem breiteren Benutzerkreis zugänglich zu machen? Denken Sie darüber nach, während Ihr natives Image kompiliert.

Viel Spaß beim Programmieren, und mögen Ihre CLI-Apps immer schnell und speichereffizient sein!