18.3.CLR & Mono

The Mono Project is an open development initiative sponsored by Ximian that is working to develop an open source, Unix version of the Microsoft .NET development and run time platform. Its objective is to enable Unix developers to build and deploy cross-platform .NET Applications. Likewise, this expands the capabilities of Windows programmers, this project opens .NET to non Windows platforms. Mono will implement various Microsoft technologies that have now been submitted to the ECMA for standardization.

The Goal is similar to that of Java, implementing a common virtual machine on multiple operating systems, however you are not restricted to one language.

Like .NET, Mono contains a Common Language Infrastructure (CLI) virtual, machine that contains a class loader, Just-in-time compiler, and a garbage collecting runtime; a class library that can work with any language which works on the CLR; a compiler for the C# language.

Windows has compilers that target the virtual machine from a number of languages: Managed C++, JavaScript, Eiffel, Component Pascal, APL, Cobol, Perl, Python, Ruby, Scheme, Smalltalk, Standard ML, Haskell, Mercury and Oberon. A single object system, threading system, class libraries, and garbage collection system can be shared across all these languages, the CLR.

The CLR and the Common Type System (CTS) enables applications and libraries to be written in a collection of different languages that target the CLR byte code. This means that you could define a class to do algebraic manipulation written 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.

[Tip] See Also:

The Create Assembly Syntax

The External Hosted Create PROCEDURE Syntax