Frameworks CLI pour Java : créons des applications console puissantes
Le développement d'applications console (CLI) en Java est une tâche que chaque développeur rencontre. Le traitement manuel des arguments de ligne de commande via main(String[] args) devient rapidement lourd et sujet aux erreurs. Heureusement, l'écosystème Java dispose de frameworks matures qui prennent en charge l'analyse, la validation, l'auto-complétion et la génération d'aide. Dans cet article, nous examinerons trois outils de premier plan : Picocli, JCommander et Spring Shell.
1. Picocli — moderne et performant
Picocli est un framework de taille minimale (seulement 1,5 Mo) qui ne nécessite aucune dépendance externe. Il prend en charge les annotations, l'auto-complétion pour Bash/Zsh et la génération d'aide intégrée. Picocli est idéal pour les microservices et les outils en ligne de commande.
Fonctionnalités principales :
- Annotations
@Command,@Option,@Parameters - Sous-commandes imbriquées (subcommands)
- Paramètres typés (int, boolean, enum, collections)
- Validation automatique (paramètres obligatoires, plages)
- Sortie colorée et barres de progression
- Compilation native GraalVM
Exemple de code :
import picocli.CommandLine;import picocli.CommandLine.Command;import picocli.CommandLine.Option;import picocli.CommandLine.Parameters;
@Command(name = "greet", description = "Salutation de l'utilisateur")public class GreetCommand implements Runnable {
@Option(names = {"-n", "--name"}, description = "Nom de l'utilisateur", required = true) private String name;
@Option(names = {"-c", "--count"}, description = "Nombre de répétitions", defaultValue = "1") private int count;
@Parameters(index = "0", description = "Message", defaultValue = "Bonjour") private String message;
@Override public void run() { for (int i = 0; i < count; i++) { System.out.println(message + ", " + name + "!"); } }
public static void main(String[] args) { int exitCode = new CommandLine(new GreetCommand()).execute(args); System.exit(exitCode); }}Exécution : java GreetCommand -n Monde -c 2 "Bonjour" affichera :
Bonjour, Monde!Bonjour, Monde!2. JCommander — éprouvé par le temps
JCommander est l'un des plus anciens frameworks CLI (depuis 2010), utilisé dans des projets comme Jenkins et TestNG. Il prend en charge les annotations, les types complexes et l'internationalisation. JCommander se distingue par la simplicité de son API et une excellente documentation.
Caractéristiques clés :
- Annotations
@Parameteravec noms et descriptions - Prise en charge des commandes imbriquées via
JCommander.addCommand() - Validation via des
IParameterValidatorpersonnalisés - Génération d'aide avec
usage() - Travail avec des fichiers de configuration
Exemple de code :
import com.beust.jcommander.JCommander;import com.beust.jcommander.Parameter;import com.beust.jcommander.Parameters;
@Parameters(commandDescription = "Calculatrice")public class CalculatorCommand {
@Parameter(names = {"--a"}, description = "Premier nombre", required = true) private int a;
@Parameter(names = {"--b"}, description = "Deuxième nombre", required = true) private int b;
@Parameter(names = {"--op"}, description = "Opération : add/sub/mul/div") private String operation = "add";
public void run() { double result; switch (operation) { case "add": result = a + b; break; case "sub": result = a - b; break; case "mul": result = a * b; break; case "div": result Aussi dans la bibliothèque
GraphQL sur Kotlin : Aperçu des bibliothèques et outils pour le développement serveur
Gorilla Mux pour Go : guide complet avec exemples
Jetons JWT en PHP : bibliothèque firebase/php-jwt et guide complet