क्या कोई मैक कोको (सैंडबॉक्स) ऐप में जावा रनटाइम को एम्बेड करने का तरीका जानता है ताकि ऐप जावा को अलग से इंस्टॉल करने के बिना .jar फ़ाइल चला सके?एक सैंडबॉक्स वाले कोको मैक ऐप में जावा रनटाइम एम्बेड करना
हमारे पास एक कोको एप्लिकेशन है जिसे हम मैक ऐप स्टोर के साथ-साथ अपनी साइट पर भी बेचते हैं जो एक विशिष्ट कार्य के लिए जावा का उपयोग कर सकते हैं। यह एक लेखन ऐप है, और क्योंकि .doc, .docx और .odt के लिए मानक NSText निर्यातक बहुत सीमित हैं (शीर्षलेख, पाद लेख, छवियों आदि का समर्थन नहीं करते), हम आरटीएफ को लिखते हैं और फिर जावा-आधारित कनवर्टर्स का उपयोग करते हैं (Aspose से। कॉम) चयनित निर्यात प्रारूप के आधार पर आरटीएफ को .doc, .docx या .odt में परिवर्तित करने के लिए।
मैं एनएसटीस्क का उपयोग करके/usr/bin/java पर कॉल करने के लिए ऐसा करता हूं और एक बंडल .jar फ़ाइल चलाता हूं जो रूपांतरण दिनचर्या चलाता है। यह सब खूबसूरती से काम करता है - जब तक उपयोगकर्ता के मैक पर जावा स्थापित किया जाता है। यदि यह इंस्टॉल नहीं है, तो हमारा ऐप उपयोगकर्ता से पूछता है कि क्या वह बढ़ाए गए कन्वर्टर्स से लाभ उठाने के लिए जावा इंस्टॉल करना चाहते हैं, या इसके बजाय एनएसटीएक्स्ट हानिकारक कनवर्टर्स पर वापस आना चाहते हैं। यदि उपयोगकर्ता जावा स्थापित करना चुनता है, तो हम ओएस एक्स के जावा इंस्टॉलर को आमंत्रित करने के लिए java_home --request को कॉल करते हैं।
हालांकि, अब ऐप्पल जावा के लिए सीधा समर्थन समाप्त कर चुका है (या समाप्त हो रहा है), यह दृष्टिकोण समस्याग्रस्त है। हमारी आखिरी मैक ऐप स्टोर समीक्षा के दौरान, हमें बताया गया था कि अगर हमें जावा इंस्टॉल करना है तो हमें जल्द ही उपयोगकर्ता से पूछना बंद करना होगा। मैंने पढ़ा है कि एप्पल के अनुशंसित मार्ग आगे बढ़ रहे हैं जावा रनटाइम पर्यावरण को कोको अनुप्रयोगों में एम्बेड करना है जिन्हें जावा चलाने की आवश्यकता है। (उदाहरण के लिए: http://lists.apple.com/archives/java-dev/2011/Jul/msg00038.html)
पिछले कुछ दिनों से अधिक, इसलिए मैं शोध किया गया है कि कैसे मैं अपने अनुप्रयोग में एक JRE एम्बेड करने के बारे में जा सकते हैं, लेकिन मैं कैसे इतना कहीं भी करने के लिए पर कोई निर्देश नहीं मिला है - कुछ भी नहीं है कि मैं कम से कम समझता हूं। किसी ने एक ऐसे ही सवाल यहाँ साल पहले के एक जोड़े से पूछा:
Bundling a private JRE on Mac OS X
हालांकि, वहाँ जवाब, और अन्य साइटों पर मैंने पाया, सब के बारे में एक मैक आवेदन के रूप में एक जावा अनुप्रयोग बांध दिया, के बारे में नहीं कर रहे हैं एक मौजूदा कोको आवेदन के साथ एक जेआरई सहित। (हालांकि मैं स्वीकार करता हूं कि जावा के साथ अनुभव की कमी का मतलब यह हो सकता है कि मुझे समझ में नहीं आता कि मेरे उद्देश्यों के लिए निर्देशों को कैसे परिवर्तित किया जाए - मुझे एक्सकोड से बाहर ले जाएं और मैं अपने आराम क्षेत्र से बाहर हूं।) इसी तरह: https://wikis.oracle.com/display/OpenJDK/How+to+embed+a+.jre+bundle+in+your+Mac+app
ऐसा लगता है कि कुछ अनुप्रयोगों ने यह किया है (उदाहरण के लिए साइबरडक), लेकिन किसी ने अभी तक प्रक्रिया को दस्तावेज नहीं किया है। मैंने जो पढ़ा है, उससे मैं सोचता हूं मुझे या तो ओरेकल के जेडीके या ओपनजेडीके से जावा वर्चुअल मशीन को पकड़ने की आवश्यकता है और इसमें शामिल है कि मेरे कोको ऐप में और जावा से उस पर कॉल करें, लेकिन अगर मैंने ऐसा किया, तो जावा एक्जिक्यूटिव जेवीएम की प्रतिलिपि सैंडबॉक्स नहीं की जाएगी, इसलिए मेरा ऐप एमएएस समीक्षा प्रक्रिया के माध्यम से नहीं मिलेगा। तो शायद मुझे किसी भी तरह से जेडीके और सैंडबॉक्स की प्रतिलिपि बनाने की ज़रूरत है, संभवतः मेरे बड़े एक्सकोड प्रोजेक्ट के हिस्से के रूप में? मुझे यह भी यकीन नहीं है कि कहां से शुरू करना है; मैं अनुमान लगा रहा हूं कि यह अभी भी शुरुआती दिनों में है और कई मैक डेवलपर्स को अभी तक ऐसा करना नहीं है।
क्या किसी को कोको एप्लिकेशन में जेआरई एम्बेड करने का कोई अनुभव है, इस तरह से ऐप एनएसटीस्क का उपयोग करके इसे कॉल कर सकता है? और इस तरह से जेआरई पूरी तरह से सैंडबॉक्स किया गया है और इस प्रकार मैक ऐप स्टोर द्वारा स्वीकार्य है? या, क्या किसी ने सफलतापूर्वक एक सैंडबॉक्स वाले कोको ऐप बनाया है जो एक अलग जावा इंस्टॉलेशन की आवश्यकता के बिना .jar फ़ाइल चलाता है? यदि हां, तो क्या आप यह साझा करने के इच्छुक होंगे कि आपने यह कैसे किया?
(मैं एप्पल इस पर मदद के लिए पूछ के साथ एक डेवलपर तकनीकी सहायता घटना बाहर ले, लेकिन बताया गया था कि वे मदद नहीं कर सब पर यह देखते हुए कि जावा अब एक तीसरे पक्ष के विकास के वातावरण माना जाता है।)
वेब पृष्ठों पर किसी भी सुझाव या पॉइंटर्स के लिए अग्रिम धन्यवाद, मुझे याद आ सकता है।
यह चाहते _looks_ तुम्हारा का एक विशिष्ट मामला है अधिक सामान्य 'सैंडबॉक्स' समस्या के भीतर एक सहायक निष्पादन योग्य का उपयोग कैसे करें। क्या यह जेआरई के लिए एंटाइटेलमेंट निर्दिष्ट करने और http://www.codeotaku.com/journal/2012-10/code-igning-auxiliary-executables/index में वर्णित कोड-हस्ताक्षर करने का विषय नहीं होगा? –
बहुत धन्यवाद! मुझे लगता है कि लिंक सिर्फ वही है जो मुझे चाहिए था। (और यह एक समस्या को संबोधित करता है जिसे मैं किसी अन्य निष्पादन योग्य के साथ भी सामना कर रहा था।) तो, मेरा दृष्टिकोण है: ओरेकल की साइट से जेआरई को मेरे ऐप के साथ बंडल करें; 10.6 और उससे नीचे, जावा के ओएस एक्स के अंतर्निर्मित संस्करण पर कॉल करें (यह देखते हुए कि यह डिफ़ॉल्ट रूप से 10.6- पर स्थापित किया गया था, और ओरेकल के जेआरई 7 केवल 10.7+ पर काम करता है); 10.7+ पर, ऐप में बनाए गए जेआरई पर कॉल करें, और कोडोटाकू लिंक में विधि का उपयोग कर जावा एक्जिक्यूटिव सैंडबॉक्स को कॉल करें। फिंगर्स ने इसे पारित किया है। एक बार फिर धन्यवाद! – kayembi