जावा के लिए CLI फ्रेमवर्क: शक्तिशाली कंसोल एप्लिकेशन बनाना
जावा में जटिल कंसोल एप्लिकेशन विकसित करने के लिए न केवल तर्क की आवश्यकता होती है, बल्कि एक सुविधाजनक कमांड लाइन इंटरफ़ेस (CLI) की भी आवश्यकता होती है। आर्गुमेंट्स को पार्स करना, विकल्पों को संसाधित करना, सहायता प्रदर्शित करना — इन कार्यों को मैन्युअल रूप से लागू करना समय लेने वाला और त्रुटियों से भरा होता है। सौभाग्य से, परिपक्व CLI फ्रेमवर्क मौजूद हैं जो इस प्रक्रिया को स्वचालित करते हैं। इस लेख में, हम तीन प्रमुख उपकरणों: Picocli, JCommander और Spring Shell का कोड उदाहरणों और चयन के लिए सिफारिशों के साथ विस्तार से विश्लेषण करेंगे।
1. Picocli — आधुनिक और उच्च प्रदर्शन वाला
Picocli (https://picocli.info/) आज जावा के लिए सबसे लोकप्रिय CLI फ्रेमवर्क है। इसका मुख्य लाभ एनोटेशन-आधारित न्यूनतम API और Java, Kotlin, Groovy, Scala के लिए समर्थन है। लाइब्रेरी को किसी बाहरी निर्भरता की आवश्यकता नहीं है और यह Bash, Zsh और Fish के लिए ऑटो-कम्प्लीशन जनरेट कर सकती है।
Picocli की मुख्य विशेषताएं:
- एनोटेशन
@Command,@Option,@Parameters - स्वचालित सहायता जनरेशन (
--help) - नेस्टेड कमांड (सबकमांड)
- वैल्यू प्रकारों के लिए समर्थन (int, boolean, enum, LocalDate)
- कस्टम कन्वर्टर और वैलिडेटर
Picocli पर एक सरल एप्लिकेशन का उदाहरण:
import picocli.CommandLine;import picocli.CommandLine.Command;import picocli.CommandLine.Option;import picocli.CommandLine.Parameters;
@Command(name = "greet", description = "उपयोगकर्ता का स्वागत करता है")public class GreetApp implements Runnable {
@Option(names = {"-n", "--name"}, defaultValue = "दुनिया", description = "अभिवादन के लिए नाम") private String name;
@Option(names = {"-c", "--count"}, defaultValue = "1", description = "पुनरावृत्तियों की संख्या") private int count;
@Override public void run() { for (int i = 0; i < count; i++) { System.out.println("नमस्ते, " + name + "!"); } }
public static void main(String[] args) { int exitCode = new CommandLine(new GreetApp()).execute(args); System.exit(exitCode); }}चलाना:
java GreetApp --name="Java डेवलपर" --count=3आउटपुट:
नमस्ते, Java डेवलपर!नमस्ते, Java डेवलपर!नमस्ते, Java डेवलपर!2. JCommander — सिद्ध क्लासिक
JCommander (https://jcommander.org/) एक परिपक्व लाइब्रेरी है जिसका एक समृद्ध इतिहास है (2011 से)। यह भी एनोटेशन का उपयोग करता है, लेकिन जटिल परिदृश्यों के लिए अधिक लचीली आर्किटेक्चर प्रदान करता है। JCommander विशेष रूप से उन परियोजनाओं के लिए उपयोगी है जहाँ पार्सिंग और त्रुटि प्रबंधन पर सख्त नियंत्रण की आवश्यकता होती है।
JCommander की मुख्य विशेषताएं:
- एनोटेशन
@Parameterविशेषताओंnames,required,descriptionके साथ Commandsके माध्यम से मल्टी-लेवल कमांड के लिए समर्थन- अंतर्निहित पैरामीटर वैलिडेटर
- कन्वर्टर्स के माध्यम से मनमाने प्रकारों का उपयोग करने की क्षमता
JCommander के साथ उदाहरण:
import com.beust.jcommander.JCommander;import com.beust.jcommander.Parameter;import com.beust.jcommander.Parameters;
@Parameters(commandDescription = "कैलकुलेटर")public class Calculator {
@Parameter(names = {"--a"}, description = "पहली संख्या", required = true) private int a;
@Parameter(names = {"--b"}, description = "दूसरी संख्या", required = true) private int b;
@Parameter(names = {"--op"}, description = "ऑपरेशन: add, sub, mul, div") private String operation = "add";
public void run() { int result; switch (operation) { case "add": result = a + b; break; case "sub": result = a - b; break; case "mul पुस्तकालय में भी
Swift (iOS/macOS) के लिए HTTP-क्लाइंट: नेटवर्क कार्य के लिए शीर्ष लाइब्रेरीज़
C# (.NET) में डेटा सत्यापन: लाइब्रेरीज़, विशेषताएँ और FluentValidation
Go में XML के साथ काम: encoding/xml, लाइब्रेरी और उदाहरण
C# (.NET) में डेटाबेस माइग्रेशन: Entity Framework, FluentMigrator और अन्य दृष्टिकोण