Common Language Runtime (CLR) :-
CLR यूजर को ऐसा वातावरण प्रदान करता है कि यूजर कम से कम समय में अप्लिकेशन डेवलप करके इक्जिीक्यूट करा सकता है। यह डाट नेट नेटवर्क की पहली लेयर मानी जाती है। कॉमन लैंग्वेज रनटाइम(CLR),माइक्रोसॉफ्ट डाट नेट फ़्रेमवर्क का वर्चुअल मशीन कंपोनेंट है। यह .NET programs को इक्जीक्यूट करता है।
कामन लैंग्वेज रनटाइम (सीएलआर), माइक्रोसॉफ्ट का वर्चुअल मशीन घटक है। .NET Framework डाट नेट प्रोग्राम को एक्सेक्यूट करने का काम करता है।
डाट नेट फ्रेमवर्क में विभिन्न सपोर्टेड लैंग्वेज में प्रोग्राम लिखे जाते है। CLR इन विभिन्न भाषा में लिखे प्रोग्राम को एग्जिक्यूट करता है।
CLR सोर्स कोड को पहले एक प्रकार के बाईट कोड (मैनेज्ड कोड ) में बदलता है। इस बाइट कोड को कॉमन इंटरमीडिएट लैंग्वेज कोड (CIL) भी कहते है। इसके बाद CLR बाइट कोड को मशीन कोड या नेटिव कोड में बदलता है , और इसके बाद प्रोग्राम को एक्जक्यूट करता है।
CLR का ‘जस्ट इन टाइम’ भाग , मैनेज्ड कोड (कम्पाईल्ड किया हुआ इंटरमीडिएट लैंगुएज कोड ) को मशीन इंस्ट्रक्शन में बदलता है जिसे कम्प्यूटर का cpu एक्सीक्यूट करता है
प्रोग्राम कोड को एक्सीक्यूट करने के अतिरिक्त CLR, memory management, thread management, security management, code verification, compilation, और दुसरी सिस्टम सर्विस उपलब्ध कराता है .
.NET , CLR Versions:-
| .NET version | CLR version |
| 1.1 | 1.1 |
| 2.0 | 2.0 |
| 3.0 | 2.0 |
| 3.5 | 2.0 |

