सभी को नमस्कार!
अगले समूह शुरू
"जावा डेवलपर , जो हम सभी के लिए जारी हमारे प्रयोग है कि सीखने की प्रक्रिया निरंतर होने के लिए नहीं है (" countermotion निरंतर होना चाहिए? ")। यही है, हमने कार्यक्रम को थोड़ा फेरबदल और फेरबदल किया, और इसे तीन चरणों में विभाजित किया, जिसे आसानी से उन दोनों के बीच एक ब्रेक के साथ पारित किया जा सकता है। सामान्य तौर पर, यह छात्रों और हमारे लिए दोनों के लिए दिलचस्प है, अगर केवल कोई भी नम नहीं था, अन्यथा कार्यक्रम थोड़ा और अधिक जटिल प्रतीत होता है, हालांकि इससे पहले यह आसान नहीं था। खैर, एक पारंपरिक रूप से दिलचस्प लेख हमारे पाठ्यक्रम से संबंधित है।
चलो चलते हैं!
आधिकारिक वेबसाइट पर, पिकोकली को "एक शक्तिशाली छोटी कमांड लाइन इंटरफ़ेस" के रूप में वर्णित किया गया है, जो "कमांड लाइन के तर्कों को पार्स करने और निर्दोष, आसानी से अनुकूलन सहायक संदेशों को बनाने के लिए एक एकल-फ़ाइल जावा फ्रेमवर्क है। फूलों के साथ। " यह पोस्ट
Picocli 0.9.7 का संक्षिप्त विवरण और जावा कोड में कमांड-लाइन तर्कों को पार्स करने के लिए इसका उपयोग प्रदान करता है।
इस श्रृंखला में वर्णित अन्य जावा कमांड-लाइन प्रोसेसिंग लाइब्रेरी की तरह,
पिकॉकली ओपन सोर्स है । चूंकि सभी पिकोकली एकल
जावा फ़ाइल में लागू की जाती है, आप आसानी से स्रोत कोड का उपयोग आसानी से कर सकते हैं यदि आप चाहें। पिकॉकली साइट इस बात पर जोर देती है कि "पिकॉकली की विशिष्ट विशेषता यह है कि यह उपयोगकर्ताओं को उन अनुप्रयोगों को चलाने की अनुमति देता है जो पिकॉकली को बाहरी निर्भरता के रूप में स्वयं की आवश्यकता के बिना उपयोग करते हैं: सभी स्रोत कोड एप्लिकेशन लेखकों को प्रोग्राम स्रोत कोड में इसे शामिल करने के लिए प्रोत्साहित करने के लिए एक फ़ाइल में स्थित है" । एक है आप एक पुस्तकालय के रूप में picocli उपयोग करने के लिए, Maven भंडार में पसंद करते हैं
JAR फ़ाइल संकलित .class फ़ाइलें (picocli एक जावा फ़ाइल का प्रतिनिधित्व करता है, लेकिन कई उप-वर्गों और एनोटेशन शामिल सेट के साथ रों)।
पिकोली की सिंगल-फाइल प्रकृति का अंदाजा लगाने का सबसे आसान तरीका है कि आप खुद ही फाइल देख लें। CommandLine.java का सोर्स कोड
Picocli डाउनलोड
पेज पर उपलब्ध है।
कमांडलाइन क्लास को निष्पादित करते समय और इसके आंतरिक एनोटेशन में से एक और इसके आंतरिक कक्षाओं में से किसी एक को निष्पादित करते समय निम्नलिखित दो स्क्रीनशॉट्स
javap से आउटपुट दिखाते हैं।


