Cílem tohoto článku je objasnit, jak funguje .NET Framework a poznat základní terminologii, která s platformou .NET souvisí.
Co je .NET Framework?
Když dnes hovoříme o platformě .NET Framework, mluvíme pouze o jednom ze systémů infrastruktury .NET. Platforma .NET je velmi rozsáhlá a složitá. Její infrastruktura se skládá z několika systémů:
- .NET Framework
- Microsoft Visual Studio.NET
- .NET Enterprise Servers
- Microsoft Windows.NET
V tomto článku bych chtěl objasnit pojmy, které přímo souvisí se systémem .NET Framework. Jedná se především o CLR, CLS, BCL, MSIL a JIT. Jde o základní terminologii, která se pojí s .NET Framework a každý programátor by ji měl znát.
.NET Framework se skládá z běhového systému - CLR (Common Language Runtime) - a knihoven tříd systému .NET Framework - BCL (Basic Class Library - základní knihovny tříd).
Common Language Runtime
Běhový systém CLR si můžeme představit jako virtuální stroj, ve kterém pracují aplikační funkce platformy .NET, kde mají všechny jazyky k dispozici knihovny tříd systému. Jednoduše řečeno, na vašem počítači běží další systém, který spravuje aplikace pro .NET. Pro tento systém existuje obdoba strojového kódu, jde o MSIL. Mnohokrát se setkáte v souvislosti s platformou .NET s otázkou výkonnosti, protože aplikace napsané pro .NET jsou omezeny výkonností prostředí, ve kterém běží, tedy CLR. Tato skutečnost je způsobena tím, že kód není kompilován přímo do strojového kódu, ale do MSIL. Tento nedostatek vynahrazují mnohé výhody, jako řízený kód, jednotný typový systém a správa paměti (garbage collector).
Další výhodou je, že pro platformu .NET můžete vyvíjet v mnoha jazycích. Tato vlastnost se nazývá "cross-language interoperability" - možnost spolupráce mezi jazyky. Je jí dosaženo tím, že každý kompilátor daného jazyka musí splnit CLS (Commnon Language Specification). Jde o určitou sadu pravidel, která musí kompilátor dodržovat, aby aplikace po překompilování fungovaly v .NET.
Knihovny třídy systému .NET Framework
Společná knihovna v praxi znamená, že všechny programovací jazyky, které ji používají, mají teoreticky naprosto stejné možnosti. Opět vyvstává otázka, zda je výhoda, že všechny jazyky umí stejné věci. Dle mého názoru se jedná o dobrou věc, člověk si nemusí pamatovat syntaxi dalších programovacích jazyků a vystačí si pouze s jedním.
Microsoft Intermediate Language - MSIL
Aby mohli tvůrci programovacích jazyků vytvářet další jazyky pro platformu .NET, vyvinul Microsoft jazyk MSIL, který je podobný assembleru. Při kompilaci programu pro systém .NET bere překladač jako vstup zdrojový kód příslušného jazyka a výstupem je právě aplikace v MSIL (ještě se nejedná o strojový kód!). CLR zajistí, že při prvním spustění aplikace se program z MSIL přeloží pomocí JIT (just-in-time) kompileru do strojového kódu. Je možné vyvíjet programy i v jazyce MSIL, ale je to velmi nepraktické. Jazyk MSIL je především zajímavý pro tvůrce programovacích jazyků a kompilátorů.
Just in time
- Generování kódu při instalaci
Při tomto způsobu vytváříte strojový kód přímo při instalaci programu a již se nemusíte bát pomalého prvního spouštění. - Metoda JIT
Jde o běžný způsob kompilace. Metody jsou kompilovány při jejich prvním volání. - Metoda EconoJIT
Jde o způsob kompilace, který je v hodný pro zařízení s omezenými zdroji a nedostatkem paměti. Tímto způsobem zajistíme, že EconoJIT pozastaví kompilaci, pokud má systém nedostatek paměti.