Článek popisuje otevřené implementace standardizovaných částí .NET Frameworku, které v jisté míře umožňují běh .NET aplikací na jiných platformách, než je platforma Windows.
Někteří se domnívají, že doménou technologie .NET je operační systém Windows, ale není to tak úplně pravda, protože existuje několik různě kvalitních otevřených implementací .NET Frameworku. Vytvoření těchto implementací umožnila standardizace CLI a jazyka C#. Já se tu budu zabývat především projektem MONO.
Projekt MONO
Domovská stránka projektu je: http://www.mono-project.com
Jedná se o OpenSource implementaci .NET Frameworku, kterou sponzoruje firma Novell. Za projektem stojí Miguel de Icaza, tedy člověk, který stál i u zrodu desktopového prostředí GNOME. Na LinuxWorld 2006 získal projekt ocenění „Best Application Development Platform or Tool“. MONO se snaží o implementaci dalších knihoven z .NET Frameworku, které nejsou standardizovány, např. knihovny pro WinForms, ASP.NET a ADO.NET. MONO je neustále ve vývoji a v současné době obsahuje kvalitní implementaci CLI, funkční implementaci ASP.NET a ADO.NET. Implementace WinForms je zatím v experimentální podobě, a tak je nutné pod Monem využívat třeba GTK#.
Některé nástroje obsažené v MONU:
› MCS – kompilátor pro jazyk C#, který je sám vytvořený v C#.
› Mono – běhové prostředí pro vaše aplikace. Může provádět buď JIT nebo AOT kompilaci. MONO také obsahuje několik možností pro optimalizaci kódu.
› Monodoc – dokumentace Mona, která používá GTK#
› Xsp – jednoduchý ASP.NET web server
› Mod-mono – modul pro Apache umožňující běh ASP.NET stránek
› Mono-debugger – nástroj na ladění .NET aplikací
MONO už podporuje docela velké množství jazyků, mezi které patří i C#, Java, Boo, VB.NET, Python, JavaScript, PHP a některé další. Vývojáři plánují dovést podporu WinForms do použitelné podoby a plnou implementaci .NET 2.0.
Pro MONO je dostupné vývojové prostředí s názvem MonoDevelop, které sice nedosahuje kvalit Visual Studia, ale nabízí téměř vše potřebné k vývoji – správu projektu, editor kódu se zvýrazněním syntaxe, GTK# designer, IntelliSense a další. Jediné, co může výrazně chybět, je ASP.NET designer a integrovaný debugger. Prostředí je samozřejmě rozšiřitelné pluginy. V budoucnu by se měl objevit WinForms a ASP.NET designer.
DotGNU
Domovská stránka projektu: http://www.dotgnu.org/
DotGNU je velmi podobný projektu MONO a má stejné úmysly. Má vlastní implementaci WinForms, která bohužel k běhu využívá emulátor Wine, horší implementaci CLI a špatně fungující JIT kompilaci. Informace o JIT kompilaci najdete i zde na tomto serveru. Zajímavá je možnost v určitých případech kompilovat C# do Java byte kódu.
SSCLI – Rotor
Domovská stránka projektu: http://research.microsoft.com/sscli
Rotor je implementace CLI standardu od Microsft Research týmu a je dostupná se zdrojovými kódy. Celý název Rotoru je Shared Source Common Language Infrastructure. Jeho použití je licenčně omezené, a proto si vývojáři projektu MONO dávají pozor, aby se nějaká část jejich kódu neshodovala s kódem Rotoru. Narozdíl od projektu MONO a DotGNU je v Rotoru implementováno pouze to, co je součástí standardu a neobsahuje žádné další knihovny. Projekt pro podporu Generics, který vznikl pod SSCLI se dostal i do .NET 2.0.
Na závěr
O implementace, jako je projekt MONO, se zajímám stále více, takže se časem může objevit i nějaký zajímavý článek na toto téma. Nemohu tu objektivně říct, jestli mají tyto implementace nějakou velkou budoucnost, ale myslím, že některá z nich určitě ano. Pravděpodobně bude nějakou dobu trvat, než .NET aplikace dosáhnou možností jako C++ aplikace nebo Java aplikace, protože originální .NET Framework bude většinou v něčem napřed, ale pokud už se rozhodnete používat .NET na alternativních OS, tak určitě zvolte projekt MONO, protože ze všech jmenovaných nabízí největší možnosti a dosahuje nejvyšších kvalit.