2010-01-11 9 views
19

JVM को जावा एप्लिकेशन चलाने की आवश्यकता है।सी # में समकक्ष जेवीएम क्या है?

मैं जानना चाहता था कि सी # में कोई समकक्ष है?

यदि हां यह क्या है?

+9

क्यों आप विकिपीडिया, बीटीडब्ल्यू को कम से कम समझते हैं? –

उत्तर

39

Common Language Runtime या सीएलआर। यह रनटाइम है जो केवल सी # नहीं बल्कि विजुअल बेसिक .NET जैसे अन्य .NET भाषाओं का भी समर्थन करता है। आम तौर पर, प्रत्येक भाषा डेवलपर्स को सीएलआर पर उपलब्ध सुविधाओं के सबसेट में उजागर करती है (उदाहरण के लिए, रिटर्न प्रकार द्वारा पूरी तरह से ओवरलोडिंग विधि आमतौर पर सी # में समर्थित नहीं होती है, लेकिन सीएलआर द्वारा समर्थित है)।

जैसे जावा बाइटकोड, सी # और अन्य .NET भाषाओं को माइक्रोसॉफ्ट इंटरमीडिएट लैंग्वेज (एमएसआईएल) में संकलित करता है - सीएलआर सुविधाओं के पूरे सेट का पर्दाफाश करने वाली एकमात्र भाषा।

बेशक, सी # defined purely as a language है। ऐसा कोई कारण नहीं है कि को अन्य रनटाइम पर चलाने के लिए, या वास्तव में एक व्याख्या मोड में नहीं बनाया जा सकता है। लेकिन "जेवीएम" (डिफ़ॉल्ट रूप से लागू करने वाला) "समकक्ष" सीएलआर है।

+1

यह सच नहीं है। सी # कोड चलाने के लिए आपको सीएलआर की आवश्यकता नहीं है, * कोई भी * सीएलआई-अनुरूप रनटाइम करेगा। इसके अलावा, एमएसआईएल के लिए सी # संकलन के सभी कार्यान्वयन नहीं, वास्तव में मुझे लगता है कि अधिकांश सीआईएल और कुछ मूल कोड के लिए संकलित हैं। असल में, सी # के सभी कार्यान्वयन सभी * संकलित नहीं किए गए हैं, मुझे विश्वास है कि कम से कम एक दुभाषिया है। –

+3

नहीं, मेरा जवाब सच है, दूसरा नहीं है। यह सी # के लिए डिफ़ॉल्ट रनटाइम है, क्योंकि जेवीएम जावा के लिए है। मैंने वास्तव में नहीं कहा है कि आपके पास सी # कोड चलाने के लिए सीएलआर होना चाहिए - यह सवाल नहीं था। –

+0

+1 आपकी टिप्पणी, वैसे, बिल्कुल बिल्कुल सही है ... –

4

सी # अनुप्रयोग चलाने के लिए आपको सामान्य भाषा रनटाइम (सीएलआर) होना चाहिए।

+0

जिस तरह से यह कहा जाता है, यह सख्ती से * सत्य नहीं है - मेरे उत्तर पर जोर्ग की टिप्पणी देखें, और मेरा संपादन। –

1

जेवीएम के बराबर कोई .NET नहीं है, क्योंकि .NET जावा वर्चुअलाइज्ड सैंडबॉक्स के अंदर नहीं चलता है।

जावा: स्रोत> जावा बाइटकोड> विशिष्ट प्लेटफार्म के लिए संकलित जेवीएम द्वारा Intepreted।

.NET: स्रोत> MSIL> एमएसआईएल असेंबली को पहली बार मूल कोड में संकलित किया गया।

इस तरह, .NET कोड को एमएसआईएल में संकलित किया जा सकता है, एक अलग मशीन आर्किटेक्चर में स्थानांतरित किया जा सकता है, और जब तक कुछ (जैसे मोनो) एमएसआईएल पढ़ सकता है और मशीन कोड को संकलित कर सकता है, तो यह काम करेगा। जावा के साथ, कोड हमेशा जेवीएम के अंदर सैंडबॉक्स चलाएगा।

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

जावा के साथ एकमात्र ऐसे लोग जो कानूनी रूप से एक विशेष मंच पर JVM की पेशकश कर सकते हैं ओरेकल/सन/जावा है। .NET के साथ किसी भी प्लेटफॉर्म पर भागों या कुलता में सीएलआर के संस्करण को लागू करने का निर्णय ले सकता है।

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