भले ही हम CommandLine.java को अपनी कक्षा / JAR फ़ाइल में संकलित कर रहे हों या मावेन से पहले से निर्मित JAR का उपयोग कर रहे हों, Picocli का उपयोग करने वाले एप्लिकेशन का स्रोत कोड स्पष्ट रूप से समान होगा। पिकोली का उपयोग करते हुए तर्कों को पार्स करने में "दृढ़ संकल्प" चरण उस उदाहरण के क्षेत्रों की व्याख्या करके पूरा किया जाता है जो कमांड लाइन मापदंडों से जुड़े मूल्यों को संग्रहीत करेगा। यह नीचे दिए गए कोड स्निपेट में दिखाया गया है।
Picocli "परिभाषा" चरण @Command( name="Main", description="Demonstrating picocli", headerHeading="Demonstration Usage:%n%n") public class Main { @Option(names={"-v", "--verbose"}, description="Verbose output?") private boolean verbose; @Option(names={"-f", "--file"}, description="Path and name of file", required=true) private String fileName; @Option(names={"-h", "--help"}, description="Display help/usage.", help=true) boolean help;
उपरोक्त कोड उदाहरण दर्शाता है कि पिकोली आपको कई ध्वज नामों को निर्दिष्ट करने की अनुमति देता है (मेरे उदाहरण में, एक हाइफ़न के साथ एकल वर्ण नाम और दो हाइफ़न के साथ बहु-चरित्र नाम)। इस उदाहरण से यह भी पता चलता है कि आवश्यक = सही को आवश्यक मापदंडों के लिए सेट किया जा सकता है, और
सहायक विकल्प के लिए निर्दिष्ट किया जा सकता है =
सहायक विकल्प जैसे कि मुद्रण उपयोग विवरण और आवश्यक मापदंडों की अनुपस्थिति से संबंधित त्रुटियों को समाप्त करना। ध्यान दें कि Picocli 0.9.8 अधिक विशिष्ट सहायक संदेश प्रकार
संस्करणहेल्प और
यूसेजहेल्प के लिए अतिरिक्त समर्थन जोड़ता है।
पिकोली में "पार्सिंग" चरण कमांडलाइन.पॉपुलेटकोमांड
(टी, स्ट्रिंग ...) में किया जाता है , जहां टी पिकोली-एनोटेट फ़ील्ड के साथ वर्ग का एक उदाहरण है, और शेष लाइनें वे तर्क हैं जिनका विश्लेषण करने की आवश्यकता है। यह निम्नलिखित कोड स्निपेट में दिखाया गया है।
पिकोकली पार्सिंग चरण final Main main = CommandLine.populateCommand(new Main(), arguments);
पिकोली में "मतदान" चरण में उदाहरण के पिकोली-एनोटेट क्षेत्रों तक पहुंचने में शामिल हैं जो कमांड "पार्सिंग" चरण में कमांडलाइन.पोपुलेटकोमांड (टी, स्ट्रिंग ...) पद्धति से पारित किए गए थे। इस तरह के "सर्वेक्षण" का एक सरल उदाहरण निम्नलिखित सूची में दिखाया गया है।
पिकोली सर्वेक्षण चरण out.println( "The provided file path and name is " + main.fileName + " and verbosity is set to " + main.verbose);
जब -h या --help कमांड लाइन पर निर्दिष्ट किया जाता है तो उपयोगकर्ता को सहायक संदेश या उपयोग की जानकारी दिखाना "पोलिंग" एक Picocli-annotated फ़ील्ड की तरह सरल होता है जिसके लिए यह बूलियन मान निर्धारित करने के लिए मदद = सही निर्दिष्ट करने के लिए निर्दिष्ट किया गया था या नहीं, और यदि स्थापित किया गया है, तो अधिभारित कमांडलाइन.युज विधियों में से एक को कॉल करें। मुझे इस विधि के एक स्थिर संस्करण का उपयोग करना था, जैसा कि निम्नलिखित सूची में दिखाया गया है।
पिकोली में समर्थन संदेश / उपयोग की जानकारी if (main.help) { CommandLine.usage(main, out, CommandLine.Help.Ansi.AUTO); }
निम्नलिखित कुछ स्क्रीनशॉट एक सरल एप्लिकेशन को प्रदर्शित करते हैं जो पिकोक्ली का उपयोग करके लिखा गया है। पहला स्क्रीनशॉट त्रुटि संदेश और स्टैक ट्रेस दिखाता है यदि आवश्यक ध्वज गायब है। दूसरा स्क्रीनशॉट दिखाता है कि एनोटेशन में निर्दिष्ट लंबे और छोटे नामों का उपयोग कैसे किया जाता है। तीसरी छवि कार्रवाई में सहायक संदेश प्रदर्शित करने का कार्य दिखाती है।



Picocli की अतिरिक्त विशेषताओं में से एक, जो कई अन्य जावा कमांड लाइन तर्क पार्सिंग पुस्तकालयों में उपलब्ध नहीं है,
रंग वाक्य विन्यास के लिए समर्थन है। इस पोस्ट की पहली सूची में @ के साथ एनोटेशन में परिभाषित लाइनें थीं | @ वाक्य रचना। ऊपर दिए गए स्क्रीनशॉट में, जो सहायक संदेशों के उपयोग को प्रदर्शित करता है, इन वर्णों को विशेष प्रसंस्करण के बिना, प्रसारित किया गया था। हालांकि, अगर मैं साइगविन में इस नमूना कोड को चलाता हूं, तो मैं देखूंगा कि ये संकेत क्या करते हैं।

उपरोक्त स्क्रीनशॉट में, हम देखते हैं कि पिकाकोली ने स्वचालित रूप से सहायक संदेश विकल्पों में रंग सिंटैक्स (पीला और सफेद) लागू किया और सहायक संदेशों के विवरण के साथ उन क्षेत्रों में बोल्ड और रेखांकित बोल्ड सिंटैक्स भी लागू किया जहां @ | सिंटैक्स लागू किया गया था। | @।
जावा में कमांड-लाइन तर्कों को पार्स करने में मदद करने के लिए एक रूपरेखा या पुस्तकालय का चयन करते समय विचार करने के लिए अतिरिक्त पिकोली विशेषताएं हैं।
- पिकोली एक ओपन सोर्स प्रोजेक्ट है जो अपाचे 2.0 के साथ लाइसेंस प्राप्त है।
- पिकोली को थर्ड-पार्टी लाइब्रेरी या फ्रेमवर्क डाउनलोड करने की आवश्यकता नहीं है।
- सभी Picocli स्रोत कोड एक .java फ़ाइल में समाहित है, और इस कोड को कॉपी करके अपने कॉन्फ़िगरेशन प्रबंधन प्रणाली में चिपकाया जा सकता है और शेष एप्लिकेशन कोड के साथ संकलित किया जाता है, जिसका अर्थ है कि Picocli JAR फ़ाइल भी आवश्यक नहीं है।
- CommandLine.java स्रोत फ़ाइल (Picocli 0.9.7) सिर्फ 3,700 लाइनों (रिक्त स्थान और टिप्पणियों सहित) पर है और इसका वजन लगभग 200 KB है। Picocli-0.9.7.jar फ़ाइल का वजन लगभग 83 KB है।
- पिकोली समय पर और अक्सर अद्यतन होती है। संस्करण 0.9.8 कल जारी किया गया था (जब मैंने इस पोस्ट को लिखा था)।
- पिकोली के पास बहुत विस्तृत प्रलेखन है और कई मायनों में कुछ अन्य जावा कमांड-लाइन प्रसंस्करण पुस्तकालयों के लिए प्रलेखन की तुलना में अधिक अद्यतित है।
- Picocli के रंग वाक्यविन्यास समर्थन का उपयोग करना आसान है, और प्लेटफॉर्म भर में रंग वाक्यविन्यास का उपयोग करने में सहायता समर्थित प्लेटफ़ॉर्म अनुभाग में प्रलेखित है।
- उदाहरण के स्तर के क्षेत्रों के लिए पिकोली एनोटेशन का उपयोग कुछ अन्य कमांड लाइन प्रोसेसिंग लाइब्रेरी में एनोटेशन का उपयोग करने के समान है और इसके समान लाभ हैं।
- पिकाकोली की मुख्य विशेषताएं सीखने में बहुत सुविधाजनक और आसान हैं, लेकिन पिकोली, पिकोली का उपयोग करके कमांड लाइन प्रसंस्करण के कई पहलुओं को कॉन्फ़िगर करने की क्षमता का भी समर्थन करता है।
इस पोस्ट में लिस्टिंग पूरी तरह से
GitHub पर उपलब्ध
है ।
जावा कमांड लाइन के तर्कों को पार्स करने के लिए पिकोली एक समर्थित और अद्यतन पुस्तकालय है। इसमें जावा में लिखी गई कुछ अन्य उपलब्ध कमांड लाइन प्रोसेसिंग लाइब्रेरी में से कई नई सुविधाएँ और दृष्टिकोण शामिल हैं, लेकिन इसमें अलग-अलग विशेषताओं के एक जोड़े को जोड़ा गया है (जैसे कि रंग सिंटैक्स और एक एकल जावा स्रोत फ़ाइल में पूरी लाइब्रेरी को अलग कर दिया गया है)। Picocli अपने आप में उपयोग में आसान और आकर्षक है, लेकिन सबसे अधिक संभावना है कि यह एक अलग डेवलपर के लिए अन्य पुस्तकालयों के बीच में खड़ा होगा यदि यह डेवलपर रंग सिंटैक्स का समर्थन करना चाहता है या अतिरिक्त JAR फ़ाइलों के बिना किसी डेवलपर की परियोजना में स्रोत कोड फ़ाइल जोड़ने की क्षमता रखता है या उन्हें संकलित करता है। क्लास की फाइलें।
अंत
हमेशा की तरह, हम आपके प्रश्नों और टिप्पणियों की प्रतीक्षा कर रहे हैं।