Zajednička jezička infrastruktura

**Zajednička jezička infrastruktura** (Common Language Infrastructure, **CLI**) je otvorena specifikacija i tehnički standard koji je prvobitno razvila kompanija Microsoft, a standardizovali su je ISO/IEC (**ISO/IEC 23271**) i Ecma International (**ECMA 335**). Ova specifikacija opisuje izvršni kod i okruženje za izvršavanje koje omogućava korištenje više jezika visokog nivoa na različitim računarskim platformama bez potrebe za ponovnim pisanjem koda za specifične arhitekture. Ovo podrazumijeva da je CLI neutralan prema platformama.

.NET Framework, .NET i Mono su implementacije CLI-ja. Format metapodataka također se koristi za definisanje API specifikacija koje nudi Windows Runtime.

## Pregled 
mini|323x323piksel| Vizualni pregled zajedničke jezičke infrastrukture (CLI)
Između ostalog, specifikacija CLI-a opisuje sljedećih pet aspekata:

# *Zajednički sistem tipova (Common Type System, CTS)* Skup podatkovnih tipova i operacija koji su zajednički za sve programske jezike koji su u skladu s CTS-om.
# *Metapodaci* Informacije o strukturi programa koje su neovisne o jeziku, omogućavajući njihovu referencu između različitih jezika i alata. Ovo olakšava rad s kodom napisanom u jeziku koji programer trenutno ne koristi.
# *Zajednička jezička specifikacija (Common Language Specification, CLS)* CLS, koji predstavlja podskup CTS-a, obuhvata pravila kojima se moraju pridržavati komponente razvijene s podržanim jezicima ili za njih. Ova pravila se primjenjuju na: **Korisnike** (programere koji programski pristupaju komponentama usklađenim s CLS-om), **Okvire** (programere koji koriste prevodioce jezika za kreiranje biblioteka usklađenih s CLS-om), **Proširivače** (programere koji stvaraju alate poput prevodilaca jezika ili parsere koda koji generiraju komponente usklađene s CLS-om).
# *Virtuelni sistem izvršavanja (Virtual Execution System, VES)* VES učitava i izvršava CLI-kompatibilne programe, koristeći metapodatke za kombinovanje odvojeno generisanih dijelova koda u vrijeme izvršenja. Svi kompatibilni jezici se kompajliraju u Zajednički međujezik (Common Intermediate Language, CIL), koji je apstraktni jezik neovisan o hardverskoj platformi. Pri izvršavanju koda, VES specifičan za platformu kompajlira CIL u mašinski jezik prema hardveru i operativnom sistemu. U standardu CLI, koji je prvobitno razvila kompanija Microsoft, VES je implementiran pomoću Zajedničkog jezičkog okruženja (Common Language Runtime, CLR).

5. *Standardne biblioteke*

Skup biblioteka koje pružaju mnoge uobičajene funkcije, poput čitanja i pisanja datoteka. Njihovu osnovu čini **Osnovna klasa biblioteke** (Base Class Library, BCL).

## Standardizacija i licenciranje 
U augustu 2000. godine, Microsoft, Hewlett-Packard, Intel i drugi su radili na standardizaciji CLI-a. Do decembra 2001. godine, Ecma je usvojila standard, dok je ISO/IEC standardizacija uslijedila u aprilu 2003. godine.

Microsoft i njegovi partneri posjeduju patente za CLI. Ecma i ISO/IEC zahtijevaju da svi patenti, neophodni za implementaciju, budu dostupni pod "razumnim i nediskriminatornim (RAND) uslovima." Uobičajeno je da RAND licenciranje zahtijeva određene naknade za korištenje, što može izazvati zabrinutost u vezi s Mono projektom. Od januara 2013. godine, ni Microsoft ni njegovi partneri nisu identifikovali patente neophodne za implementacije CLI-a koji bi podlijegali RAND uslovima.

Od jula 2009. godine, Microsoft je dodao C# i CLI na listu specifikacija na koje se primjenjuje **Microsoft Community Promise**, omogućavajući svima da sigurno implementiraju određena izdanja standarda bez straha od tužbi za patente od strane Microsofta.

Implementacija CLI standarda zahtijeva usklađenost s jednim od podržanih i definiranih profila standarda, od kojih je najmanji **kernel profil**. Kernel profil zapravo sadrži vrlo mali skup tipova u poređenju s poznatom osnovnom bibliotekom koja dolazi s podrazumijevanim instalacijama .NET-a.

Međutim, klauzula o usklađenosti u CLI-u omogućava proširenje podržanog profila dodavanjem novih metoda i tipova u klase, kao i izvedenih elemenata iz novih prostora imena. Ipak, nije dozvoljeno dodavanje novih članova u interfejse. Ovo znači da se funkcionalnosti CLI-a mogu koristiti i proširivati, pod uslovom da implementacija usklađenog profila ne mijenja ponašanje programa namijenjenog za taj profil, dok se istovremeno dopušta neodređeno ponašanje programa specifično napisanih za tu implementaciju.

Godine 2012. Ecma i ISO/IEC objavili su novo izdanje CLI standarda.

## Implementacije 
* . NET Framework je Microsoftova originalna komercijalna implementacija CLI. Podržava samo Windows. Zamijenio ga je . NET u novembru 2020.
* . NET , ranije poznat kao . NET Core je besplatni multi-platformski nasljednik . NET Framework, objavljen pod MIT licencom
* . NET Compact Framework je Microsoftova komercijalna implementacija CLI za prijenosne uređaje i Xbox 360 .
* . NET Micro Framework je implementacija CLI otvorenog koda za uređaje sa ograničenim resursima.
* Mono je alternativna open source implementacija CLI i pratećih tehnologija, uglavnom se koristi za razvoj mobilnih aplikacija i video igara.
* DotGNU je deaktivirani dio GNU projekta započetog u januaru 2001. koji je imao za cilj da obezbijedi besplatan softver otvorenog koda kao alternativu Microsoftovom . NET Framework .

## Također pogledajte 
* Standardne biblioteke (CLI)
* Lista CLI jezika
* . NET Standard

## Reference 
## Dodatna literatura 
* 
* 
* 
* 

## Vanjski linkovi 
* 

Kategorija:ISO standardi
Kategorija:IEC standardi