2010-03-17 8 views
6

से जावा कोड के साथ बातचीत करना हमने एक जावा प्रोग्राम लिखा है जिसे हम सी # से उपयोग और बातचीत करने के लिए देख रहे हैं। हमारे विकल्प क्या हैं? सबसे अच्छा जावा अनुप्रयोग को लाइब्रेरी (डीएलएल) के रूप में संकलित करना संभव होगा जिसे हम सी # से संदर्भित कर सकते हैं शायद पी/इनवॉक का उपयोग कर। हालांकि, यह पहली कुछ खोजों के अनुसार ऑनलाइन विकल्प नहीं दिखता है।सी #

हम जावा कोड द्वारा संचालित एक खोज इंजन बनाने के लिए एएसपी.NET का उपयोग करने में सक्षम होने का विकल्प चुनते हैं, इसलिए यदि यह किसी अन्य विकल्प के लिए खुलता है तो कृपया हमें बताएं।

+0

संभावित डुप्लीकेट: http://stackoverflow.com/questions/129989/how-to-call-java-code-from-c http://stackoverflow.com/questions/246096/how-can-i-integrate -जवा-नेट-नेट http://stackoverflow.com/questions/152967/can-you-use-java- पुस्तकालय-in-a-vb-net-program http://stackoverflow.com/questions/191622/c -जावा-इंटरग्रेशन –

उत्तर

6

क्षमा करें, आप cannot कॉल जावा code/classesDirectly सी # कोड से कॉल करें।

ऐसा करने का एक तरीका java Web Service में अपने जावा कक्षाओं को ऊपर रखना है और अपने सी # कोड में उस वेब सेवा इंटरफ़ेस के माध्यम से कक्षा indirectly पर कॉल करें।

एक और तरीका javareg.exe का उपयोग कर रहा है जो जावा कक्षाओं को COM के रूप में उजागर करता है। आप इसे निम्न स्थान पर पा सकते हैं:

C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe 

के बाद पोस्ट के रूप में अच्छी तरह से मदद कर सकता है

4

सबसे आसान तरीका संभवतः आपकी जावा लाइब्रेरी की कार्यक्षमता को वेब सेवाओं के रूप में प्रकाशित करना होगा और आपके एएसपीनेट एप्लिकेशन से वेब-संदर्भ जोड़ना होगा।

2

जावा नहीं है एक और कार्यक्रम में एम्बेडेड होने के लिए, तो आपको एक पुल की जरूरत है। सबसे सरल समाधान सॉकेट का उपयोग करना है: जावा प्रक्रिया बनाएं जो सॉकेट पर कमांड के लिए सुनती है। सी # में, आदेश सॉकेट को भेजें और जवाब पढ़ें।

यहां मुख्य समस्या क्रमबद्ध है लेकिन यदि आप एक्सएमएल का उपयोग करते हैं, तो अब यह इतना बड़ा दर्द नहीं है। अंतर्निहित XML क्रमिकरण (see this article) या XStream या Simple जैसे कस्टम ढांचे का प्रयास करें।

+1

"जावा किसी अन्य प्रोग्राम में एम्बेड करने के लिए नहीं है" वेब ब्राउज़र (जावा एप्लेट) को छोड़कर। – Powerlord

+0

@ पावरलोर्ड: अच्छा विचार।इसलिए आपको अपने एप्लिकेशन में नेटस्केप ब्राउज़र एपीआई का अनुकरण करना होगा ... लेकिन फिर, मुझे यकीन नहीं है कि कोई भी सामान्य डेवलपर सुरक्षा सेटअप को संभाल सकता है, वास्तव में कहीं भी स्क्रीन पर एप्लेट खोलने से बचने के लिए, –

+0

दिगुलला: मैं यह सुझाव नहीं दे रहा था कि वे करते हैं, मैं बस यह ध्यान दे रहा था कि एक अपवाद है। – Powerlord

0

जावा को एक .dll में लपेटना निश्चित रूप से संभव है, और 10 से अधिक वर्षों तक कोर जावा प्लेटफॉर्म का हिस्सा रहा है। जेएनआई (जावा नेटिव इंटरफेस) में आपके कोड में एक जेवीएम एम्बेड करने के लिए एक इंटरफेस है, जिसका अर्थ है कि आप सी-स्टाइल लिंकिंग का उपयोग कर जावा क्लासेस चला सकते हैं। http://java.sun.com/docs/books/jni/html/invoke.html#11202

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