Novell Inc.'s Mono 1.0 is an open-source implementation of Microsoft Corp.'s .Net development platform that provides companies with the opportunity to pursue the latest Microsoft development technologies while leaving open the door to cross-platform support.
While the .Net Framework targets only Windows, Mono 1.0 supports Linux and Unix platforms, as well as systems running Windows and Mac OS X.
Mono comprises a compiler for the C# programming language, a run-time engine for Microsoft's Common Language Infrastructure and a group of .Net-compatible class libraries that are required for running .Net applications with Mono. These libraries include open-source versions of Microsoft's ADO.Net data access and ASP.Net Web application development technologies.
Using the mod_mono Apache Web server module that ships with Mono 1.0, sites can serve ASP.Net pages with Apache on Linux (the module doesn't support Apache on Windows). This means that companies can make development and production platform choices separately.
Perhaps more important than Mono 1.0's ability to bring certain Windows applications to Linux is that it brings the .Net development model to Linux. A variety of class libraries for developing native Linux applications are included along with Monos .Net compatibility libraries.
In eWEEK Labs tests, for example, we were able to quickly create a simple Web browser in C#, with a GUI based on the Gtk framework and rendering handled by Mozillas Gecko engine.
Although Mono 1.0 is intended to provide full compatibility with pure .Net Version 1.1 applications, .Net applications that make use of native Windows APIs will require porting work to be brought over to Linux.
Applications that use Microsofts WinForms rich user interface classes, which depend on native Windows system calls, can run with Mono using a library based on Wine that ships along with Mono.
Mono 1.0 ships with MonoDevelop, a port of the open-source .Net IDE (integrated development environment) SharpDevelop to Gtk#. MonoDevelop doesn't handle GUI creation-for that, we used the Gtk interface tool Glade.
Mono also includes a documentation browser. We were impressed with the breadth of Mono's documentation, which includes lots of sample projects.
Mono's compiler supports C#, and a Mono compiler for Microsoft's Visual Basic .Net, called MBas, is under development.
Mono ships with IKVM, a Mono-based Java virtual machine, plus implementations of Java class libraries based on work from the open-source project Classpath. IKVM enables sites to run Java applications with Mono and use Java libraries in .Net applications.
Mono 1.0 is available for free download in source code form at www.mono-project.com/downloads.
Mono's run-time engine supports the x86, x86-64, PowerPC, SPARC, S390, StrongARM and HPPA processor architectures on Linux, Windows, HP-UX, Solaris, Mac OS and BSD operating systems. Mono also ships with a native optimizing compiler in both ahead-of-time and just-in-time compilation modes for the x86, SPARC, S390 and PowerPC architectures.
Precompiled, ready-to-install packages are also available through this site for Red Hat Linux 9, Fedora Core 1 and 2, SuSE Linux Enterprise Server 8, SuSE Linux 9.0 and 9.1, Slackware 10, Windows 2000 and above, and Mac OS X Panther.
Senior Analyst Jason Brooks can be reached at firstname.lastname@example.org.