Tolong jelaskan mengenai Common Language Runtime

Common Language Runtime (disingkat menjadi CLR) adalah komponen mesin virtual yang terdapat di dalam Microsoft .NET yang merupakan implementasi yang dilakukan oleh Microsoft terhadap standar Common Language Infrastructure (CLI), yang mendefinisikan inferastruktur umum (common) untuk lingkungan pengeksekusian kode-kode dalam berbagai bahasa pemrograman. CLR menjalankan sebuah bentuk bytecode yang disebut dengan Microsoft Intermediate Language (MSIL), yang merupakan implementasi Microsoft terhadap Common Intermediate Language (CIL).

Para pemrogram yang hendak menggunakan CLR harus menulis kode sumber programnya dalam sebuah bahasa pemrograman tingkat tinggi, seperti halnya C#, J#, atau Visual Basic .NET dan beberapa bahasa pemrograman lainnya yang sesuai dengan .NET Framework. Pada saat kompilasi, kompilator bahasa .NET (seperti csc.exe, vbc.exe, atau vjc.exe) akan mengubah kode-kode tersebut menjadi kode MSIL. Pada saat dijalankan (runtime), Just-in-time compiler (JIT compiler) yang dimiliki oleh CLR akan mengubah kembali kode MSIL menjadi kode native yang digunakan oleh sistem operasi. Atau, kode MSIL juga dapat dikompilasi menjadi kode native dalam sebuah langkah terpisah sebelum terjadi proses runtime. Hal ini dapat mempercepat penjalankan perangkat lunak hasil kompilasi, mengingat tidak ada lagi konversi dari kode MSIL menjadi kode native yang sebelumnya telah dilakukan.

Meskipun beberapa implementasi Common Language Infrastructure (CLI), seperti Mono, Portable.NET dan Rotor dapat berjalan di atas sistem operasi selain Windows, CLR hanya dapat berjalan di atas sistem operasi Windows.

Mesin virtual yang dimiliki oleh CLR mengizinkan para programmer untuk mengabaikan banyak detail yang digunakan oleh CPU tertentu yang didesain untuk mengeksekusi program buatannya. Selain itu, CLR juga menyediakan beberapa layanan yang juga penting, di antaranya adalah: