Mono (logiciel)

Page d'aide sur l'homonymie Pour les articles homonymes, voir Mono.
Mono

Développeur Xamarin
Première version
Dernière version 4.6.1 () [1] Voir et modifier les données sur Wikidata
État du projet en développement actif
Écrit en C, C++, C#
Environnement Multiplate-forme
Type Plate-forme
Licence GNU GPL, GNU LGPL ou X11
Site web http://www.mono-project.com

Mono est une mise en œuvre open source (sous licence GNU GPL, GNU LGPL ou X11 selon les éléments) de la plateforme de développement Microsoft .NET basée sur la CLI.

Mono a été initié par Miguel de Icaza au sein de sa société Ximian qui a été rachetée par Novell en 2003. À la suite du rachat de Novell par Attachmate en 2011, Mono a été repris par une société créée pour l'occasion : Xamarin.

Présentation

Mono est une plateforme de développement complète basée sur une mise en œuvre de l'environnement d'exécution de code .NET et des API de base définis à l' ECMA (également normes ISO). Mono supporte pour l'instant la version 4.0 du framework .NET de Microsoft.

Mono propose entre autres :

  • un compilateur C# 3.0, une machine virtuelle, de nombreuses classes de base ; tous ces composants reposent sur les standards Ecma-334 et Ecma-335. Mono propose également un compilateur Javascript et VB.NET ainsi que le portage de Silverlight sous le nom de Moonlight ;
  • des API indépendantes de l’environnement : sécurité, base de données, web services, XML, Web forms ;
  • des API destinées à la programmation sous GNU/Linux et plus particulièrement GNOME : Gtk#, Glade# Gecko#, Gst# ;
  • des API compatibles avec le framework .Net de Microsoft. Il s'agit du portage de briques logicielles non couvertes par une standardisation ECMA, comme ASP.NET, ADO.NET ;
  • un IDE ( environnement de développement intégré) : MonoDevelop, avec notamment le support de la complétion de code ;
  • un outil pour naviguer dans la documentation, Monodoc, qui a l'originalité de pouvoir être modifié par le programmeur qui peut ensuite envoyer automatiquement les modifications au CVS de Mono ;
  • un serveur Web léger entièrement compatible avec la technologie ASP.NET qui permet d'utiliser n'importe quel langage de la plateforme pour générer des sites Web dynamiques. Un module Apache est également disponible.

Comparaison avec la plateforme Java

Souvent comparée à la plateforme Java, cette plateforme en partage de nombreux aspects techniques comme l'utilisation d'un langage intermédiaire (IL pour Intermediate Langage, équivalent du bytecode Java), le support d' application Web, la portabilité, et une API étendue fournie en standard.

Mono se démarque cependant de la solution d' Oracle :

  • la plateforme décrit également un système facilitant l'interopérabilité entre les langages : le programmeur développe dans le langage de son choix mais sa bibliothèque pourra être utilisée par tous les langages de la plateforme, de manière transparente, sans créer de bindings souvent lourds et coûteux à utiliser et maintenir ;
  • des fonctionnalités supplémentaires comme les métadonnées, la détection de débordement ou encore le versioning et la simplicité d'utilisation d'API écrites en C ;
  • une philosophie différente : Java vise avant tout la portabilité du bytecode et des API standards, Mono vise plutôt l'intégration dans l'environnement d'exécution, parfois au détriment de la portabilité.

La plateforme est conçue pour des langages compilés et orientés objet. La mise en œuvre de IronPython a cependant démontré qu'il était possible d'obtenir des performances similaires avec un langage historiquement interprété. Également, la plateforme est interfaçable avec d’autres langages compilés de manière traditionnelle, comme le langage C.

Les composants de Mono

Mono consiste en quatre groupes de composants :

  1. les composants principaux ;
  2. la couche de développement Mono/Linux/GNOME ;
  3. la couche de compatibilité Microsoft ;
  4. les outils.

Les composants principaux incluent le compilateur C#, la machine virtuelle et les bibliothèques de classes de base. Ces composants sont construits selon les normes Ecma-334 et Ecma-335, permettant à Mono de fournir une machine virtuelle en ligne de commande compatible avec les normes établies, libre et ouverte.

La couche de compatibilité Mono/Linux/GNOME fournit des outils pour le développement d'applications en agrémentant les bibliothèques existantes de GNOME et d'autres libres. Cette couche inclut : Gtk# pour du développement d' interfaces graphiques, les bibliothèques permettant d'interagir avec le moteur de rendu Gecko de Mozilla, les bibliothèques d'intégration Unix, les bibliothèques de connexion aux bases de données, une couche de sécurité et le schéma de langage XML RelaxNG. Gtk# permet aux applications Mono de s'intégrer naturellement dans l'environnement de bureau GNOME. Les bibliothèques de connexion aux bases de données permettent l'interaction avec les bases MySQL, SQLite, PostgreSQL, Firebird, Open Database Connectivity (ODBC), Microsoft SQL Server (MSSQL), Oracle, db4o et plusieurs autres. Le projet Mono trace le développement des composants de connexion aux bases de données dans son site web.

La couche de compatibilité Microsoft propose une manière de porter aisément des applications Windows .NET vers GNU/Linux. Ce groupe de composants inclut, entre autres choses, ADO.NET, ASP.NET et Windows.Forms. Puisque ces composants ne sont pas couverts par les normes ECMA, ceux-ci restent sujets à l'inquiétude relevant des brevets et licences détenues par Microsoft.

Les outils rassemblent les outils nécessaires au développement des applications .NET sur les plateformes autres que Windows. Ceci inclut l' EDI MonoDevelop ainsi que ses composants, comme son débogueur.

Le schéma suivant résume la situation du projet par rapport au .NET Framework ainsi que les séparations entre les différents composants et leurs disponibilités sur les principaux systèmes d'exploitation :

Structure du projet Mono et comparaison avec Microsoft .NET
Other Languages
العربية: مونو (برمجة)
български: Моно софтуер
català: Projecte Mono
čeština: Mono (platforma)
español: Proyecto Mono
Bahasa Indonesia: Mono Framework
italiano: Mono (progetto)
Nederlands: Mono (software)
norsk bokmål: Mono (programvare)
português: Mono (projeto)
русский: Mono
slovenčina: Mono (platforma)
slovenščina: Mono (razvojno okolje)
српски / srpski: Mono
українська: Mono
Tiếng Việt: Mono (phần mềm)
中文: Mono