हम जावा अनुप्रयोग को मानते हैं, एक पूर्णांक कमांड लाइन तर्क स्वीकार करते हैं, bubu
कहें।जावा: सिस्टम पैरामीटर बनाम "नियमित" कमांड लाइन विकल्प
--bubu 5
: -एक मान लिया जाये कि एक सभ्य कमांड लाइन पार्सर का उपयोग करता है (और मुझे क्या करना http://pholser.github.com/jopt-simple/) प्लस मन में डी जावा स्विच रखते हुए, इन विशिष्ट तरीके से कुछ इस कमांड लाइन पैरामीटर पारित करने के लिए कर रहे हैं (या
--bubu=5
या--bubu5
)-Dbubu=5
कहाँ पहले एक कार्यक्रम तर्क है और कुछ कमांड लाइन पार्सर का उपयोग कर आवेदन के द्वारा नियंत्रित किया जाना चाहिए, क दूसरा दूसरा वीएम तर्क है और इसे जावा द्वारा पहले ही पार्स किया गया है, इसे Integer.getInteger("bubu")
मैं थोड़ी परेशान हूं। मुझे क्या उपयोग करना चाहिए? प्रणाली संपत्ति सुविधा का उपयोग करना:
- कुछ भी नहीं
- किसी भी कमांड लाइन पार्सर पुस्तकालय पर निर्भर नहीं करता
- सुविधाजनक प्रदान करता है (हालांकि अप्रत्याशित) एपीआई मूल्यों
जहां तक प्राप्त करने के लिए खर्च करने लगता है जैसा कि मैं देख सकता हूं, केवल विपक्ष यह है कि सभी कमांड लाइन विकल्पों को -D
ध्वज का उपयोग करना होगा।
कृपया, सलाह।
धन्यवाद।
संपादित
एक अन्य प्रणाली मापदंडों के लिए पेशेवरों - "वे प्रयोग करने योग्य हो तब भी जब आवेदन एक स्टैंड-अलोन अनुप्रयोग एक मुख्य से शुरू नहीं है, लेकिन यह भी है कि एप्लिकेशन को एक webapp या एक इकाई है परीक्षा।" - धन्यवाद https://stackoverflow.com/users/571407/jb-nizet
EDIT2
मुझे यहाँ और अधिक ध्यान केंद्रित होने दो। क्या सिस्टम पैरामीटर का उपयोग न करने के लिए हमेशा कोई गंभीर कारण है (एस्थेटिक्स के अलावा)?
EDIT3
ठीक है, मैं मैं इसे अब मिल लगता है। यदि मेरा कोड किसी वेब एप्लिकेशन द्वारा लोड होने की संभावना है, तो संभावित नाम टकराव का एक मुद्दा है, क्योंकि उसी वेब कंटेनर द्वारा होस्ट किए गए अन्य वेब एप्लिकेशन मेरे कोड के साथ सिस्टम प्रॉपर्टी स्पेस साझा करते हैं।
इसलिए, मुझे पहले से ही अपने सिस्टम गुणों को समझदार और असंबद्ध होना होगा। तो, अब bubu
नहीं है, यह अब com.shunra.myapp.bubu
है। अर्थ के बजाय एक सरल
-Dbubu=5
मैं
-Dcom.shunra.myapp.bubu=5
जो एक सरल कमांड लाइन आवेदन के लिए कम आकर्षक हो जाता है है।
एक अन्य कारण Mark Peters द्वारा दिया गया है, जो मेरे लिए बहुत अच्छा है।
ठीक है, आपने इसे समझाया। सिस्टम गुणों का एक अन्य लाभ यह है कि जब भी एप्लिकेशन मुख्य से शुरू होने वाला स्टैंड-अलोन ऐप नहीं होता है, तब भी वे उपयोग योग्य होते हैं, लेकिन जब ऐप एक वेबपैप या यूनिट टेस्ट होता है। यदि ऐप एक कमांड लाइन उपयोगिता है, तो आप सम्मेलनों के अनुरूप होना चाहेंगे, और नियमित विकल्प (जैसे -help, आदि) प्रदान करना चाहेंगे। अन्यथा, सिस्टम गुण अधिक verbose हैं, लेकिन सरल। –
तो, आपकी सलाह हमेशा-डी ध्वज का उपयोग करती है? – mark
नहीं। मैंने अपनी टिप्पणी संपादित की। यदि यह एक कमांड लाइन उपकरण है जहां उपयोगकर्ता को प्रत्येक बार प्रोग्राम को आमंत्रित करना होता है, तो मानक विकल्प का उपयोग करना अधिक उपयोगकर्ता के अनुकूल है। यदि विकल्प केवल कॉन्फ़िगरेशन विकल्प हैं जिन्हें बैच फ़ाइल में एक बार सेट किया जाना चाहिए, तो सिस्टम गुण आसान होते हैं। –