क्या शिपिंग क्लोजर डेस्कटॉप ऐप यथार्थवादी है?


25

मैं वर्तमान में एक डेस्कटॉप जावा एप्लिकेशन शिपिंग कर रहा हूं। यह एक सादे पुराने जावा 5 जावा / स्विंग ऐप है और अब तक सब कुछ अच्छी तरह से काम किया है। जावा 5 को लक्षित किया गया था क्योंकि कुछ उपयोगकर्ता ओएस एक्स संस्करण / कंप्यूटर पर थे जिनके पास कभी भी जावा 6 नहीं होगा (हम जल्द ही इस सीमा को उठा सकते हैं और एक नए जावा में स्विच कर सकते हैं और बस जावा 5 से अटके मेरे उपयोगकर्ताओं को छोड़ सकते हैं)।

मैं जल्दी से क्लोजर के साथ गति करने के लिए उठ रहा हूं, लेकिन मैंने वास्तव में क्लोजर-टू-जावा और जावा-टू-क्लोजर के बहुत सारे काम नहीं किए हैं और मैं सोच रहा था कि क्या यह जावा एप्लिकेशन के बजाय क्लोजर डेस्कटॉप एप्लिकेशन को जहाज करने के लिए यथार्थवादी था ?

मैं जिस एप्लिकेशन को शिपिंग कर रहा हूं, वह वर्तमान में सभी एमबी के साथ लगभग 12 एमबी का है। क्लोजर को जोड़ने से यह बहुत अधिक समस्या नहीं है।

मेरी योजना क्लोजर कॉल जावा एपीआई की होगी: मेरा आवेदन पहले से ही कई स्वतंत्र जार में विभाजित है।

अगर मैं समझता हूं कि जावा से क्लोजर को कॉल करना क्लोजर से जावा कोड को कॉल करने की तुलना में कठिन है, यही कारण है कि मैं मूल रूप से सभी यूआई (यूआई का हिस्सा), स्विंग घटकों और स्व-निर्मित बफ़रमैड्स को फिर से लिखने के कारण वृद्धि के कारण फिर से लिखना होगा। रेटिना के प्रदर्शन), और क्लोजर से सभी 'वायरिंग' करते हैं।

तो यह है कि मैं जिस समस्या का सामना कर रहा हूं: क्या यह क्लोजर डेस्कटॉप ऐप को शिप करने के लिए यथार्थवादी है? (यह निश्चित रूप से बहुत व्यापक नहीं लगता है, लेकिन फिर सादे जावा डेस्कटॉप ऐप्स को आम तौर पर साझा नहीं किया जाता है और मैं इसे वैसे भी कर रहा हूं)

तकनीकी रूप से, क्या करने की आवश्यकता होगी? (एक जावा ऐप को शिपिंग करने की तुलना में)


1
सीसॉ पर एक नज़र डालें , यह जेवीएम-आधारित जीयूआई ऐप (स्विंग-आधारित) के निर्माण के लिए एक क्लोजर डीएसएल है।
माइकल क्लिसिन

सीसॉ ऐसा लगता है कि यह जीयूआई बनाने और वायरिंग करने के लिए उपयोगी साबित हो सकता है, लेकिन मेरे मौजूदा जावा एपीआई / पुस्तकालयों के एकीकरण के बारे में क्या? क्या यह सब दर्द रहित होना चाहिए? (मैं वैसे भी यहां रिपोर्ट करूंगा लेकिन क्लोजर में जाने की कोशिश करने से पहले मैं कुछ और प्रतिक्रिया देना चाहूंगा)
सेड्रिक मार्टिन

ClojureScript + (NW.js या एटम इलेक्ट्रॉन) काम करेगा।
मारियो टी। लैंजा

जवाबों:


28

हां, यह पूरी तरह से यथार्थवादी है - बहुत से लोग अभी तक ऐसा नहीं कर रहे हैं, लेकिन मुझे लगता है कि यह केवल समय की बात है (क्लोजर सब के बाद बहुत नया है!)

