2011-06-15 19 views
6

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

+1

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

+2

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

+0

स्पष्टता के लिए: ऐसा लगता है कि आप अपना स्वयं का डीएसएल बनाने की कोशिश कर रहे हैं जिसे आप जेवीएम बाइट कोड में पार्स करने की योजना बना रहे हैं, और परिणामी बाइट कोड निष्पादित करने के लिए आपको अपने सिस्टम में एम्बेड करने के लिए एक JVM कार्यान्वयन की आवश्यकता है। क्या मैं सही हू? – drnewman

उत्तर

0

शायद आप कुछ अन्य जावावीएम-एस एम्बेड करना चाहते हैं, तो आप Kaffe देख सकते हैं, लेकिन मुझे यह अच्छी तरह से पता नहीं है और यह आपकी आवश्यकताओं का उत्तर नहीं दे सकता है। जेवीएम विनिर्देश की मेरी समझ यह है कि वर्ग लोडर इसका एक अनिवार्य हिस्सा है (और इसे कुछ कोर वर्गों की आवश्यकता है)।

जेवीएम आधारित डीएसएल भाषा आप क्या उपयोग करना चाहते हैं?

1

यह पागल लग सकता है, लेकिन मैं आपके जावा कोड को चलाने के लिए embedding Mono और using IKVM का सुझाव दूंगा। मोनो अपेक्षाकृत छोटा और पोर्टेबल वीएम है, जो एम्बेडिंग के लिए उपयुक्त है (आप इसे अपने आवेदन में स्थिर रूप से भी लिंक कर सकते हैं) और आईकेवीएम जावा 1.6 का एक वफादार कार्यान्वयन है, जो ग्रहण के रूप में भी इस तरह के monstrosities चलाने में सक्षम है।

मोनो/आईकेवीएम के संयोजन का उपयोग करके आप अपने आवेदन को समय-समय पर x86 मशीन कोड में संकलित कर सकते हैं (Compiling Java Code to x86 Code देखें)।

संबंधित मुद्दे