2010-10-08 16 views
11

कुछ समय पहले मुझे MJVM प्रोजेक्ट मिला। अफसोस की बात है, इस परियोजना को लेखक द्वारा छोड़ दिया गया है (मैंने ईमेल के माध्यम से Igor पूछा)।जावा कार्यान्वयन ... जेवीएम?

मुझे आश्चर्य है कि इस तरह जावा में एक JVM के पूर्ण कार्यान्वयन की एक (जारी) ओपन सोर्स प्रोजेक्ट है या नहीं।

"पूर्ण" से मेरा मतलब है कि न केवल मोबाइल उपकरणों का अनुकरण करना है।

उत्तर

30

Jikes RVM शायद जावा में लिखा गया सबसे प्रमुख JVM कार्यान्वयन है। हालांकि, इसके निम्नतम स्तर के कार्यान्वयन में "जादू" इंटरफ़ेस को स्थिर विधि कॉल शामिल होते हैं, जिसे विशेष रूप से संकलक द्वारा संदर्भित किया जाता है और मूल कोड में अनुवाद किया जाता है।

Maxine VM (सूर्य लैब्स, अब ओरेकल लैब्स द्वारा मूल रूप से विकसित) एक असली metacircular वी एम, जिसमें केवल सब कुछ नहीं जावा में लिखा है, लेकिन वहाँ संकलक में कोई विशेष-आवरण पर जा रहा है। और भी अधिक: जावा में लिखी गई मैक्सिन वीएम न केवल भी चलाती है! यह पागल लग सकता है, और स्पष्ट हो सकता है, मुझे नहीं पता कि यह कैसे काम करता है, लेकिन यह Klein VM (सन लैब्स द्वारा विकसित) पर आधारित है जो स्वयं प्रोग्रामिंग भाषा के लिए एक ही काम करता है।

इसमें कुछ बहुत ही रोचक गुण हैं: चूंकि जेवीएम स्वयं कोडबेस का हिस्सा है जो जेवीएम व्याख्या करता है, वही कोडबेस जो उपयोगकर्ता कोड से संबंधित है, इसका मतलब है कि यह वीएम सीमा में इनलाइनिंग जैसे ऑप्टिमाइज़ेशन कर सकता है। IOW: यह उपयोगकर्ता कोड में वीएम कोड को रेखांकित कर सकता है और इसके विपरीत। इसका मतलब यह भी है कि वीएम स्वयं एक ही रनटाइम प्रोफाइलिंग और गतिशील अनुकूलन के अधीन है जो   – अन्य वीएम (यहां तक ​​कि जैक्स समेत)   – केवल उपयोगकर्ता कोड है, जिसका अर्थ है कि वीएम स्वयं लगातार पुनः संकलित हो जाता है और पुनः- बदलते लोड, नए वर्गों को लोड करने, प्रोफाइल बदलने, उपयोग पैटर्न बदलने आदि को अनुकूलित करने के लिए अनुकूलित किया गया।

हॉटस्पॉट, जेआरॉकिट, जे 9 और अन्य जैसे वीएम पर, इन अनुकूलन असंभव हैं, क्योंकि सामान्य कारण यह है कि जेवीएम केवल जेवीएमएल बाइटकोड को अनुकूलित करने के बारे में जानता है, लेकिन वीएम जावा में नहीं लिखा गया है। लेकिन यहां तक ​​कि जैक्स में, यह संभव नहीं है क्योंकि, जबकि वीएम जावा में लिखा गया है, यह देशी कोड से पहले से पहले संकलित हो जाता है, और यह वीएम का कोड कोड का हिस्सा नहीं है जो वीएम "देखता है "।

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

+0

मैक्सिन वीएम अकसर किये गए सवाल पृष्ठ लिंक के बाद मुझे इसी तरह की परियोजनाएं मिली हैं: जोक, ओवीएम, और मोक्सी। जोक बदले में जावाइजावा और रिवेट सिस्टम का संदर्भ देता है। अपने जवाब के लिए आपको बहुत बहुत धन्यवाद। – mschonaker

+0

Squawk SunSPOT को शक्ति देता है –

6

Jikes RVM जावा में लिखा गया एक जेवीएम है, जो शोध के लिए उपयोग किया जाता है और सक्रिय विकास के तहत रखा जाता है।

1

JNode जावा में लिखा गया एक जेवीएम + ऑपरेटिंग सिस्टम है जो एक नंगे x86 पीसी या आभासी चलाता है। परियोजना का एसवीएन देर से (लगभग पिछले 6 महीनों) में काफी निष्क्रिय रहा है, लेकिन मेरा मानना ​​है कि परियोजना के लिए जीआईटी दर्पण में गतिविधि है।

+0

जेवीएम जहां तक ​​मैं घरगुती देख सकता हूं, और इसे अच्छी तरह से काम करने के लिए काफी स्मृति की आवश्यकता है। –

+0

@ ThorbjørnRavnAndersen - हाँ यह है। जेएनओडी जेवीएम कोर (जेआईटी समेत) और सभी ओएस कार्यक्षमता घर उगाए जाते हैं। यह सामान्य रूप से 256 एमबी पर चलता है, हालांकि यह वास्तव में व्यावहारिक नहीं है। एक कारण यह है कि यह वर्चुअल मेमोरी का उपयोग नहीं करता है। –

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