मैंने व्यक्तिगत रूप से क्लोजर में एक ओपन-सोर्स गेम लिखा है जो एक स्विंग एप्लिकेशन (https://github.com/mikera/ironclad) के रूप में चलता है, इसलिए इसे साझा करने के लिए कुछ अनुभव हैं जो उपयोगी हो सकते हैं।

  • औसतन आप शायद जावा एपीआई में क्लोजर कॉल करना चाहते हैं। यह ज्यादातर सामान्य ज्ञान है - जावा में सभी महान पुस्तकालय हैं, क्लोजर एक साथ चमकती हुई चीजों के लिए अधिक उत्पादक भाषा है।
  • आप जावा-आधारित "लोडर" को एक main(...)विधि के साथ लिखना चाह सकते हैं जो कोड के क्लोजर भाग को लॉन्च करता है। अन्य बातों के अलावा, इसका मतलब है कि आपको एओएल को अपना क्लोजर कोड संकलित नहीं करना पड़ेगा। उदाहरण कोड यहाँ: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.java
  • आप शायद अतिरिक्त स्क्रीन समय लोड करने / क्लोजर कोड को संकलित करने की अनुमति देने के लिए अपने आवेदन को प्रारंभ करते समय स्प्लैश स्क्रीन को फेंकने जैसी चीजें करना चाहते हैं। यह शायद एक विशिष्ट ऐप स्टार्टअप समय में 1-2 सेकंड जोड़ता है, जो पर्याप्त है कि आपका उपयोगकर्ता संभवतः कुछ प्रतिक्रिया की सराहना करेगा। यदि आप चतुर हैं, तो आप वास्तव में पृष्ठभूमि में अन्य सामान को लोड करते समय पूरे यूआई को फेंक सकते हैं, लेकिन इसके लिए कुछ देखभाल की आवश्यकता होती है और हो सकता है कि आप अपनी संगामिति कुंग-फू का परीक्षण करें।
  • आप जावा और क्लोझर को अपेक्षाकृत स्वतंत्र रूप से मिश्रित कर सकते हैं क्योंकि वे पीछे और आगे की ओर काफी पारदर्शी तरीके से कॉल कर सकते हैं। एकमात्र जटिलता यदि आप चाहते हैं कि जावा को क्लीजुर कहा जाए, तो जावा उस संकलन / इंटरफ़ेस को जानना पसंद करता है जिसे वह संकलन समय पर बुला रहा है। एक अच्छा विकल्प Clojure कोड को गतिशील है के माध्यम से एक aleady संकलित जावा इंटरफ़ेस को लागू करने के लिए है वस्तु के बारे में जैसे सोचना
  • मैंने एक्लिप्स / मावेन का उपयोग करके क्लोजर और जावा कोड दोनों वाले एकल जार में ऐप को विकसित करना और पैकेज करना बहुत आसान पाया है। क्लजुरे कोड को केवल src/main/resourcesरनटाइम में लोड / संकलित किया जा सकता है।
  • आप की तरह Clojure जीयूआई रैपर का उपयोग कर सकते झूला यदि आप चाहें। यह बहुत अच्छा लग रहा है। मैंने इसका उपयोग करने के खिलाफ फैसला किया, मुख्य रूप से क्योंकि मैं सीधे स्विंग के साथ कुछ काल्पनिक चीजें करना चाहता था और यह महसूस नहीं किया कि मुझे अमूर्त की एक अतिरिक्त परत की आवश्यकता है।

शानदार जवाब ... +1। आपके सोर्सकोड के लिंक के लिए बहुत दिलचस्प और धन्यवाद: यह निश्चित रूप से मदद करेगा। अब मुझे अपने विकास का वातावरण "स्थिर" प्राप्त करने की आवश्यकता है (बस नवीनतम लेनिंन + क्लोजर-मोड + nrepl.el की कोशिश की और यह काम नहीं कर रहा है ... अभी तक;)
सेड्रिक मार्टिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.