Common Language Runtime Nasıl Çalışır?

CLR, .NET kodunun çalıştırılmasını (yürütülmesini) idare eder. CLR şu Ģekilde çalışır: Bir
C# programını derlediğinizde, derleyiciden elde edilen çıktı çalıştırılabilir bir kod değildir.
Bilakis bu, Microsoft Intermediate Language (MSIL) denilen özel bir tipte sözde kod
(pseudocode) içeren bir dosyadır. MSIL, spesifik bir CPU‟dan bağımsız olan birtakım
taşınabilir komutlar tanımlar. Astında, MSIL taşınabilir bir Assembly dili tanımlar. Diğer bir
husus da şudur: MSIL her ne kadar Java’nın bytecode’una benziyor ise de her ikisi aynı
değildir.
Program çalıştığı zaman ara kodu çalıştırılabilir bir koda dönüĢtürmek CLR‟in görevidir.
Böylece, MSIL elde edilecek şekilde derlenen her program CLR‟in gerçeklendiği her ortamda
çalıştırılabilir. Bu. .NET Framework’ün taşınabilirimi temin etme biçiminin bir parçasıdır.
Microsoft Intermediate Language, bir JIT derleyici kullanılarak çalıştırılabilir bir koda
çevrilir, “J1T”, “Just-In-Time”a karşılık gelir (yani, “Tam Zamanında” demektir). Süreç şöylegelişir:

Bir .NET programı çalıştığı zaman CLR, JIT derleyiciyi etkin kılar. JIT derleyici
programınızın parçalarının her birine duyulan ihtiyacı temel alarak MSIL’i yerel dile
dönüştürür. Böylece, C# programınız başlangıçta MSIL üretecek şekilde derlenmiş olsa bile
aslında yerel kod gibi çalışacaktır. Bunun anlamı şudur: Programınız başlangıçta yerel kod
üretecek Ģekilde derlenmiş olsaydı, elde etmiş olacağı çalışma hızına yakın bir hızda çalışacak,
üstelik MSIL’in taşınabilirlik avantajlarına da kavuşacaktır.
Bir C# programını derlendiğinizde, MSlL‟e ek olarak elde edilen bir diğer şey de metadata
olarak adlandırılan çıktıdır. Metadata, programınızın kullandığı verileri tarif eder ve kodunuzun
diğer kodlarla etkileşmesini mümkün kılar. Metadata, MSIL ile aynı dosya içinde yer alır.

Common Language Specification

Kontrol altına alınan kodların tümü CLR ile sağlanan avantajlardan yararlanıyor olsa da,
şayet kodunuz farklı dillerde yazılmış programlar tarafından kullanılacaksa, kullanılabilirliği en
üst seviyeye çıkarmak için kodunuzun Common Language Specification‟a (CLS – Ortak Dil
Spesifikasyonu) sıkı sıkıya yapışması gereklidir. CLS, farklı dillerde ortak olan özellikleri tarif
eder. CLS uyumu, diğer diller tarafından kullanılacak yazılım bileşenleri geliştirirken özellikle
önemlidir. CLS, Common Type System‟in (CTS – Ortak Tip Sistemi) bir altkümesini içerir.
CTS, veri tiplerini ilgilendiren kuralları tarif eder. Elbette, C# hem CLS‟i hem de CTS‟i
desteklemektedir.