Common Language Infrastructure

De Common Language Infrastructure (CLI) is een open specificatie ontwikkeld door Microsoft, die de uitvoerbare code en runtime omgeving beschrijft die de kern vormt van het .NET-framework. De specificatie definieert een omgeving die toestaat verschillende zogenaamde high-level programmeertalen als C# en VB.NET te gebruiken op verschillende platformen, zonder dat ze herschreven moeten worden.

De CLI wordt vaak verward met de Common Language Runtime (CLR), omdat dit de implementatie van de CLI-specificatie is.

CLI-specificatie bewerken

Naast verschillende andere zaken beschrijft de CLI-specificatie de volgende 4 aspecten:

  • Het Common Type System (CTS): Het CTS zorgt voor datatypen, zorgt voor een objectgeoriënteerde basis van .NET.
  • Metadata: Informatie over de logica van een applicatie. Deze metadata is programmeertaal onafhankelijk, zodat tools (zoals compilers en debuggers, maar ook compilers en de VES) gemakkelijk informatie uit kunnen wisselen. Deze metadata wordt ook gebruikt door de VES zelf. (zie punt 4)
  • Common Language Specification (CLS): Een set van regels waar elke CLI-compliante programmeertaal aan moet voldoen zodat ze goed samen kunnen werken met andere talen.
  • Virtual Execution System (VES): Het VES implementeert en versterkt het CTS, laadt de verschillende stukken CLI compliante code in, combineert ze op basis van de metadata van de code en voert ze vervolgens uit. De VES wordt ook wel execution engine genoemd.

Alle compatibele talen compileren naar Common Intermediate Language (CIL). Dit is een hardware-onafhankelijke taal. Pas op het moment dat de applicatie daadwerkelijk wordt uitgevoerd zal de platform specifieke VES de CIL naar machine specifieke (native) code compileren. Dit gebeurt door middel van just-in-timecompilatie.

Standaardisering en licensering bewerken

Augustus 2000 werkten Microsoft, Hewlett-Packard, Intel en anderen samen om CLI te standaardiseren. In december 2001 werd deze standaard bekrachtigd door Ecma International. De ISO-standaardisering volgde in april 2003.

Ecma en ISO vereisen dat alle patenten die nodig zijn om tot een implementatie te komen van een standaard beschikbaar wordt gemaakt onder "redelijke en niet discriminerende" voorwaarden, maar de bedrijven die de patenten hebben op CLI zijn overeengekomen dat de patenten beschikbaar zijn onder de "royalty-free en anders redelijke en niet discriminerende" voorwaarden.

Implementaties bewerken

  • Microsoft .NET framework omvat Microsofts commerciële implementatie van CLI voor desktop systemen, maar slaat ook op een grotere collectie van bronnen, bibliotheken en tools.
  • Shared Source Common Language Infrastructure is een referentiële implementatie van CLI van Microsoft, vrijgegeven onder de shared source licentie.
  • .NET Compact Framework is Microsofts commerciële implementatie van CLI voor draagbare apparaten, zoals PDA's en bijvoorbeeld de Pocket PC.
  • Mono is een populaire open source implementatie van CLI, gesponsord door Novell.
  • Portable.NET een onderdeel van het dotGNU project is ook een open source CLI implementatie.

Referenties bewerken