CLR (Common Language Runtime) Nedir

CLR(Common Language Runtime), .NET Framework içinde yer alan bir bileşendir. Bu sebeple öncelikle .Net Framework için küçük bir açıklama yaparak başlamak yararlı olur.

.NET Framework Nedir?
.Net Framework Microsoft tarafından geliştirilmiş olan bir yazılım geliştirme platformudur diyebiliriz. Çeşitli uygulama türlerini geliştirmek için kullanılır. Örneğin, windows uygulaması, web uygulaması, wcf uygulaması bunlardan bazılarıdır. Şuradan görebileceğimiz üzere pek çok versiyonu bulunur ve ilk sürümü (.Net 1.0) 2002 yılında piyasaya sürülmüştür. C# başta olmak üzere geliştiricilere pek çok programlama dili sunar. .Net Framework aşağıdaki bileşenleri bünyesinde barındırır.

  • .NET Class Library
  • Common Language runtime (Bu yazının konusu)
  • Dynamic Language runtime
  • Application domains
  • .Net Framework Security
  • Cross Language interoperability
  • Side by side execution
  • Common Type System

Common Language Runtime Nedir?
Özet bir tanım yapmak gerekirse; geliştirdiğiniz uygulamanın bilgisayarın anlayabileceği bir hale dönüştürülmesidir diyebiliriz.

Örneğin C# programlama dili ile bir web uygulaması geliştirdiğimizi varsayalım. Projemizi derlediğimizde tahmin edebileceğimiz üzere hemen C# Compiler devreye girer ve bu noktada sihirli bir takım işlemler sonrasında bin klasörü altında .dll listesi veya .exe çıktıları oluşur. Yani uygulamamız orta seviyeli bir dile(MSIL – Microsoft Intermediate Language) dönüşür. Bu sayede işletim sistemi bu dosyaları yorumlayabilecek hale gelir. Bu yorumlama işlemini de uygulamayı çalıştırdığımız zaman varsayılan derleme türü ile yani JIT(Just in Time) derleyicisi ile yapar. Bu işlemin ardından artık uygulamamız makine diline(assembly kodlarına) çevrilmiş olur.

Bu örneği aşağıdaki gibi bir diagram ile özetlemek mümkündür:

Peki CLR ne gibi özellikleri bünyesinde barındırır ve ne gibi sorumlulukları vardır? Bunları aşağıdaki gibi sıralayabiliriz:

  • Common Language Specification (CLS)
  • Common Type System (CTS)
  • Garbage Collection (GC)
  • Just In – Time Compiler (JIT)
  • Exception handling
  • Type safety
  • Security
  • Improved performance
  • Language independency
  • Platform independency
  • Architecture independency

Common Language Specification (CLS)
.Net uyumlu bir programlama dili için bazı standartlar olmalıdır ve bu standartlar CLS(dillerin ortak özellikleri) altında toplanmıştır. Yani bir programlama dilinde kullanabildiğiniz bir kütüphaneyi başka programlama dilinde de kullanabilirsiniz. Bu durum diğer diller ile etkileşimin daha güçlü olmasını sağlar. .Net içinde yer alan pek çok kütüphane CLS uyumludur.

Common Type System (CTS)
CLS’nin bir parçasıdır diyebiliriz. Veri tiplerinin diğer programlama dilleri ile uyumluluğunu esas alır. Uygulama geliştirilirken kullanılan temel veri tipleri; Boolean, Byte, Char, Int32 ve UInt64 olarak karşımıza çıkar.

CLR Compiler Types
Just In Time(JIT): Derleme tipi uygulamamız çalışırken o an için derlenmemiş bir bölüm var ise derler ve hafızaya atar. Uygulamanın sonraki çalışmasında hafızadan çalıştırır ve performans sağlanmış olur.

Econo-JIT: Eğer ram tasarrufu yapılmak isteniyor ise bu derleyici türü kullanışlıdır. Çünkü uygulama her çalıştığında yeniden derler ve hafızaya atılmaz. Bu durumu performanstan ödün vermek anlamına gelir.

Pre-JIT: Uygulama çalışmadan önce derleme işlemini yapar ve tüm kodları saklar. Diğer JIT derleyicilerine göre en performanslı olanıdır.

Herkese mutlu kodlamalar dilerim.