क्या मैं जावा को Node.js से जेएनआई के माध्यम से कॉल कर सकता हूं? क्या कोई उदाहरण हैं?क्या मैं जेएनआई के माध्यम से जावा को नोड.जेएस से कॉल कर सकता हूं और कैसे?
उत्तर
यह मुश्किल लग रहा है। नोड.जेएस Google क्रोम जावास्क्रिप्ट इंजन V8 पर चलता है। आपको क्या करना होगा एक वी 8 सी ++ बाध्यकारी बनाना (v8 c++ Crash Course एक उदाहरण दिखाता है) जो एक जेवीएम शुरू करता है और सभी जेएनआई हैंडलिंग करता है।
मुझे लगता है कि आप JavaServer और Node.js को नेटवर्क के माध्यम से संवाद करने से बेहतर हो सकते हैं (किसी ने Java/Node.js संदेश आधारित संचार के लिए example for using RabbitMQ लिखा)। यहां, जेएसओएन एक महान डेटा एक्सचेंज प्रारूप होगा (यदि आप भरोसा करते हैं कि आपका जावा सर्वर उचित JSON उत्पन्न करता है तो आप इसे नोड में केवल eval() कर सकते हैं)।
जानना दिलचस्प है। लेकिन मुझे लगता है कि नेटवर्क का उपयोग, कम से कम तीव्रता का आदेश होना चाहिए जो जेएनआई। क्या आपको नहीं लगता? –
यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। जेएनआई दृष्टिकोण बहुत काम करेगा और डीबग करने के लिए नरक होगा (अकेले जेएनआई अकेले दर्द है और यह वी 8 -> सी ++ -> जेएनआई -> जावा) के साथ बहुत खराब होगा। – Daff
आपकी क्यूई परत के रूप में रेडिस का उपयोग करने के बारे में, एक सरल समाधान। –
मुझे नोड.जेएस के सभी विवरणों से अवगत नहीं है, लेकिन मुझे लगता है कि जेएनआई का आपका उल्लेख वास्तव में जावा मूल इंटरफ़ेस है। कोई जावा से जेएनआई का उपयोग कर सकता है, इसलिए अगर आप जावा में पहले से नहीं हैं तो जावा को जेएनआई से जावा तक पहुंचने का एहसास नहीं है।
ऐसा लगता है कि यह गलत दृष्टिकोण है, और आप उनके एकीकरण अध्याय के लिए Node.js doco खोज करने के लिए की जरूरत है ...
असल में, जेएनआई जावा से सिर्फ मूल कॉलिंग नहीं, बल्कि जेवीएम आमंत्रण को भी शामिल करता है। –
@ सॉफ़्टवेयर भिक्षु, आपका कथन काफी सही है, लेकिन क्यू के सीटीएक्स में, नोड जेएस को सभी डब्ल्यू/अपने सभी जावाविमों पर जेनी का उपयोग करके कल्पना करना मुश्किल है। –
मुझे आश्चर्य है अगर यह बिल्कुल संभव है। लेकिन अगर यह संभव है तो भी मुझे कल्पना है कि इसे लागू करना मुश्किल है और मुझे यकीन है कि किसी ने अभी तक ऐसा नहीं किया है।
प्रक्रियाओं (जावा और नोड.जेएस) के बीच संवाद करने के लिए named pipe का उपयोग करने के बारे में कैसे?
संचार बच्चे_प्रोसेस द्वारा किया जा सकता है।
एक नई प्रक्रिया को जन्म देती है और मुख्य श्रेणी निष्पादित करती है। यह मुख्य वर्ग कंसोल पर आउटपुट लौट रहा है। इसलिए डेटा नोड के stdout data
ईवेंट के लिए उपलब्ध है।
var cmd = require('child_process').spawn('java', ['Main']);
cmd.stdout.on('data', function (data) {
console.log('stdout: ' + data); // This will print string returned by Main class.
});
आपको node-java एनपीएम मॉड्यूल का प्रयास करना चाहिए जो जेएनआई पर एक अच्छी तरह लिखित रैपर है।
नोड-जेव (अभी तक) व्यापक गोद लेने के लिए प्रकट नहीं होता है, लेकिन इसके साथ खेल रहा है, मैं इस बात से प्रभावित हूं कि यह कितना सरल और मजबूत रहा है।
यह रूप में सरल है:
var list = java.newInstanceSync("java.util.ArrayList");
list.addSync("item1");
list.addSync("item2");
console.log(list.getSync(1)); // prints "item2"
तुम सिर्फ अपने एम्बेडेड JVM के साथ कुछ के बारे में क्या कर सकते हैं - वस्तुओं, कॉल विधियों, पहुंच क्षेत्रों, आदि बनाने
वहाँ नोड के बीच एक मामूली प्रतिबाधा बेमेल है और जावा, इसलिए यदि आप जटिल कुछ के साथ बातचीत करने जा रहे हैं, तो मैं जावा में आपकी अधिकांश इंटरैक्शन लिखने और नोड/जावा बाधा में एक सरल इंटरफेस को उजागर करने की सलाह दूंगा। यह सिर्फ इस तरह से आसान डीबगिंग के लिए बनाता है।
--- डेव
पश्चलेख, RealWorldUseCase (टीएम): मैं एक जगह है कि एकाधिक ब्राउज़र ग्राहकों और एक जावा आधारित सेवा के बीच एक बहुत जटिल (और स्पेगेटी कोडित) प्रोटोकॉल था पर काम किया। मैंने एन सिम्युलेटेड ब्राउजर होस्ट करने के लिए jsdom का उपयोग किया है और जावा सेवा कोड के चारों ओर एक रैपर के रूप में node-java का उपयोग किया है। क्लाइंट के लिए जेएस में और सेवा के लिए जावा में परिवहन इंटरफेस को बाहर निकालना मुश्किल था, इसलिए जब भी इनमें से कोई भी चीज संदेश भेजती है, तो मैं इसे कैप्चर करता हूं और इच्छित लक्ष्य के लिए संभाव्य वितरण के लिए इसे कतार में चिपकाता हूं (यानी, मैंने नेटवर्क वर्चुअलाइज्ड किया)।इस तरह, मैं एक जावा सेवा के साथ और उसके माध्यम से बातचीत करने वाले कई ग्राहकों का एक पूर्ण-सिमुलेशन चला सकता हूं, और बिना किसी तार संचार के पूरी प्रक्रिया को एक ही प्रक्रिया में चला सकता हूं। और फिर मैं मजेदार सामान कर सकता हूं जैसे जानबूझकर संदेश वितरण को पुन: व्यवस्थित करना ताकि यह सुनिश्चित किया जा सके कि कोड समय बग के लिए लचीला था। और जब एक बग की खोज की गई, तो मेरे पास संदेश ऑर्डर लॉग किए गए और उन्हें बग को दोबारा बनाने के लिए पुन: पेश किया जा सकता था। ओह, और पूरी चीज स्थापित हुई और लॉगिंग की कुछ हज़ार लाइनों के साथ एक सुंदर जटिल परिदृश्य चलाया और 1 सेकंड प्रति रन के तहत समाप्त हो गया। 2 सप्ताह अच्छी तरह से खर्च किया। मजेदार चीजें।
वास्तविक दुनिया प्रयोग करें प्रकरण # 2: selenium-inproc - एक मॉड्यूल डब्ल्यू/Selenium अभी तक एक स्थानीय होस्ट सेवा को चलाने के लिए बिना SeleniumRC JAR फ़ाइल ब्राउज़र स्वचालन परीक्षण करने के लिए एक नोड इंटरफेस प्रदान गिर्द घूमती है।
यह सही उत्तर होना चाहिए। – Ventura
क्या यह गुरुबी जैसे तीसरे पक्ष के पुस्तकालयों के साथ काम करता है? http://www.gurobi.com/ –
मुझे लगता है कि आप जो खोज रहे हैं वह पुल के रूप में उपयोग करने के लिए एक मूल विस्तार है। हालांकि मैं तुम क्या कह रहे का एक उदाहरण की जरूरत नहीं है, मैं कैसे Node.js
मुझे लगता है कि अनुमोदित जवाब थोड़ा पुराना है का उपयोग करते हुए एक सी ++ विस्तार कॉल करने के लिए एक उदाहरण की क्या ज़रूरत है। यह हो सकता है बाहर कोशिश कर रहा लायक: https://github.com/joeferner/node-java
- 1. तेजी से Math.exp() जेएनआई के माध्यम से?
- 2. मैं जावा से .NET कोड कैसे कॉल कर सकता हूं?
- 3. जेएनआई के माध्यम से एक अलग थ्रेड
- 4. मैं पृष्ठों के माध्यम से कैसे चक्र कर सकता हूं?
- 5. जावा से जेएनआई
- 6. मैं रुडी को नोड.जेएस से कैसे बुला सकता हूं?
- 7. क्या होता है यदि मैं जेएनआई के साथ सी से एकाधिक धागे से जावा फ़ंक्शन को कॉल करता हूं?
- 8. क्या मैं स्थापित प्रिंटर से जुड़े आइकन को नेट के माध्यम से प्राप्त कर सकता हूं?
- 9. मैं जावा स्ट्रिंग के यूनिकोड कोडपॉइंट्स के माध्यम से कैसे पुन: प्रयास कर सकता हूं?
- 10. मैं share_ptr से निजी विनाशक कैसे कॉल कर सकता हूं?
- 11. मैं वीबीए से पायथन प्रोग्राम कैसे कॉल कर सकता हूं?
- 12. मैं जावा के माध्यम से एक jpg छवि कैसे संपादित कर सकता हूं?
- 13. मैं जावा से विज्ञान-सीखने वाले क्लासिफायर को कैसे कॉल कर सकता हूं?
- 14. मैं पायथन से एरलांग कैसे कॉल कर सकता हूं?
- 15. जब मैं प्रतिबिंब के माध्यम से ऑब्जेक्ट बनाता हूं तो मैं जावा में विधियों को ओवरराइड कैसे कर सकता हूं?
- 16. मैं फेसबुक एपीआई के माध्यम से उपयोगकर्ता के पूर्ण न्यूज़फीड को कैसे प्राप्त कर सकता हूं?
- 17. मैं जावा के माध्यम से सिस्टम/हार्डवेयर जानकारी कैसे प्राप्त कर सकता हूं?
- 18. क्या मैं AJAX के माध्यम से किसी बाहरी पृष्ठ से डेटा लोड कर सकता हूं?
- 19. क्या मैं पर्ल को पाइथन के भीतर से कॉल कर सकता हूं?
- 20. एक्सकोड डीबग - क्या मैं डिस्सेप्लर कोड के माध्यम से स्टेपिंग को बाईपास कर सकता हूं
- 21. मैं जावा ऑब्जेक्ट से एचटीएमएल कैसे उत्पन्न कर सकता हूं?
- 22. क्या मैं डेटाबेस के बिना रेल का उपयोग कर सकता हूं और केवल वेब सेवाओं को कॉल कर सकता हूं?
- 23. क्या मैं __meteor_bootstrap__.app के माध्यम से एक और मार्ग हैंडलर माउंट कर सकता हूं?
- 24. मैं जावा से क्लोजर में कैसे संक्रमण कर सकता हूं?
- 25. डब्ल्यूपीएफ: क्या मैं एक शैली के माध्यम से संलग्न संपत्ति को परिभाषित/सेट कर सकता हूं?
- 26. मैं डेटाबेस से जावा क्लास कैसे लोड कर सकता हूं?
- 27. Django और urls.py: मैं एक नामित यूआरएल के माध्यम से HttpResponseRedirect कैसे कर सकता हूं?
- 28. मैं स्ट्रिंग के माध्यम से कैसे पुन: प्रयास कर सकता हूं और इंडेक्स (वर्तमान स्थिति) को भी जान सकता हूं?
- 29. जावा: मैं इनपुटस्ट्रीम से एन्कोडिंग कैसे प्राप्त कर सकता हूं?
- 30. क्या मैं एक संपूर्ण गिट परियोजना को गिस्ट के माध्यम से साझा कर सकता हूं?
'' Node.js जावा स्क्रिप्ट फ़ाइल लगता है और JNI आप अपने प्रश्न –
आप Node.js के बजाय राइनो उपयोग कर सकते हैं विस्तृत कृपया कर सकते हैं, देशी कार्यक्षमता का उपयोग करने के लिए किया जाता है, interfacing वास्तव में है आसान: https://developer.mozilla.org/en-US/docs/Scripting_Java –