*
 
.NET*
 
.NET: Driving Business Value with the Microsoft Platform 


Języka Java zyskał sporą popularność głównie dlatego, iż może zostać uruchomiony na różnych platformach. Wszystko dzięki maszynom wirtualnym. Microsoft zaczerpnął ten pomysł do platformy .NET. Microsoft Intermediate Language (MSIL), bo to o nim mowa, stanowi pewnego rodzaju kod pośredni pomiędzy kodem źródłowym, a kodem maszynowym (wykonywalnym). Platforma .NET zawiera instrukcję umożliwiające kompilowanie na kod maszynowy i uruchamianie programów, zarządzanie i zwalnianie pamięci. Dzięki temu MSIL pozwala na pełną integrację z różnymi językami programowania.

Możliwość wykonywania aplikacji .NET na procesorach innych niż Intel x86 daje perspektywy na tworzenie programów na inne urządzenia jak telefony komórkowe, czy palmtopy.  
Kod IL przypomina nieco język Asemblera, fragment takiego kodu znajduje się poniżej:


.method family hidebysig virtual instance void
        Dispose(bool Disposing) cil managed
{
  // Code size       30 (0x1e)
  .maxstack  2
  IL_0000:  ldarg.1
  IL_0001:  brfalse.s  IL_0016
  IL_0003:  ldarg.0
  IL_0004:  ldfld      class [System]System.ComponentModel.Container WinForm.TWinForm1::Components
  IL_0009:  brfalse.s  IL_0016
  IL_000b:  ldarg.0
  IL_000c:  ldfld      class [System]System.ComponentModel.Container WinForm.TWinForm1::Components
  IL_0011:  callvirt   instance void [System]System.ComponentModel.Container::Dispose()
  IL_0016:  ldarg.0
  IL_0017:  ldarg.1
  IL_0018:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::Dispose(bool)
  IL_001d:  ret
} // end of method TWinForm1::Dispose



Ciekawostką jest to, że oprócz kodu pośredniego, w pliku umieszczane są także informacje, tzw. metadane. Można powiedzieć, że metadane to opis kodu, lista parametrów funkcji, opis zmiennych oraz innych operacji. To wszystko umieszczane jest w jednym pliku PE (ang. Portable Executable) dając przy tym wrażenie zwykłej aplikacji wykonywalnej z rozszerzeniem *.exe.

Możliwe jest również jednorazowe skompilowanie danego programu od razu na kod maszynowy dzięki temu przy każdym uruchamianiem programu, oszczędzane są zasoby systemowe potrzebne na uruchomienie kompilatora JIT (ang. Just-In-Time).

Wspólny system typów


Microsoft wprowadził pewną nowość w tym zakresie nazwaną wspólnym systemem typów (ang. Common Type System). Polega ona na tym, że każdy język programowania wspierany przez platformę .NET będzie miał identyczne typy danych, programy będą mogły wzajemnie się ze sobą integrować i wymieniać dane.

Wspólny język wykonywania


Wspólny język wykonywania, czyli Common Language Runtime (w skrócie CLR), to podstawowy komponent .NET Framework. CLR jest odpowiedzialny za uruchamianie programów, zarządzanie kodem i pamięcią. Zajmuje się również bezpieczeństwem danych, obsługą błędów oraz konwersją języka IL do postaci maszynowej.

**
**

Microsoft