ono is an open source .NET development framework based on the ECMA standards for the Common Language Infrastructure
(CLI) Led by Novell
, the Mono project creates a .NET-compatible set of tools that enable developers to build Linux and cross-platform applications, including a C# compiler and a Common Language Runtime (CLR), that run on Linux, BSD, UNIX, Mac OS X, Solaris, and Windows. (See Figure 1
for a high-level view of the Mono 2.4 architecture.)
|Figure 1. Mono 2.4 Architecture: Here is a high-level view of the Mono 2.4 architecture.|
Mono's current version is 2.4 (as of March 30, 2009). This version provides the core API of the .NET Framework, as well as support for Visual Basic.NET and C# versions 2.0 and (partially) 3.0. LINQ to objects and XML are part of the distribution, but LINQ to SQL isn't. C# 3.0 is now the default mode of operation for the C# compiler, and Windows Forms 2.0 is also now supported.
An implementation of .NET Framework 3.0 is under development in an experimental Mono subproject called "Olive," but a release date for a Mono framework supporting .NET 3.0 has not been announced yet. (Click here to read a brief history of Mono.)
This article explains how to install Mono 2.4 for Windows and then dives into the new version's components and architecture.
Mono 2.4 Installation Overview
To run Mono 2.4 in Windows, you must install the following components:
- Microsoft .NET Framework Version 3.5
- GTK# for .NET Version 2.12.9-2
- MonoDevelop Version 2.1.r136446 (see Figure 2)
- Mono Libraries r135450 (only required for building MonoDevelop from sources)
Click here to download all the necessary components (see Figure 3).
You can download Mono source code from the Novell FTP site (see Figure 4).
Figure 2. Mono Development Environment: Here is a screenshot of the MonoDevelop Graphical Editor.
Figure 3. Required Mono Component Downloads for Windows Platform: Here are all the necessary Mono components for Windows.
Figure 4. Mono Source Code Location for Download: You can download Mono source code from the Novell FTP site.
Mono has support for both 32- and 64-bit systems on a number of architectures, as well as a number of operating systems. Mono also contains a number of components that are useful for building new software:
- A Common Language Infrastructure (CLI) virtual machine that contains a class loader, just-in-time (JIT) compiler, and a garbage-collecting runtime
- A class library that can work with any language that works on the CLR (both .NET-compatible class libraries and Mono-provided class libraries are included)
- A compiler for the C# language (In the future, Mono might develop other compilers that target the Common Language Runtime.)
|Figure 5. Mono Components After Download: Here are all the Mono 2.4 components downloaded to a single folder.|
The CLR and the Common Type System (CTS) enable you to write applications and libraries in a number of different languages that target the byte code. This means, for example, that if you define a class to do algebraic manipulation in C#, that class can be reused from any other language that supports the CLI. You could create a class in C#, subclass it in C++, and instantiate it in an Eiffel program. A single object system, threading system, class libraries, and garbage-collection system can be shared across all these languages.
The MonoDevelop component is an IDE primarily designed for C# and other .NET languages. MonoDevelop enables developers to quickly write desktop and ASP.NET web applications on Linux. It makes it easy for developers to port .NET applications created with Visual Studio to Linux and to maintain a single code base for all platforms.
Figure 5 shows all the Mono 2.4 components downloaded to a single folder.