CLI-Frameworks für Java: Leistungsstarke Konsolenanwendungen erstellen
Java bleibt eine der beliebtesten Sprachen für die Entwicklung von Serveranwendungen, aber auch Konsolenprogramme werden regelmäßig damit geschrieben. Allerdings wird die manuelle Analyse von Befehlszeilenargumenten über args[] schnell chaotisch, sobald Optionen, Flags und verschachtelte Befehle hinzukommen. Hier helfen spezialisierte CLI-Frameworks. In diesem Artikel betrachten wir drei führende Tools: Picocli, JCommander und Spring Shell. Sie erfahren ihre Besonderheiten, sehen Codebeispiele und können das passende für Ihr Projekt auswählen.
1. Picocli – Modern und leistungsstark
Picocli (ausgesprochen „Pike-CLI“) ist ein leichtgewichtiges Framework mit minimalen Abhängigkeiten. Es unterstützt Annotationen, Autovervollständigung in der Shell, verschachtelte Befehle und sogar die Generierung von Hilfetexten im Manpage-Format. Picocli eignet sich ideal sowohl für einfache Dienstprogramme als auch für komplexe mehrstufige CLIs.
Beispiel eines einfachen Taschenrechners mit Picocli:
import picocli.CommandLine;import picocli.CommandLine.Command;import picocli.CommandLine.Option;import picocli.CommandLine.Parameters;
@Command(name = "calc", mixinStandardHelpOptions = true, version = "1.0", description = "Einfacher Taschenrechner")public class Calculator implements Runnable {
@Parameters(index = "0", description = "Erste Zahl") private double a;
@Parameters(index = "1", description = "Zweite Zahl") private double b;
@Option(names = {"-o", "--operation"}, defaultValue = "+", description = "Operation: +, -, *, /") private String operation;
@Override public void run() { double result = switch (operation) { case "+" -> a + b; case "-" -> a - b; case "*" -> a * b; case "/" -> a / b; default -> throw new IllegalArgumentException("Unbekannte Operation: " + operation); }; System.out.printf("Ergebnis: %.2f%n", result); }
public static void main(String[] args) { int exitCode = new CommandLine(new Calculator()).execute(args); System.exit(exitCode); }}Aufruf: java Calculator 10 5 -o "*" gibt Ergebnis: 50.00 aus. Picocli generiert automatisch eine Hilfe mit --help und die Version mit --version.
2. JCommander – Bewährt und zuverlässig
JCommander ist eine der ältesten Bibliotheken zur Argumentanalyse in Java. Sie verwendet Annotationen, bietet aber mehr manuelle Kontrolle über das Parsen. JCommander wird oft für Projekte gewählt, die Flexibilität und Integration mit vorhandenem Code erfordern.
Beispiel eines Währungsumrechners mit JCommander:
import com.beust.jcommander.JCommander;import com.beust.jcommander.Parameter;import com.beust.jcommander.Parameters;
@Parameters(commandDescription = "Währungsumrechner")public class CurrencyConverter {
@Parameter(names = {"--amount", "-a"}, description = "Betrag", required = true) private Double amount;
@Parameter(names = {"--from", "-f"}, description = "Von welcher Währung (USD, EUR)", required = true) private String from;
@Parameter(names = {"--to", "-t"}, description = "In welche Währung", required = true) private String to;
@Parameter(names = {"--help", "-h"}, help = true, description = "Hilfe anzeigen") private boolean help;
public void run() { if (help) { JCommander jc = new JCommander(this); jc.usage(); return; } // Vereinfachte Umrechnungslogik double rate = switch (from.toUpperCase() + "_" + to.toUpperCase()) { case "USD_EUR" -> 0.92; case "EUR_USD" -> 1.09; default -> 1.0; }; System.out.printf("%.2f %s = %.2f %s%n", amount, from.toUpperCase(), amoun Auch in der Bibliothek
Valibot für TypeScript: Komplettguide mit Beispielen
Java für Geolokalisierung und Karten: Bibliotheken, APIs und Beispiele
Arbeit mit XML in TypeScript: Bibliotheken, Parsing und Erstellung von XML-Dokumenten
CLI-Framework für Swift: Erstellung von Konsolen-Dienstprogrammen für iOS/macOS
Socket.io für JavaScript (Node.js): Vollständiger Leitfaden mit Beispielen