|
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.
|
|
|