The common type system:-
डाट नेट फ़्रेमवर्क कई प्रोग्रामिंग लैंग्वेज को सपोर्ट करता है जैसे ब्रु C#, VB.NET, J#, etc lHkh सभी प्रोग्रामिंग लैंग्वेज के अपने डाटा टाइप होते है। एक लैंग्वेज के डाटा टाइप दूसरे लैंग्वेज के द्वारा नहीं समझे जा सकते। लेकिन कई बार हमें एक दूसरी लैंग्वेज में कम्यूनिकेट करना होता है। उदाहरण के लिये VB.NET में लिखे कोड को C# में लिखे कोड द्वारा काल करने की जरूरत पड़ सकती है, इन लैंग्वेज से आपस में स्मूथ कम्यूनिकेशन होने के लिये जरूरी है कि एक कामन टाइप सिस्टम हो। यह कामन टाइप सिस्टम दानेां लैंग्वेज के डाटा टाइप को एक कामन डाटा टाइप में कम्पाइल कर देता है।
डाट नेट फ़्रेमवर्क में clr सभी लैंग्वेज के डाटा टाइप को इक्सीक्यूट कर देता है। क्योंकि clr का अपना कामन डाटा टाइप होता है, जो सभी लैंग्वेज के लिये कामन होता है। कोड के कम्पाइलेशन के समय सभी लैंग्वेज के डाटा टाइप, एक कामन टाइप, clr टाइप में बदल जाते है। clr का यह डाटा टाइप जो सभी लैंग्वेज के लिये कामन होता है कामन टाइप सिस्टम कहलाता है।
The common type system के द्वारा वैरियेबल के टाइप कैसे डिक्लियर होंगे कैसे प्रयोग होंगे और कैसे मैनेज किये जायेंगे यह निर्धारित होता है ।
कामन टाइप सिस्टम निम्न कार्य करता है:-
- Establishes a framework that helps enable cross-language integration, type safety, and high-performance code execution.
- Provides an object-oriented model that supports the complete implementation of many programming languages.
- Defines rules that languages must follow, which helps ensure that objects written in different languages can interact with each other.
- Provides a library that contains the primitive data types (such as Boolean, Byte, Char, Int32, and UInt64) used in application development.
CIL or MSIL | Microsoft Intermediate Language or Common Intermediate Language:-
इन्हें कामन इंटरमीडिएट लैंग्वेज या माइक्रौसौफ़्ट इंटरमीडिएट लैंगुएज भी कहते है। (CIL) भाषा में लिखे कोड या निर्देशों के समूह प्लेटफॉर्म इंडिपेंडेंट होते है। ये कोड उसी लैंग्वेज के कम्पाइलर द्वारा सोर्स कोड से परिवर्तित किये जाते है।
msil को jit कम्पाइलर के द्वारा मशीन कोड में बदला जाता है. jit कम्पाइलर प्रत्येक प्रॉसेसर के लिए अलग अलग होते है .. jit कम्पाइलर प्रत्येक मशीन के प्रॉसेसर के अनुसार Msil कोड को मशीन कोड में बदलता है। जिसके बाद वे कम्प्यूटर के प्रॉसेसर द्वारा रन हो जाते है
MSIL को आवश्यकता के आधार पर मशीन कोड में परिवर्तित किया जाता है, यानी JIT कंपाइलर MSIL को संपूर्ण के बजाय आवश्यकतानुसार कम्पाइल करता है।
CLR में प्रोग्राम की एक्सेक्यूशन प्रक्रिया:-
प्रोग्राम एक्सेक्यूशन प्रक्रिया जिसमें MSIL का निर्माण और MSIL को JIT कंपाइलर द्वारा मशीन कोड में बदलना शामिल है, निम्न प्रकार होती है:
सर्वप्रथम किसी प्रोग्रामिंग लैंग्वेज में सोर्स कोड लिखा जाता है। इस प्रोग्रामिंग लैंग्विज के लिए बने निश्चित कम्पाइलर के द्वारा सोर्स कोड को MSIL में कम्पाइल किया जाता है। कम्पाइलेशन के समय मेटाडाटा भी तैयार किया जाता है। मेटाडेटा में कोड में प्रकारों की परिभाषा और हस्ताक्षर, रनटाइम जानकारी आदि जैसी जानकारी होती है।
जेआईटी कंपाइलर माइक्रोसॉफ्ट इंटरमीडिएट लैंग्वेज (एमएसआईएल) को मशीन कोड में परिवर्तित करता है।
यह मशीन कोड प्रत्येक कंप्यूटर वातावरण के लिए विशिष्ट है, जिस कम्प्यूटरपर जेआईटी कंपाइलर चलता है यह उसी के लिए विशेष रूप से बनाया जाता है। अर्थात प्रत्येक प्रॉसेसर के लिए jit कम्पाइलर अलग अलग होता है।
MSIL को आवश्यकता के आधार पर मशीन कोड में परिवर्तित किया जाता है अर्थात JIT कंपाइलर MSIL को संपूर्ण के बजाय आवश्यकतानुसार परिवर्तित करता है।
•इसके पश्चात जेआईटी कंपाइलर का उपयोग करके प्राप्त मशीन कोड को कंप्यूटर के प्रोसेसर द्वारा इक्सक्यूट किया जाता है।
किसी भी प्रोग्रामिंग लैंगवेज हय्ूमेन रीडेबल भाषा में लिखी जाती है जिसे सोर्स कोड कहते है।
कम्प्यूुटर का प्रासेसर प्रोग्रामिंग लैंग्वेज में लिख्ेा प्रोग्राम के कोड इग्जीक्यूट करे इसके पहले सोर्स कोड को मशीन के समझने योग्य भाषा मशीन लैंग्वेज में बदलना होगा।
सेार्स कोड से मशीन लैंग्वेज में बदलने की प्रक्रिया इस बात पर निर्भर होगी कि प्रोग्रामिंग लैंग्वेज कम्पाइलड लैेंगवेज
(C, C++, Erlang, Haskell, Rust, and Go.) है या इंटरप्रेटेड लैंग्वेज (PHP, Ruby, Python, and JavaScript.) है।
कम्पाइल्ड लैंग्वेज (c , c++, fortan, cobol) में कम्पाइलर सोर्स कोड या प्रोग्राम कोड को लेकर उसे मशीन लैंग्वेज माडयूल या आब्जेक्ट फाइल (एवरेज मशीन लैंग्वेज) में बदल देता है।
एक दूसरा स्पेशल प्रोग्राम जिसे लिंकर कहते है इस आब्जेक्ट फाइल को लेकर इसे दूसरी कम्पाइल्ड आब्जेक्ट फाइल के साथ मिलाकर इक्जक्यूटेबल फाइल बनाता है। कम्पाइलड लैंग्वेज में सोर्स कोड से इक्जूकेटबल कोड में बदलने की प्रक्रिया प्रोग्राम के रन होने के पहले होती है।
इन्टरप्रेटेड लैंग्वेज में सेार्स कोड] मशीन लैंग्वेज में] प्रोग्राम रन होते समय ही बदलता है। इन्टरप्रटेड लैंग्वेज के लिये एक स्पेशल प्रोग्राम इंटरपे्रटर की जरूरत होती है। इंटरप्रेटर प्रोग्राम रन टाइम में सोर्स कोड को रन टाइम लाइबे्ररी के साथ जोड़कर मशीन इंन्सटरक्शन में बदल देती है। यह रन टाइम लाइब्रेरी को जोड़ना एवं कनर्वशन की प्रक्रिया प्रत्येक बार होती है जब प्रोग्राम रन होता है। इस कारण कम्पाइल्ड लैंग्वेज में बना प्रोग्राम चलने में इंटरप्रेटर लैंग्वेज में बने प्रोग्राम से तेज होता है। लेकिन इंटरप्रेटेड लैंग्वेज को प्रोग्राम प्लेटफार्म इंडीपेंडेट होता है क्योंकि प्रत्येक प्लेटफार्म] आपरेटिंग सिस्टम के लिये अलग अलग इंटरप्रेटर बनाये जाते है।
जावा प्रोग्रामिंग लैंग्वेज में जावा कम्पाइलर (javac) सोर्स कोड को बाइट कोड (.class file) (एवरेज मशीन लैंग्वेज) में बदल देता है। इस बाउट कोड फाइल (.class file) को किसी भी आपरेटिंग सिस्टम में जावा इंटरपे्रटर (java) को उपयोग करके रन किया जा सकता है। सभी आपरेटिंग सिस्टम के लिय जावा इंटरप्रेटर अलग अलग होता है। इसे वर्चुअल मशीन कहते है। इसलिये जावा को वर्चुअल मशीन प्रोग्रामिंग लैंग्वेज कहा जाता है।
वर्चुअल मशीन प्रोग्रामिंग लैंग्वेज कम्पाइलड और इंटरप्रेटेड दोनों भाषाओं की खूबियां लिये है। इसमें कम्पाइलर ओैर इंटरप्रेटर दोनों का प्रयोग होता है. सामान्य रूप से कम्पाइलर सोर्स कोड को एवरेज मशीन लैंग्वेज में बदलता है जावा में इसे बाइट कोड कहते है।
विसुअल स्टूडियो डाट नेट में इस एवरेज मशीन लैंग्वेज को MSIL (Microsoft Intermediate Language). कहते है।
वर्चुअल मशीन लैंग्वेज के लिये इंटरप्रेटर एक ऐसे स्पेशल प्रोग्राम होते है जो उस आपरेटिंग सिस्टम के लिये रन टाइम लाइबे्ररी उपलब्ध कराते है। अतः इंटरप्रेटर सभी आपरेटिंग सिस्टम के लिये अलग अलग होंगे। सभी वर्चुअल मशीन इंटरप्रेटर में भिन्न रनटाइम लाइबे्ररी होंगी क्योंकी सभी आपरेटिंग सिस्टम की अलग अलग रनटाइम लाइबे्ररी होती है। ये इंटरप्रेटर रन टाइम में उपयुक्त रनटाइम लाइबे्ररी एवरेज मशीन कोड या बाइट कोड में प्रोग्राम में रन होते समय जोड़ देते है। एक ही बाइट कोड किसी भी आपरेटिंग सिस्टम (Windows, Mac OSX or Linux) में उसके इंटरप्रेटर की सहायता से उसमें रन हो जायेगा।
वर्चुअल मशीन प्रोग्रामिंग लैंग्वेज में सोर्स कोड से बाइट कोड native code (Machine Code or Binary code) का कनवर्जन प्रोग्राम रन होने के पहले ही हो जाता है इसलिये ये इंटरप्रेटेड लैंग्वेज के प्रोग्राम से फास्ट होते है। सभी आपरेटिंग सिस्टम के लिये अलग अलग इंटरप्रेटर होने से इस लैंग्वेज को पोर्टेबिलटी भी मिल जाती है।