Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye. |
A Common Language Infrastructure (CLI) a .NET keretrendszer a különböző programozási nyelven írt programok futtatására szolgáló alrendszere. A megjelenése előtt minden nyelvnek saját futtató modulja volt, hogy a lefordított alkalmazás működhessen – a Visual Basic-nek a VBVM-re, a Visual C++ .NET megjelenése előtti Visual C++ verzióknak az MSVCRT DLL-re. A common language infrastructure egy próbálkozás ezen futtató modulok egyesítésére. Kezdeményezője a Microsoft, azóta már az ISO[1] és az ECMA[2] szabályozza.
A CLI egy osztálykönyvtárat és virtuális gépet használ – a Common Language Runtime-ot (CLR). Sok fordító már képes kódot előállítani erre a virtuális gépre. Az előállított kódot Common Intermediate Language-nek (CIL) (korábban MSIL) nevezik. Ez egy CPU-független utasításkészlettel rendelkező nyelv, ami hatékonyan fordítható natív kóddá. A CIL egy magas szintű objektumorientált, verem-alapú assembly nyelvként képzelhető el.
A CIL a Java bájtkód versenytársának, a CLI/CLR pedig a Java Runtime Environment (JRE) versenytársának tekinthető. A .NET Framework, Mono, DotGNU és Portable.NET a CIL implementációja.
Többek között a CLI specifikáció a következő négy aspektust írja elő:
A kompatibilis nyelvek a Common Intermediate Language (CIL)-re fordulnak, ami egy platformfüggetlen köztes nyelv.A kód végrehajtása közben a platform-specifikus VES a CIL-t gépi nyelvre fordítja, alkalmazkodva a hardverhez és az operációs rendszerhez.
2000 augusztusában több cég, köztük a Microsoft, a Hewlett-Packard és az Intel megkezdték a CLI szabványosítását. Ezt az ECMA is elfogadta, amit az ISO szabvány követett 2003-ban.
A Microsoft és partnerei szabadalmat nyújtottak be a CLI-re. Az ECMA és az ISO megköveteli, hogy az implementáció számára fontos szabadalmak megfeleljenek az észszerű és nem diszkriminatív (RAND) feltételeinek. Ez megengedi, hogy a használatért a tulajdonos díjat igényeljen, ami aggodalmat kelthet az ingyenes implementációk számára, mint a Mono. Azonban sem a 2013, sem partnerei nem nyújtottak be ezzel kapcsolatos szabadalmat.
2009 júliusában[3] a Microsoft hozzáadta a C#-ot a Microsoft Community Promise specifikációinak listájához.[4] Így senkinek sem kell félnie attól, hogy a szabvány különböző verzióinak implementálásáért majd a Microsoft beperli. A CLI szabvány implementálásához meg kell felelni a szabvány által meghatározott és támogatott valamelyik profilnak, aminek minimuma a kernel profil. Ez egy nagyon kis része a .NET telepítések alapértelmezett core könyvtárának. A CLI megfelelési záradéka megengedi a támogatott profil bővítését új metódusokkal és típusokkal, továbbá új névterek bevezetését. Viszont nem engedi meg az interfészek bővítését új tagokkal. Ez azt jelenti, hogy a CLI eszközei használhatók és bővíthetők, amíg az implementáció nem változtatja meg a futtatandó programok viselkedését; miközben megengedi, hogy egy speciálisan az adott implementációra írt program nem specifikált módon működjön.
2012-ben az ECMA és az ISO olyan elemekkel bővítette a szabványt,[1][2] amelyek nem részei a Community Promise-nak.[4]
Ez a szócikk részben vagy egészben a Common Language Infrastructure című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.