Mono, l'alternative 'open source' à .NET

.NET est certes gratuit, mais il n’existe que sous Windows. Son utilisation dans un cadre serveur peut également être problématique. Mono résout tous ces problèmes

Le projet open source Mono, sponsorisé par Novell, fournit des outils de développement et un environnement d’exécution compatibles avec .NET. Mono 1.2.6 se place entre les versions 1.1 et 2.0 de la technologie Microsoft. Il sera donc capable d’exécuter directement la plupart des applications .NET du marché. Au besoin, le Mono Migration Analyzer (MoMA) facilitera l’adaptation des applications .NET aux limitations de Mono. A contrario, les applications développées avec Mono fonctionneront systématiquement sous .NET.

Le gros avantage de Mono réside dans son vaste support des systèmes d’exploitation : Windows, Mac OS X, Linux, Solaris et la famille des BSD (NetBSD, OpenBSD et FreeBSD). De nombreux langages peuvent être utilisés pour le développement des applications. Des compilateurs C#, Visual Basic.NET et JavaScript sont bien évidemment intégrés en standard. D’autres langages de programmation sont accessibles en option : Boo (proche de Python), Cobra, Forth, Java (IKVM), Lisp, Logo, Nemerle, Oberon, PHP, Python et Smalltalk. La compilation de code C/C++ est rendue possible par l’entremise du projet gcc4cil.

mono1.png

Une machine virtuelle performante

Le code est compilé dans un langage intermédiaire (CIL) que la machine virtuelle exécutera de façon rapide, grâce au compilateur just-in-time intégré. Ce dernier est optimisé pour les processeurs x86, x86-64 (AMD64 et EM64T), PowerPC, SPARC (32 bits uniquement), IA64 (Itanium 64 bits), S390 (32 bits et 64 bits), ARM, Alpha, MIPS et HPPA.

Comparé à Java 6, le code s’exécute légèrement moins vite, tout en consommant moins de mémoire. Le tableau de test présenté ici fait apparaître une vitesse de traitement exceptionnelle : Mono n’est pas ridicule face au C, et loin devant les langages interprétés comme Python ou PHP. Plus amusant, si vous utilisez les compilateurs PHP et Python conçus pour Mono, votre code s’exécutera bien plus rapidement qu’avec les interpréteurs communément utilisés.

Des applications en un tournemain

La création d’interfaces graphiques sous Windows passe par les Windows.Forms. Mono implémente ce toolkit de façon imparfaite, mais pour l’ensemble des plate-formes disponibles. Gtk# est nettement plus puissant. Cependant, gardez bien à l’esprit que si votre application doit être exécutée sous l’environnement d’exécution .NET de Microsoft, vous devrez impérativement distribuer les packages Gtk# et Gtk, ce qui peut se révéler fastidieux. D’autres toolkits sont accessibles : Qyoto (Qt/KDE), wxNet (wxWindows), Cocoa# (Cocoa) et Gnome.

Dans l’absolu, un simple éditeur de texte est suffisant pour créer du code utilisable par Mono, et ceci quelque soit le toolkit graphique utilisé. Un environnement de développement (IDE) facilitera cependant le travail. MonoDevelop inclut ainsi un créateur d’interface Gtk# très puissant. Cet IDE n’est cependant pas encore disponible sous Windows ou Mac OS X (l’adaptation vers Windows est en cours). Le cas de SharpDevelop est opposé : il intègre un créateur d’interface Windows.Forms, mais ne fonctionne que sous Windows.

mono2.png

Linux à l’assaut d’ASP.NET

ASP.NET est une technologie intéressante pour créer des applications web de nouvelle génération. Cependant elle nécessite .NET et un serveur Microsoft. Avec Mono, les administrateurs web peuvent déployer des applications ASP.NET 1.1 (et, avec quelques limitations, ASP.NET 2.0) sous d’autres systèmes d’exploitation. N’importe quel serveur Linux peut donc diffuser des applications ASP.NET, grâce à Mono !

Le serveur Mod_Mono apporte le support ASP.NET à Apache, alors qu’xsp est un serveur web clé en main qu’il vaudra mieux réserver aux procédures de test. Le code peut également être appelé de façon traditionnelle – comme nous le ferions avec un CGI écrit en Perl – grâce au module FastCGI… une nouveauté de la dernière version de Mono.

Les composants web implémentés en standard permettent la conception d’applications classiques. Pour aller plus loin, il conviendra d’utiliser les widgets Ajax Gaia, lesquels apportent les éléments nécessaires aux applications web 2.0. Ils sont conçus dans un esprit proche de celui des composants livrés avec .NET.

Et plus encore…

Moonlight est la réponse à Silverlight. Ce produit n’est pas encore intégré dans les distributions de Mono, mais il promet d’être rapidement utilisable. Sa compatibilité se place entre Silverlight 1.0 et 2.0.

mono3.png