जावा वर्चुअल मशीन और दलविक वर्चुअल मशीन के बीच क्या अंतर है?डीवीएम और जेवीएम के बीच क्या अंतर है?
उत्तर
जेवीएम आर्किटेक्चर स्टैक-आधारित है जबकि डीवीएम आर्किटेक्चर रजिस्टर-आधारित है। स्टैक-आधारित मशीनों को एक ही कार्य के लिए रजिस्टर-आधारित मशीनों की तुलना में अधिक निर्देश (यानी बड़े निर्देश सेट) की आवश्यकता होती है। दूसरी ओर, रजिस्टर-आधारित मशीनों में प्रत्येक निर्देश बड़ा होता है।
वैचारिक रूप से, वहाँ एक DVM और एक JVM के बीच एक आवेदन स्तर से थोड़ा अंतर है। आर्किटेक्चरल में, रजिस्टर डीवीएम और स्टैक-आधारित जेवीएम के बीच एक बड़ा अंतर है।
दोनों एक वीएम कोड मॉडल का उपयोग करते हैं। हालांकि, डीवीएम रजिस्टरबेस वाले ऑपकोड का उपयोग करता है जो रजिस्टर-आधारित बाइटकोड निर्देशों के तुलनीय हैं जो लक्ष्य प्लेटफ़ॉर्म के अधिकांश पहले ही निष्पादित हैं। यह में आर्किटेक्चर जैसे एआरएम और एमआईपीएस से उपलब्ध हैं और x86- इंटेल, एएमडी और वीआईए टेक्नोलॉजीज से संगत आर्किटेक्चर शामिल हैं।
Google ने एंड्रॉइड विकसित किया और कई कारणों से डीवीएम चुना। सबसे पहले, अधिकांश JVMs के साथ लाइसेंसिंग समस्याएं थीं। अगला, DVM को मेमोरी उपयोग और प्रदर्शन पर पंजीकरण-आधारित मशीन पर अधिक कुशल होना चाहिए। DVM के कई उदाहरण चलाते समय DVM को अधिक कुशल माना जाता है। एप्लिकेशन को अपना उदाहरण दिया गया है। इसलिए, एकाधिक सक्रिय अनुप्रयोगों को एकाधिक DVM उदाहरणों की आवश्यकता होती है। अधिकांश जावा कार्यान्वयन की तरह, डीवीएम में स्वचालित कचरा कलेक्टर है।
DVM रजिस्टर आधारित है जो कम स्मृति पर चलाने के लिए डिज़ाइन किया गया है, अपने स्वयं के बाइट कोड का उपयोग करता है और .dex फ़ाइल
JVM ढेर आधारित जो जावा बाइट कोड और रन का उपयोग करता है चलाता है। जेआईटी रखने वाली कक्षा फाइल।
जावा स्रोत कोड जावा कंपाइलर द्वारा .class फ़ाइलों में संकलित किया गया है। फिर डीएक्स (डेक्सर) टूल, एंड्रॉइड एसडीके का हिस्सा .class फ़ाइलों को डीईएक्स नामक फ़ाइल प्रारूप में संसाधित करता है जिसमें डाल्विक बाइटकोड होता है। डीएक्स उपकरण कक्षाओं में मौजूद सभी अनावश्यक जानकारी को खत्म करता है। डीईएक्स में आवेदन के सभी वर्गों को एक फ़ाइल में पैक किया जाता है। डीवीएम डिज़ाइन किया गया है ताकि एक डिवाइस कुशलतापूर्वक वीएम के कई उदाहरण चला सके।
स्टैक-आधारित मशीनों को स्टैक पर डेटा लोड करने और उस डेटा में हेरफेर करने के लिए निर्देशों का उपयोग करना चाहिए, और इस प्रकार, रजिस्टर मशीनों की तुलना में अधिक उच्च स्तर कोड को लागू करने के लिए अधिक निर्देशों की आवश्यकता होती है, लेकिन एक रजिस्टर मशीन में निर्देशों को एन्कोड करना होगा स्रोत और गंतव्य पंजीयक और इसलिए, बड़े होते हैं।
क्या हमारे पास कोई उपलब्ध रजिस्टर सीमित नहीं है? – roottraveller
जेवीएम बाइट कोड के आधार पर काम करेगा और डीवीएम अनुकूलित प्लेटफार्म के आधार पर काम करेगा, इसे मोबाइल प्लेटफार्मों के लिए अनुकूलित किया गया है क्योंकि मोबाइल उपकरणों में कम स्मृति और कम प्रक्रिया है, यही कारण है कि यह लिनक्स कर्नल का उपयोग कर रहा है।
जब एक जावा आभासी मशीन एक कार्यक्रम चलाने के लिए, यह स्मृति bytecodes और अन्य जानकारी के अर्क से भरी हुई वर्ग फ़ाइलों से सहित बहुत सी बातें, स्टोर करने के लिए, मानकों तरीकों, वापसी मान की जरूरत कार्यक्रम को दर्शाता है वस्तुओं, स्थानीय चर, और गणना के मध्यवर्ती परिणाम।
जावा आभासी मशीन कई रनटाइम डेटा क्षेत्रों में एक प्रोग्राम को निष्पादित करने के लिए आवश्यक स्मृति को व्यवस्थित करती है।
आम तौर पर, ढेर आधारित मशीनों ढेर पर डेटा लोड करने के निर्देश का उपयोग करना चाहिए और उस डेटा में हेरफेर, और इस प्रकार, रजिस्टर मशीनों की तुलना में अधिक निर्देश की आवश्यकता होती है एक ही उच्च स्तर कोड लागू करने के लिए, लेकिन एक निर्देश रजिस्टर मशीन को स्रोत और गंतव्य रजिस्ट्रार एन्कोड करना होगा और इसलिए, बड़ा होना चाहिए।
यह अंतर प्राथमिक रूप से वीएम दुभाषियों के लिए महत्वपूर्ण है जिनके लिए ओपोड प्रेषण महंगा होता है और अन्य कारक जेआईटी संकलन के लिए प्रासंगिक होते हैं।
कम स्मृति आवश्यकताओं के लिए अनुकूलित किया जा रहा है, Dalvik कुछ विशिष्ट विशेषताओं है कि यह अन्य मानक VMs >>>>>
से अलग वीएम बस नीचे slimmed था कम जगह का उपयोग करने के --- >> Dalvik है वर्तमान में कोई टाइम-इन-टाइम-कंपाइलर (जेआईटी) नहीं है, लेकिन एंड्रॉइड 2.0 में एक के लिए प्रयोगात्मक स्रोत शामिल है (डिफ़ॉल्ट रूप से अक्षम)। निरंतर पूल को दुभाषिया को सरल बनाने के लिए केवल 32-बिट इंडेक्स का उपयोग करने के लिए संशोधित किया गया है। यह जावा बाइटकोड * * *
एंड्रॉइड 2.2 से जेआईटी का उपयोग एंड्रॉइड 5.0 (जो एआरटी के साथ डीवीएम को प्रतिस्थापित करता है) से किया जाता है, एओटी का उपयोग किया जाता है, फिर एंड्रॉइड 7.0 से एओटी और जेआईटी दोनों का उपयोग किया जाता है। –
- 1. जेआरई और जेवीएम के बीच क्या अंतर है?
- 2. जेवीएम के लुकअपस्विच और टेबलस्विच के बीच अंतर?
- 3. के बीच क्या अंतर है?
- 4. जावा के जेवीएम और .NET के सीएलआर के आंतरिक कार्यों के बीच क्या अंतर है?
- 5. # {} $ {} और% {} के बीच क्या अंतर है?
- 6. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 7. $ और $$ के बीच क्या अंतर है?
- 8. के बीच क्या अंतर है:। और: आर !?
- 9. भिन्नता और '-' के बीच क्या अंतर है?
- 10. "$^एन" और "$ +" के बीच क्या अंतर है?
- 11. अंतर और कहां के बीच क्या अंतर है?
- 12. file_get_contents और fread बीच क्या अंतर है
- 13. जावा दुभाषिया और जेवीएम
- 14. क्या बीच का अंतर है :: और ::: स्काला
- 15. "। +" और "। +?" के बीच अंतर
- 16. जेवीएम कार्यान्वयन के बीच मतभेद
- 17. $ {} और # {} के बीच अंतर क्या हैं?
- 18. PHP के बीच क्या अंतर है और इसमें शामिल है?
- 19. अपवाद के .TOString() और मैसेज के बीच क्या अंतर है?
- 20. 7zip के 7z.sfx और 7zsd.sfx के बीच क्या अंतर है?
- 21. डीएल के फाइलवर्सन और उत्पादवर्जन के बीच क्या अंतर है?
- 22. UIImageView के फ्रेम और सीमाओं के बीच क्या अंतर है?
- 23. फ़ायरबग के console.log() और console.debug() के बीच क्या अंतर है?
- 24. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 25. ओरिएंटब संस्करणों के बीच क्या अंतर है?
- 26. एन्कोड/डीकोड के बीच क्या अंतर है?
- 27. os.popen() विधियों के बीच क्या अंतर है?
- 28. MATLAB में & &&& के बीच क्या अंतर है?
- 29. ऑब्जेक्ट और * के बीच अंतर?
- 30. इन कार्यों के बीच क्या अंतर है?
क्यों कोई भी उत्तर स्वीकार नहीं किया जाता है? – Apurva