Java के लिए CLI फ्रेमवर्क: शक्तिशाली कंसोल एप्लिकेशन बनाना
\nJava सर्वर-साइड एप्लिकेशन बनाने के लिए सबसे लोकप्रिय भाषाओं में से एक बना हुआ है, लेकिन इस पर कंसोल यूटिलिटीज भी नियमित रूप से लिखी जाती हैं। हालांकि, args[] के माध्यम से कमांड लाइन आर्गुमेंट्स का मैन्युअल पार्सिंग, विकल्पों, फ्लैग्स और नेस्टेड कमांड के आने पर जल्दी ही अव्यवस्था में बदल जाता है। विशेष CLI-फ्रेमवर्क मदद के लिए आते हैं। इस लेख में, हम तीन प्रमुख टूल्स पर विचार करेंगे: Picocli, JCommander और Spring Shell। आप उनकी विशेषताओं को जानेंगे, कोड उदाहरण देखेंगे और अपने प्रोजेक्ट के लिए उपयुक्त चुन सकेंगे।
1. Picocli — आधुनिक और उच्च प्रदर्शन वाला
\nPicocli (उच्चारण "पाइक-क्ली") न्यूनतम निर्भरता वाला एक हल्का फ्रेमवर्क है। यह एनोटेशन, शेल में ऑटो-कम्प्लीशन, नेस्टेड कमांड और यहां तक कि man-पेज प्रारूप में सहायता उत्पन्न करने का समर्थन करता है। Picocli सरल यूटिलिटीज से लेकर जटिल मल्टी-लेवल CLI बनाने के लिए आदर्श है।
\n\nPicocli के साथ एक बुनियादी कैलकुलेटर का उदाहरण:
\nimport picocli.CommandLine;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.Parameters;\n\n@Command(name = "calc", mixinStandardHelpOptions = true, version = "1.0",\n description = "सरल कैलकुलेटर")\npublic class Calculator implements Runnable {\n\n @Parameters(index = "0", description = "पहली संख्या")\n private double a;\n\n @Parameters(index = "1", description = "दूसरी संख्या")\n private double b;\n\n @Option(names = {"-o", "--operation"}, defaultValue = "+",\n description = "संक्रिया: +, -, *, /")\n private String operation;\n\n @Override\n public void run() {\n double result = switch (operation) {\n case "+" -> a + b;\n case "-" -> a - b;\n case "*" -> a * b;\n case "/" -> a / b;\n default -> throw new IllegalArgumentException("अज्ञात संक्रिया: " + operation);\n };\n System.out.printf("परिणाम: %.2f%n", result);\n }\n\n public static void main(String[] args) {\n int exitCode = new CommandLine(new Calculator()).execute(args);\n System.exit(exitCode);\n }\n}\nरन करें: java Calculator 10 5 -o "*" आउटपुट देगा परिणाम: 50.00। Picocli स्वचालित रूप से --help पर सहायता और --version पर संस्करण उत्पन्न करेगा।
2. JCommander — समय-परीक्षित
\nJCommander Java में आर्गुमेंट पार्स करने के लिए सबसे पुरानी लाइब्रेरी में से एक है। यह एनोटेशन का उपयोग करता है, लेकिन पार्सिंग पर अधिक मैन्युअल नियंत्रण प्रदान करता है। JCommander को अक्सर उन प्रोजेक्ट्स के लिए चुना जाता है जहां लचीलापन और मौजूदा कोड के साथ एकीकरण की आवश्यकता होती है।
\n\nJCommander के साथ मुद्रा परिवर्तक का उदाहरण:
\nimport com.beust.jcommander.JCommander;\nimport com.beust.jcommander.Parameter;\nimport com.beust.jcommander.Parameters;\n\n@Parameters(commandDescription = "मुद्रा परिवर्तक")\npublic class CurrencyConverter {\n\n @Parameter(names = {"--amount", "-a"}, description = "राशि", required = true)\n private Double amount;\n\n @Parameter(names = {"--from", "-f"}, description = "किस मुद्रा से (USD, EUR)", required = true)\n private String from;\n\n @Parameter(names = {"--to", "-t"}, description = "किस मुद्रा में", required = true)\n private String to;\n\n @Parameter(names = {"--help", "-h"}, help = true, description = "सहायता दिखाएँ")\n private boolean help;\n\n public void run() {\n if (help) {\n JCommander jc = new JCommander(this);\n jc.usage();\n return;\n }\n // सरलीकृत रूपांतरण तर्क\n double rate = switch (from.toUpperCase() + "_" + to.toUpperCase()) {\n case "USD_EUR" -> 0.92;\n case "EUR_USD" -> 1.09;\n default -> 1.0;\n };\n System.out.printf("%.2f %s = %.2f %s%n", amount, from.toUpperCase(), amoun