2012-10-24 10 views
19

मैं जावा परियोजना में संदेश पास करने के संदेश के रूप में ज़ीरोमक की जांच कर रहा हूं, लेकिन मुझे जावा बाध्यकारी पर निर्देशों का पालन करना मुश्किल है। http://www.zeromq.org/bindings:javaज़ीरोमक जावा बाध्यकारी को समझना

मैं जावा बाइंडिंग के साथ अपरिचित हूँ, इसलिए इन बेवकूफ सवाल हो सकता है लेकिन किसी की मदद कर सकते हैं मुझे समझने:

  1. क्यों मैं कुछ भी स्थापित करने की जरूरत है?
  2. क्या जार मैं किसी अन्य सिस्टम पर एक मशीन के काम पर निर्माण करूंगा? मुझे इस एप्लिकेशन को पोर्टेबल होने की आवश्यकता है।
  3. यदि हां, तो मुझे अपने स्वयं के जारों को शुरू करने की आवश्यकता क्यों है?

मुझे लगता है कि जेरोमक पर प्रदान किए गए निर्देशों की आवश्यकता सी निर्माण परियोजनाओं के साथ आधार परिचितता की आवश्यकता है, इसलिए शायद मैं घना हो रहा हूं, लेकिन ऐसा लगता है कि यह बहुत काम है।

उत्तर

25

ज़ीरोएमक्यू के जावा बाइंडिंग के एक साथी उपयोगकर्ता के रूप में, मैं सहानुभूति व्यक्त करता हूं। ज़ीरोएमक निश्चित रूप से प्रबंधन के लिए अधिक चुनौतीपूर्ण जावा निर्भरताओं में से एक है। दिल के दिल में, ज़ीरोएमक्यू देशी सी कोड है और जावा बाइंडिंग एक जेएनआई इंटरफ़ेस के आसपास कोर जेरोएमक्यू लाइब्रेरी के लिए एक (अपेक्षाकृत) हल्का वजन रैपर है और यही कारण है कि इसे तैनात करना जटिल है।

एक तरफ के रूप में - यदि ज़ीरोएमक्यू आपके आवेदन के लिए एक अच्छा मैच है, तो यह समस्या के लायक है क्योंकि वास्तव में ऐसा कुछ भी नहीं है। दुर्भाग्यवश इसका मतलब है कि आपको यह काम करने के लिए इन सभी चरणों से गुज़रना होगा ताकि आप यह तय कर सकें कि आपको वास्तव में क्या चाहिए।

जावा के लिए

ZeroMQ तीन घटकों पर आधारित है:

  • libzmq - कोर ZeroMQ पुस्तकालय (DLL - किसी भी भाषा ही नहीं, जावा के लिए आवश्यक)
  • jzmq - जावा बंधन के मूल भाग (DLL)
  • zeromq.jar - जावा बाध्यकारी (जार के जावा भाग)

जार मैं एक और सिस्टम पर एक मशीन काम पर निर्माण होगा? मुझे इस एप्लिकेशन को पोर्टेबल होने की आवश्यकता है।

हां। जार पोर्टेबल होगा। आप इसे किसी भी मशीन पर बना सकते हैं और इसे किसी अन्य पर तैनात कर सकते हैं। हालांकि यह आसान हिस्सा है। कठिन हिस्सा विभिन्न डीएलएल बना रहा है जो आवश्यक हैं और वे पोर्टेबल नहीं हैं। मान लीजिए कि आप विंडोज, मैक और फेडोरा लिनक्स का समर्थन करना चाहते हैं। आपको विंडोज़, मैक और फेडोरा पर देशी विकास वातावरण की आवश्यकता होगी और आप जिस प्लेटफॉर्म का समर्थन करना चाहते हैं उसके लिए डीएलएल बनाएं।

मुझे यह नहीं कहने के लिए लिनक्स के बारे में पर्याप्त जानकारी नहीं है कि एक वितरण (डीएसएबी) कहलाता है कि एक डीएलएल दूसरे पर चलाएगा (डेबियन कहें)। यदि नहीं, तो आपके पास आगे काम है।

