Pour les articles homonymes, voirCLI.

LaCommon Language Infrastructure (CLI) est unespécification ouverte développée parMicrosoft pour sa plate-forme.NET qui décrit l'environnement d'exécution de lamachine virtuelle basé surCIL. La spécification définit un environnement qui permet d'utiliser de nombreux langages de haut niveau sur différentes plates-formes sans nécessité de réécrire le code des architectures spécifiques.
Le code répondant aux spécifications CLI est dit« managed code » en anglais, littéralement « code géré », ce qui est parfois traduit abusivement par « code managé ».
L'implémentation de la CLI inclut des fonctions pour gérer les erreurs, leramasse-miettes, la sécurité et l'interopérabilité avec lesystème d'exploitation (les objets COM pour Microsoft Windows, gtk pour Mono de Novell)
La spécification CLI entre autres choses aborde trois aspects
Plusieurs implémentations de la CLI et des bibliothèques (Microsoft) existent, notamment dans Mono et Portable.NET. Puisque lemoteur d'exécution est décrit par une spécification de l'ECMA et de l'ISO, les autres implémentations ne sont pas gênées par des problèmes de copyright. Il est plus difficile de développer des alternatives aux bibliothèques de classes de bases (BCL) qui ne sont pas décrites dans unstandard ouvert et peuvent être sujet à des problèmes de copyright. De plus certaines parties des BCL ont des fonctionnalités et un comportement spécifiques à Windows qui peuvent être problématiques lors de l'implémentation sur des machines ne fonctionnant pas sous Windows.
L'implémentation de la CLI par Microsoft pour ses systèmes d'exploitation est appeléeCommon Language Runtime (ou CLR) etDynamic Language Runtime (ou DLR). Au-dessus de cette implémentation ; Microsoft fournit de nombreux services, outils, bibliothèque, runtime :Framework .NET et.NET Compact Framework, support technique, Visual Studio. L'implémentation de la CLI par Microsoft supporte actuellement plusieurs langages commeC# (mélange deC++ et deJava),C++,J# (proche du Java, mais non compatible) etVisual Basic .NET.
Grâce à la disponibilité des spécifications techniques, différents acteurs sont libres d'ajouter le support pour un autre langage, ou un langage classique (notammentCobol,Pascal,Fortran,Eiffel,Ada) ainsi queASP.NET. D'ailleurs le langagePython est utilisable depuis 2006 grâce au projetIronPython,PHP en étant déjà à cette époque la version 2 du projetPhalanger[1].
Silverlight et Moonlight sont les implémentations respectives de Microsoft et Novell de la CLI s'exécutant dans l'environnement sécurisé d'un navigateur. Il fonctionne comme unapplet. Silverlight est une partie du framework .NET tandis que Moonlight est une partie du projet Mono. Ils respectent donc tous les deux les spécificitésCLI. Silverlight avait pour nom WPF/E pour faire référence à la nouvellebibliothèque graphique deMicrosoft de nomWindows Presentation Foundation fonctionnant sur laCLR. Ces technologies permettent de développer de vraiRIA côté client web. Les langages supportés par ces applets sont les mêmes que ceux supportés par le framework .NET ou Mono.
Mono est une implémentation de la CLI et de portions des bibliothèques de classes de bases (BCL) et fournit quelques fonctionnalités complémentaires. Mono est un logiciel développé sous ladouble licence :logiciel libre etlogiciel propriétaire. Mono est développé parXamarin et sponsorisé parNovell et inclut un support web (ASP.NET, ADO.NET) et OS (Windows Forms). Uncompilateur C# et VB.NET en version beta sont aussi inclus.
Des implémentations alternatives de certaines parties du framework sont listées ici :
En,Microsoft,Hewlett-Packard, etIntel ont travaillé sur la standardisation de la CLI et du langage de programmationC#. Depuis, ces deux standards ont été ratifiés par l'ECMA (ECMA 335 etECMA 334). L'ISO a suivi en (ISO/IEC 23271 etISO/IEC 23270).
L'ECMA et l'ISO ont demandé àMicrosoft et à tous ses partenaires qui détiennent les spécifications de la CLI et deC# de les rendre disponible sous le contrat de licenceraisonnable et non discriminatoireMicrosoft Reference Licence. En plus de cela, ces compagnies se sont accordés pour fournir ces spécifications sans redevance.
Néanmoins, ceci ne s'applique pas pour la partie du .NET Framework qui n'est pas couverte par l'ECMA et l'ISO, ce qui inclut lesWindows Forms,ADO.NET, etASP.NET. Les spécifications queMicrosoft détient dans ces domaines peuvent dissuader les tentatives non-Microsoft d'implémentation du Framework complet.
Le, Microsoft a annoncé qu'une grosse partie ducode source des classes de bases du .NET Framework (Ce qui inclutASP.NET,ADO.NET etWindows Presentation Foundation) seront disponibles avec la sortie deVisual Studio 2008 fin 2007 sous la licenceShared source[2] Les codes sources des autres bibliothèques (Windows Communication Foundation (WCF),Windows Workflow Foundation (WF) etLanguage Integrated Query (LINQ) seront ajoutés plus tard. Le fait de fournir le code source sous la licenceMicrosoft Reference Licence signifie qu'il est fourni à des fins de débogage uniquement, essentiellement pour supporter le débogage des classes de bases sousVisual Studio.
| Composants | |||||
|---|---|---|---|---|---|
| Langages de programmation |
| ||||
| Environnements de développement | |||||
| Bibliothèques complémentaires | |||||