फ्रैंकली किसी भी तरह से जेवीएम के भीतर से सीधे पाइथन चलाने के अधिकांश तरीके काम नहीं करते हैं। वे या तो काफी अनुकूल नहीं हैं (आपकी तीसरी पार्टी लाइब्रेरी की नई रिलीज पाइथन 2.6 फीचर्स का उपयोग कर सकती है और ज्योथन 2.5 के साथ काम नहीं करेगी) या हैकी (यह क्रिप्टिक जेवीएम स्टैकट्रैस के साथ टूट जाएगी जो वास्तव में समाधान की ओर अग्रसर नहीं है)।
दोनों को एकीकृत करने का मेरा पसंदीदा तरीका RPC का उपयोग करेगा। XML RPC यहां खराब विकल्प नहीं है, यदि आपके पास मध्यम मात्रा में डेटा है। यह बहुत अच्छी तरह से समर्थित है — पायथन इसकी मानक पुस्तकालय में है। जावा पुस्तकालयों को ढूंढना भी आसान है। अब आपके सेटअप के आधार पर जावा या पायथन भाग एक अन्य भाषा से कनेक्शन स्वीकार करने वाला सर्वर होगा।
आरपीसी करने के वैकल्पिक तरीके पर विचार करने के लिए कम लोकप्रिय लेकिन Google प्रोटोबफर्स है, जिसमें nice rpc के लिए 2/3 समर्थन है। आपको बस अपनी परिवहन परत प्रदान करने की आवश्यकता है। इतना काम नहीं है और लेखन की सुविधा उचित है।
एक और विकल्प है कि पाइथन कार्यक्षमता के उन टुकड़ों के चारों ओर एक सी रैपर लिखना है जिसे आपको जावा के सामने आने और JVM देशी प्लगइन के माध्यम से इसका उपयोग करने की आवश्यकता है। आप SWIG SWIG के साथ जाकर दर्द को कम कर सकते हैं।
अनिवार्य रूप से अपने मामले में ऐसा काम करता है:
- एक बड़ा घूँट इंटरफ़ेस बनाएँ सभी विधि के लिए जावा से सेल्सियस तक ++ कहता है।
- सी/सी ++ कोड बनाएं जो आपकी कॉल प्राप्त करेगा और आंतरिक रूप से सही पैराम के साथ पाइथन दुभाषिया को कॉल करेगा।
- आपको पाइथन से प्राप्त प्रतिक्रिया को बदलें और इसे अपने जावा कोड पर वापस स्विग के माध्यम से भेजें।
यह समाधान काफी जटिल है, ज्यादातर मामलों में एक ओवरकिल है। फिर भी यदि आप (किसी कारण से) आरपीसी बर्दाश्त नहीं कर सकते हैं तो यह करने योग्य है। आरपीसी अभी भी मेरी पसंदीदा पसंद होगी, हालांकि।
यदि पाइथन पुस्तकालय शुद्ध पायथन में लिखा गया है, तो ज्योथन का उपयोग करने के बारे में क्या? – fabrizioM