किसी भी तरह, आपका आवेदन पोर्टेबल होगा - ज़ीरोएमक्यू और जेडएमएमक्यू बड़ी संख्या में प्लेटफार्मों पर चल सकता है - लेकिन आपको यह सुनिश्चित करने के लिए अपनी तैनाती प्रक्रिया पर कड़े नियंत्रण की आवश्यकता होगी कि जब आप प्रत्येक प्लेटफॉर्म को स्थापित करते हैं, तो जार और उपयुक्त डीएलएल का सेट स्थापित है, और वे सही जगह पर स्थापित हैं।

मुझे कुछ भी इंस्टॉल करने की आवश्यकता क्यों है?

तकनीकी रूप से आप नहीं करते हैं। लेकिन मुझे लगता है कि वे make install चरण करने की सलाह देते हैं ताकि इसमें शामिल हों और लाइब्रेरी फाइलें हों जहां कंपाइलर्स उन्हें उम्मीद करते हैं और यह भी कि जब जावा प्रोग्राम आपके प्रोग्राम को चलाने का समय हो तो उन्हें लोड कर सकता है।

यदि हां, तो मुझे अपने स्वयं के जार बनाने के लिए क्यों शुरू करने की आवश्यकता है?

मैं एक कमिटर नहीं हूं इसलिए मैं निश्चित रूप से नहीं कह सकता। मुझे उम्मीद है कि इसका हिस्सा डेवलपर दक्षता है - वे जार बनाने वाले उपयोगकर्ताओं के लिए जार बनाने की बजाय कोड में सुधार करेंगे।

अधिक महत्वपूर्ण बात यह है कि चूंकि जार पर्याप्त नहीं हैं और आपको डीएलएल का निर्माण करना है, इसलिए यह जार और डीएलएल को एक साथ बनाने के लिए और अधिक समझ में आता है। इस तरह आप निश्चित हैं कि जेएनआई रैपर में जावा रैपर वर्ग में देशी घोषणाओं से मेल खाने के लिए सी में लागू सही मूल तरीके हैं।

शुभकामनाएं। उम्मीद है की यह मदद करेगा।

+0

धन्यवाद, Guido। इससे यह और अधिक स्पष्ट हो जाता है! –

+5

या आप परेशानी को छोड़ सकते हैं और [jeromq] (https://github.com/zeromq/jeromq) का उपयोग कर सकते हैं जो ज़ीरोम का एक सादा जावा पोर्ट है। यह कुछ परिस्थितियों में बाइंडिंग की तुलना में [तेज़] (https://github.com/zeromq/jeromq/wiki/Perfomance) भी है – drzymala

1

व्यक्तिगत रूप से मुझे लगता है कि पूर्व निर्मित जेएआर जावा में 0 एमक्यू की मदद करने के लिए एक लंबा सफर तय करेंगे। जबकि मैं कई साइटों पर जावा में काम करता हूं, वे एमएसवीएस प्रदान नहीं करते हैं और एक डीएल प्राप्त करने के लिए इतने लंबे सेटअप के माध्यम से जाना पड़ता है और जार मेरे लिए उत्पादक लगता है।

0

आप JeroMQ (libzmq का शुद्ध जावा कार्यान्वयन) भी देख सकते हैं।

जेरोमक्यू एक पूर्ण जावा स्टैक है जो ज़ीरोएमक्यू के समान प्रोटोकॉल और एपीआई का उपयोग करता है और यह समुदाय की आधिकारिक परियोजना है। यह जावा उपयोगकर्ताओं के लिए जीवन को बहुत आसान बनाता है क्योंकि कोई जेएनआई नहीं है, कोई सी ++ बनाने के लिए नहीं है। यह पीजीएम मल्टीकास्ट को छोड़कर ज़ीरोएमक्यू करता है सब कुछ करता है।