Common Language Infrastructure
Pojem Common Language Infrastructure (CLI) (dalo by se přeložit jako společná infrastruktura programovacích jazyků, ale nepřekládá se) je otevřená specifikace vyvinutá nejen firmou Microsoft. Popisuje vlastnosti proveditelného kódu a prostředí pro jeho běh (runtime environment), které tvoří jádro Microsoft .NET Framework. Specifikace definuje prostředí, které umožňuje používání více vysokoúrovňových programovacích jazyků na různých počítačových platformách, aniž by bylo nutné přepisovat jejich překladače s ohledem na zvláštnosti konkrétní architektury.
Zdůrazněme ještě jednou, že CLI je specifikace, a nikoliv implementace. Často se totiž zaměňuje s implementací Common Language Runtime (CLR), která zahrnuje detaily přesahující rámec specifikace CLI.
Specifikace CLI mimo jiné popisuje následující čtyři aspekty:
- The Common Type System (CTS) – sada datových typů a operací, které se používají v mnoha programovacích jazycích.
- Metadata – Informace o struktuře programu je popsána jazykově nezávislým způsobem, takže může být zpřístupněna z různých jazyků a prostřednictvím různých nástrojů. Díky tomu lze snadno pracovat i s kódem, který byl napsán v jazyce, který nepoužíváte.
- Common Language Specification (CLS) – sada základních pravidel, která by měl splňovat každý jazyk vyhovující specifikaci CLI. Cílem je dosažení vzájemné spolupráce s ostatními jazyky splňujícími specifikaci CLI.
- Virtual Execution System (VES) – VES zavádí a provádí programy slučitelné se specifikací CLI. Používá metadata k tomu, aby zajistil spolupráci samostatně vytvořených kusů kódu za běhu programu.
Všechny kompatibilní jazyky jsou překládány do společného mezijazyka (v žargonu Microsoftu mezilehlého jazyka), označovaného jako Common Intermediate Language (CIL). Ten je nezávislý na hardwarové platformě. Při vlastním provádění kódu zajistí VES kompilaci CIL do strojového kódu, který je závislý na konkrétním hardware.
Na vzniku standardu ECMA-335 se podílely následující organizace: Borland, Fujitsu, Hewlett-Packard, Intel Corporation, International Business Machines, ISE, IT University Copenhagen, Microsoft Corporation, Monash University, Netscape, Novell Corporation, OpenWave, Plum Hall, Sun Microsystems a University of Canterbury New Zealand.