के सैकड़ों एक आभासी मशीन वास्तव में compilers या दुभाषिए के लिए एक विकल्प नहीं है। मुझे लगता है कि आप एक जेआईटी कंपाइलर के बारे में सोच रहे हैं, जो कि कितने वीएम लागू किए गए हैं।
एक वर्चुअल मशीन स्वयं नाम कहता है - यह एक मशीन (प्रोसेसर) है जो वास्तव में मौजूद नहीं है। उदाहरण के लिए, अधिकांश प्रोसेसर में स्मृति आवंटन, या प्रकार के किसी भी ज्ञान से निपटने का कोई आंतरिक तरीका नहीं है। जावा वीएम हालांकि, new
निर्देश है जो एक निश्चित वर्ग का उदाहरण आवंटित करता है। वीएम के डिजाइनरों ने फैसला किया कि यह अपने स्वयं के ओपोड के लायक होने के लिए भाषा में एक महत्वपूर्ण पर्याप्त अवधारणा थी, जो वीएम में संचालन की मौलिक इकाई है।
अपना खुद का निर्देश सेट बनाने के फायदे आमतौर पर लंबे संकलन/अनुकूलन समय और धीमी दुभाषियों के बीच के अंतर को पुल करने के लिए होते हैं। जब आप जावा क्लास संकलित करते हैं, उदाहरण के लिए, आपको कोई भी रजिस्टर आवंटन या इनलाइनिंग या उस पारंपरिक कंपाइलर सामग्री में से कोई भी करने की आवश्यकता नहीं है। जेआईटी बाद में ऐसा करेगा, लेकिन केवल कोड के उन हिस्सों के लिए जो आप पर्याप्त समय चलाते हैं, और कार्यक्रम के संचालन में फैलते हैं। जेवीएम का निर्देश सेट जावा के लिए काफी करीब है कि प्रारंभिक संकलन त्वरित है, और यह जावा स्रोत कोड के विपरीत, VM के लिए पढ़ने के लिए सरल और त्वरित है।
दुभाषिया बनाम जेआईटी कंपाइलर्स के लिए, ट्रेडऑफ आमतौर पर रनटाइम प्रदर्शन बनाम विकास समय के आसपास होते हैं।एक जेआईटी को विकसित करने में काफी समय लगता है, लेकिन चलने के दौरान एक दुभाषिया बहुत धीमा है। हालांकि, कई मामलों में, स्क्रिप्टिंग और छोटे से मध्यम आकार की वेबसाइटों की तरह, कार्यक्रम आपके लिए जेआईटी का उपयोग करने के किसी भी लाभ को वास्तव में देखने के लिए पर्याप्त नहीं चलता है।
मुझे वीएमवेयर जैसे सॉफ़्टवेयर का भी उल्लेख करना चाहिए। यह एक वर्चुअल मशीन भी है, लेकिन यह एक निर्देश सेट का उपयोग करता है जो वास्तविक हार्डवेयर पर भी प्रयोग किया जाता है। यह भाषा वीएम के समान मूल अवधारणा है, जिसमें यह ऐसी मशीन होने का नाटक करती है जो शारीरिक रूप से मौजूद नहीं है, लेकिन व्यवहार में यह अलग और बहुत जटिल है।
शीर्ष नोट मैट, बस मुझे क्या चाहिए – DodoSerebro
"वास्तव में अस्तित्व में नहीं है" बिल्कुल उचित अभिव्यक्ति नहीं है। सच यह है कि एक निर्मित मशीन प्रोसेसर नहीं हो सकता है जो किसी दिए गए वीएम की समान बाइटकोड भाषा का उपभोग कर सकता है। इसका मतलब यह नहीं है कि इस तरह के एक मशीन प्रोसेसर का निर्माण नहीं किया जा सकता है। – amirouche