2013-02-03 36 views
18

बनाम मैं दुभाषियों, संकलनकर्ता और वीएमदुभाषियों बनाम संकलनकर्ता वर्चुअल मशीनें

बारे में एक प्रश्न

अब मैं दुभाषियों और संकलनकर्ता लेकिन क्या आभासी मशीनों पिछले 2 से के बारे में अलग है के बीच अंतर पता है? दुभाषियों और कंपाइलरों पर वीएम के पेशेवरों और विपक्ष क्या हैं?

धन्यवाद एक बहुत

उत्तर

23

के सैकड़ों एक आभासी मशीन वास्तव में compilers या दुभाषिए के लिए एक विकल्प नहीं है। मुझे लगता है कि आप एक जेआईटी कंपाइलर के बारे में सोच रहे हैं, जो कि कितने वीएम लागू किए गए हैं।

एक वर्चुअल मशीन स्वयं नाम कहता है - यह एक मशीन (प्रोसेसर) है जो वास्तव में मौजूद नहीं है। उदाहरण के लिए, अधिकांश प्रोसेसर में स्मृति आवंटन, या प्रकार के किसी भी ज्ञान से निपटने का कोई आंतरिक तरीका नहीं है। जावा वीएम हालांकि, new निर्देश है जो एक निश्चित वर्ग का उदाहरण आवंटित करता है। वीएम के डिजाइनरों ने फैसला किया कि यह अपने स्वयं के ओपोड के लायक होने के लिए भाषा में एक महत्वपूर्ण पर्याप्त अवधारणा थी, जो वीएम में संचालन की मौलिक इकाई है।

अपना खुद का निर्देश सेट बनाने के फायदे आमतौर पर लंबे संकलन/अनुकूलन समय और धीमी दुभाषियों के बीच के अंतर को पुल करने के लिए होते हैं। जब आप जावा क्लास संकलित करते हैं, उदाहरण के लिए, आपको कोई भी रजिस्टर आवंटन या इनलाइनिंग या उस पारंपरिक कंपाइलर सामग्री में से कोई भी करने की आवश्यकता नहीं है। जेआईटी बाद में ऐसा करेगा, लेकिन केवल कोड के उन हिस्सों के लिए जो आप पर्याप्त समय चलाते हैं, और कार्यक्रम के संचालन में फैलते हैं। जेवीएम का निर्देश सेट जावा के लिए काफी करीब है कि प्रारंभिक संकलन त्वरित है, और यह जावा स्रोत कोड के विपरीत, VM के लिए पढ़ने के लिए सरल और त्वरित है।

दुभाषिया बनाम जेआईटी कंपाइलर्स के लिए, ट्रेडऑफ आमतौर पर रनटाइम प्रदर्शन बनाम विकास समय के आसपास होते हैं।एक जेआईटी को विकसित करने में काफी समय लगता है, लेकिन चलने के दौरान एक दुभाषिया बहुत धीमा है। हालांकि, कई मामलों में, स्क्रिप्टिंग और छोटे से मध्यम आकार की वेबसाइटों की तरह, कार्यक्रम आपके लिए जेआईटी का उपयोग करने के किसी भी लाभ को वास्तव में देखने के लिए पर्याप्त नहीं चलता है।

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

+0

शीर्ष नोट मैट, बस मुझे क्या चाहिए – DodoSerebro

+2

"वास्तव में अस्तित्व में नहीं है" बिल्कुल उचित अभिव्यक्ति नहीं है। सच यह है कि एक निर्मित मशीन प्रोसेसर नहीं हो सकता है जो किसी दिए गए वीएम की समान बाइटकोड भाषा का उपभोग कर सकता है। इसका मतलब यह नहीं है कि इस तरह के एक मशीन प्रोसेसर का निर्माण नहीं किया जा सकता है। – amirouche

14

सादा अंग्रेजी

संकलक दूसरे में एक भाषा बदल देती है। उदाहरण के लिए, आई # में आईएल, जावा बाइट कोड में, सी ++ बाइनरी मशीन कोड में। संकलन चरण में कोई निष्पादन नहीं होता है।

इंटरप्रेटर स्रोत फ़ाइल से एक समय में एक पंक्ति को व्याख्या (निष्पादित) करता है।

  • सूत्र से संबंधित आभासी मशीन, जैसे Hyper-V, Xen: ऐसी PHP, पर्ल, अन्य स्क्रीप्टिंग भाषाओं के रूप में

    वर्चुअल मशीन कई चीजें उल्लेख कर सकते हैं, दो मैं के बारे में पता कर रहा हूँ। ये आपको हार्डवेयर के एक टुकड़े पर कई ओएस चलाने की अनुमति देता है

  • सॉफ़्टवेयर रन टाइम, जैसे Java Virtual Machine, Common Language Runtime। सॉफ़्टवेयर का यह टुकड़ा प्लेटफॉर्म स्वतंत्र इंटरमीडिएट भाषा (आईएल कोड, बाइट कोड) चलाने और मशीन-विशिष्ट निर्देशों को निष्पादित करने की अनुमति देता है (just-in-time compilation)। आमतौर पर, इस तरह के वीएम अन्य उपग्रह कार्यों के लिए ज़िम्मेदार है: संसाधन प्रबंधन, मेमोरी क्लीन अप, थ्रेडिंग, सुरक्षा इत्यादि

कोई पेशेवर और विपक्ष नहीं है। सभी तीन अलग-अलग नौकरियां करते हैं जिनकी तुलना शायद ही की जा सकती है।

बोली और प्लेटफार्मों आ किसी विशेष क्रम में, वहाँ का शाब्दिक हैं अन्य नमूनों

+0

धन्यवाद एक बहुत है, यह समझ पूरी तरह से :) – DodoSerebro

+0

संकलक और दुभाषिया और वीएम किसी भी भाषा के लिए लिखा जा सकता है और किसी भी भाषा एक रूप है कि हो सकता है में अनुवाद किया जा सकता है एक मूल वीएम द्वारा निष्पादित। किसी भी भाषा को संकलित किया जा सकता है और निश्चित रूप से किसी भी भाषा का व्याख्या किया जा सकता है। इसका मतलब यह नहीं है कि यह करना दिलचस्प बात है। – amirouche

6

रियल मशीनें वर्चुअल मशीनें बनाम

  • रियल मशीन जिसका मशीन कोड हार्डवेयर द्वारा निष्पादित किया जाता है
  • वर्चुअल मशीन जिसका "मशीन कोड" एक दुभाषिया के द्वारा निष्पादित किया जाता है है।

दुभाषियों बनाम संकलनकर्ता

Answer is here

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

  • कोई संबंधित समस्या नहीं^_^