Avez-vous déjà rêvé de créer une application CLI qui démarre plus vite que vous ne pouvez dire "Java" ? Eh bien, accrochez-vous, car nous allons plonger dans le monde magique des lignes de commande propulsées par Quarkus !

Vous vous souvenez des jours où démarrer une application Java ressemblait à attendre que votre grand-mère termine son histoire sur le bon vieux temps ? Ces jours sont révolus, mon ami. Voici Quarkus : le super-héros des frameworks qui vient nous sauver de la tyrannie des démarrages lents et des applications gourmandes en mémoire.

Pourquoi Quarkus pour les CLI ? Parce que nous le pouvons !

Avouons-le : créer des applications CLI avec des frameworks Java traditionnels est aussi excitant que de regarder de la peinture sécher. Mais Quarkus ? C'est comme donner un coup de fouet à votre application CLI. Voici pourquoi :

  • Temps de démarrage ultra-rapides (on parle de millisecondes, pas de pauses café)
  • Empreinte mémoire plus petite que le nombre de followers de votre chat sur Instagram
  • Compilation native qui donne l'impression que votre application est écrite en C (mais sans les erreurs de segmentation)
  • Rechargement à chaud vraiment chaud, pas tiède comme le café de bureau

Configurer votre terrain de jeu Quarkus CLI

Commençons par mettre les mains dans le cambouis. Ouvrez votre terminal et créons un projet Quarkus plus vite que vous ne pouvez dire "Maven Central est encore en panne" :

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 ! Vous venez de créer un projet Quarkus avec le support de Picocli. C'est comme de la magie, mais pour les développeurs paresseux.

L'anatomie d'une application CLI Quarkus

Maintenant, jetons un coup d'œil sous le capot de notre nouvelle application CLI. Ouvrez CliCommand.java et admirez cette beauté :

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

    @CommandLine.Option(names = {"-n", "--name"}, description = "Qui saluer", defaultValue = "Monde")
    String name;

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

Ce petit extrait est le cœur de votre application CLI. C'est simple, c'est élégant, et ça salue les gens. Que demander de plus ?

Le faire fonctionner : la partie amusante

Saluer les gens, c'est bien, mais faisons en sorte que notre CLI fasse quelque chose d'un peu plus excitant. Que diriez-vous d'un récupérateur de météo ? Parce que qui n'aime pas parler de la météo ?

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

    @CommandLine.Option(names = {"-c", "--city"}, description = "Ville pour vérifier la météo", required = true)
    String city;

    @Inject
    WeatherService weatherService;

    @Override
    public void run() {
        String weather = weatherService.getWeather(city);
        System.out.println("Météo à " + city + " : " + weather);
    }
}

Maintenant, on passe aux choses sérieuses ! Cette commande utilise l'injection de dépendances pour récupérer les données météo. Quarkus rend cela ridiculement facile.

L'ingrédient secret : les images natives

C'est là que Quarkus brille vraiment. Transformons notre application Java en un exécutable natif, léger et rapide :

./mvnw package -Pnative

Allez prendre un café, faites quelques pompes ou contemplez le sens de la vie. Quand vous reviendrez, vous aurez un exécutable natif qui démarre plus vite que vous ne pouvez cligner des yeux.

Tests : Parce que nous sommes des professionnels

Nous ne pouvons pas livrer ce chef-d'œuvre sans le tester, n'est-ce pas ? Quarkus nous couvre :

@QuarkusTest
public class WeatherCommandTest {

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

Exécutez ce test, et s'il passe, félicitations ! Vous êtes maintenant officiellement un développeur CLI Quarkus.

Exemple concret : Parce que la théorie, c'est ennuyeux

Passons aux choses sérieuses. Imaginez que vous construisez un outil CLI pour gérer l'infrastructure cloud de votre entreprise. Vous pourriez utiliser Quarkus pour créer des commandes pour :

  • Lancer de nouveaux serveurs
  • Déployer des applications
  • Surveiller l'utilisation des ressources

Voici un aperçu de ce à quoi cela pourrait ressembler :

@CommandLine.Command(name = "cloud-manage", subcommands = {
    SpinUpCommand.class,
    DeployCommand.class,
    MonitorCommand.class
})
public class CloudManageCli implements Runnable {
    @Override
    public void run() {
        System.out.println("Bienvenue dans le gestionnaire de cloud CLI !");
    }
}

Chaque sous-commande pourrait interagir avec différentes API cloud, tout en bénéficiant du démarrage rapide et de la faible utilisation de mémoire de Quarkus.

Le moment de gloire

Voilà, mesdames et messieurs. Nous avons parcouru le monde des applications CLI Quarkus, des débuts modestes à la gestion du cloud. Voici ce que nous avons appris :

  • Quarkus rend les applications CLI rapides. Vraiment rapides.
  • Les images natives sont l'arme secrète pour des démarrages instantanés.
  • L'injection de dépendances dans les applications CLI ? Quarkus dit "pourquoi pas ?"
  • Les tests sont faciles, donc vous n'avez aucune excuse pour ne pas les faire.
  • Les applications concrètes ne sont limitées que par votre imagination (et peut-être votre consommation de café).

La prochaine fois que quelqu'un vous demande de créer un outil CLI, ne vous contentez pas de la même vieille application Java ennuyeuse. Montrez vos muscles Quarkus et montrez-leur ce qu'un CLI moderne et ultra-rapide peut faire !

"Dans le monde des applications CLI, Quarkus fait la différence entre 'Est-ce que ça fonctionne déjà ?' et 'Attendez, c'est déjà fini ?'"

Allez maintenant, construisez des applications CLI qui démarrent plus vite que vos collègues ne peuvent ouvrir leur IDE. Et rappelez-vous, avec un grand pouvoir vient une grande responsabilité... de montrer vos compétences Quarkus à chaque occasion.

Réflexion

Avant de vous précipiter pour réécrire tous vos outils CLI en Quarkus (et nous savons que vous en avez envie), considérez ceci : Comment l'essor des outils CLI ultra-rapides et à faible empreinte pourrait-il changer notre interaction avec des systèmes complexes ? Quarkus pourrait-il être la clé pour rendre les outils d'administration puissants accessibles à un plus large éventail d'utilisateurs ? Réfléchissez-y pendant que votre image native se compile.

Bon codage, et que vos applications CLI soient toujours rapides et économes en mémoire !