2012-11-25 32 views
5

बस सोच रहा है कि कोई जावा कार्यान्वयन है जो JVM के बिना काम करता है। मुझे दिलचस्पी है, ठीक है, बस क्योंकि मैं उत्सुक हूं, और मैं सोच रहा था कि क्या कोई "हल्का" जावा कार्यान्वयन था (सभी सूर्य libs संलग्न किए बिना)।जावा के बिना जावा

मुझे सी ++ में जावा एम्बेड करने में भी रूचि है, लेकिन सी ++ में जेवीएम एम्बेड करना मेरे लिए हास्यास्पद लगता है। मैं बस अपने सी ++ ऐप्स में कुछ जावा भाषा सुविधाओं का फायदा उठाना चाहता हूं, लेकिन सभी बेवकूफ जावा एपीआई का फायदा नहीं उठाता हूं।

संपादित करें:

मैं जवाब मैं मिल गया है कि मैं स्पष्ट करने की आवश्यकता का एक बहुत से देख ...

मैं हाल ही में विकसित करने Node.js अनुप्रयोगों, जो JavaScript का उपयोग करता है करने के लिए मिला है। खुद में जावास्क्रिप्ट एक भाषा का नमूना है, यह स्वचालित रूप से डोम, window.open, आदि के साथ नहीं आता है, हालांकि यह थोड़ी देर के लिए किया गया था। मैं सोच रहा हूं कि जावास्क्रिप्ट के लिए नहीं, बल्कि जावा के लिए, Google के v8 के समान कुछ है या नहीं। अंत में, मुझे परवाह नहीं है कि क्या मैं इसके साथ हैलो वर्ल्ड ऐप नहीं लिख सकता, मैं बस एक सी ++ एप्लिकेशन में जावा को एम्बेड करने में सक्षम होना चाहता हूं जिस तरह से मैं v8+ एप्लिकेशन में v8 या स्पाइडरमोन्की के साथ जावास्क्रिप्ट एम्बेड कर सकता हूं। अगर मैं ऐसा कर सकता हूं, तो मैं सी/सी ++ में कंसोल आउटपुट को कार्यान्वित कर सकता हूं और फिर उस कार्यान्वयन को जावा से कॉल करने योग्य बना सकता हूं।

+5

सूर्य libs और JVM दो पूरी तरह से अलग चीजें हैं, और तर्कसंगत रूप से जावा की मुख्य विशेषता अत्याधुनिक कचरा कलेक्टर --- स्पष्ट रूप से एक JVM सुविधा है। –

+1

क्या आपका मतलब है, जावा जो जेवीएम बाइटकोड के अलावा किसी अन्य चीज़ को संकलित करेगा? या जो किसी अन्य चीज़ के लिए जेवीएम बाइटकोड संकलित करेगा? और क्या? – hyde

+0

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

उत्तर

0

हल्के वजन जावा उदाहरण के लिए छोटे उपकरणों में इस्तेमाल के लिए डिजाइन JOP

+0

उदाहरण के लिए कई देशी जावा सीपीयू हैं, [विकिपीडिया] (http://en.wikipedia.org/wiki/Java_processor) देखें। – JimmyB

5

आप एपीआई (मानक पुस्तकालय) के बिना जावा वी एम चाहते हैं अकेले प्रोसेसर देखते हैं?

जेआरई जेवीएम (वर्चुअल माचिन) और मानक लाइब्रेरी द्वारा रचित है, मुझे संदेह है कि आप JVM के बिना जावा कार्यान्वयन पा सकते हैं ... आप एक संकलक ढूंढ सकते हैं जो जावा स्रोत कोड को देशी कोड में संकलित करता है (GCJ पर एक नज़र डालें), लेकिन वीएम के बिना जावा कार्यान्वयन नहीं।

कुछ वैकल्पिक जावा कार्यान्वयन देखने के लिए this wikipedia page पर एक नज़र डालें।

1

GCJ (जावा के लिए जीएनयू कंपाइलर) है, लेकिन ओपनजेडीके खुले खुले होने के बाद से परियोजना को हटा दिया गया है।

1

जैसा कि अन्य ने संकेत दिया है, "जेवीएम" वह तंत्र है जो कक्षाओं को लोड करने, "बाइटकोड" की व्याख्या करने और संग्रहण का प्रबंधन करने के बारे में जानता है। इसमें मूल रूप से java.lang ... सामग्री शामिल नहीं है, सिवाय इसके कि कक्षाओं और जेवीएम में अन्य बुनियादी डेटा संरचनाओं का प्रतिनिधित्व करने के लिए कुछ कक्षाएं (स्ट्रिंग, कक्षा, एट अल) की आवश्यकता है।

नतीजतन, जावा के बिना जावा एक अर्थहीन बिट्स का एक गुच्छा है।

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

जैसा कि पस्टेंटन सुझाव देता है, वहां "हल्के" जावा (या "जावा जैसी") कार्यान्वयन हैं जो छोटे उपकरणों के लिए उपयुक्त हैं।

1

आईएमएचओ, आपको फिर से एक्सपैम्प करना होगा कि आप वास्तव में क्या चाहते हैं।

जावा रनटाइम दो मुख्य घटक

  • कोड
  • मानक पुस्तकालयों जो इसके साथ आ चलाने के लिए JVM के होते हैं।

आप सुझाव देते हैं कि आप जावा का उपयोग करना चाहते हैं, लेकिन आपके पास वास्तव में कुछ भी नहीं छोड़ा गया है।

उदाहरण के लिए, आप पुस्तकालयों के बिना "हैलो वर्ल्ड" प्रोग्राम भी नहीं लिख सकते हैं क्योंकि स्ट्रिंग जेडीके में एक कक्षा है।

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