Common Language Infrastructure

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.

Áttekintés

A Common Language Infrastructure (CLI) áttekintése

Többek között a CLI specifikáció a következő négy aspektust írja elő:

A Common Type System (CTS) (közös típusrendszer)
Adattípusok és műveleteik készlete, amelyen minden CTS fordítású programozási nyelvnek osztoznia kell.
A Metadata (metaadatok)
Nyelvfüggetlen információk a program szerkezetéről, emiatt nyelvek és eszközök számára átjárható. Segíti az együttműködést egy általunk nem ismert nyelven írt programmal.
A Common Language Specification (CLS) (közös nyelvi specifikáció)
Alapszabályok halmaza, amelyeknek minden CLI-t célzó nyelvnek meg kell felelnie, hogy együtt működhessen más CLS-vel fordított nyelvekkel. A CLS szabályok magukban foglalják a Common Type System egy részét.
A Virtual Execution System (VES) (virtuális végrehajtórendszer)
A VES betölti és végrehajtja a CLI-kompatibilis programot, futásidőben kombinálja a kód különböző részeit a metaadatok alapján.

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.

Szabvány és licenc

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]

Implementációk

  • .NET Framework a Microsoft eredeti kereskedelmi implementációja. Virtuális végrehajtó rendszere a Common Language Runtime és a Standard Libraries megvalósítója a Framework Class Library.
  • .NET Compact Framework a Microsoft kereskedelmi implementációja hordozható eszközökre és Xbox 360-ra.
  • .NET Micro Framework nyílt forrású implementáció korlátozott erőforrású eszközökre.
  • Shared Source Common Language Infrastructure egy referencia implementáció a Microsofttól, a Shared Source licensszel.
  • .NET Core hordozható és modulmentes implementáció a Microsofttól. A .NET Foundation .NET Frameworkje a MIT license-et használja.
  • Mono a CLI és társult technológiáinak nyílt kódú implementációja, a Xamarin pénzügyi támogatásával.
  • Portable.NET, a dotGNU projekt része, az ECMA-335 szabad implementációja a Free Software Foundationtől.

Jegyzetek

  1. a b ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)
  2. a b Standard ECMA-335 - 6th edition (June 2012)
  3. The ECMA C# and CLI Standards - Port 25: The Open Source Community at Microsoft, 2009. július 6. [2013. június 22-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. április 24.)
  4. a b Covered Specifications | Microsoft Open Specifications

Fordítás

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.

  • Informatika Informatikai portál • összefoglaló, színes tartalomajánló lap