Mono Implementation

Besides the core .NET features, there are many under the hood, in the class library. This chapter will take a look at what work the mono project has done, and with what technologies you can work.

Technologies implemented

C# language

Mono includes an implementation of the C# language, a language originally developed by Microsoft and that has now been standarized by the ECMA and ISO groups.

The C# language takes various elements from the Java, C++ and Smalltalk systems.

using System;

class HelloWorld {
    public static void Main() {
        Console.WriteLine("Hello, World!");
    }
}

VB language

The Basic language hasn't really changed over the years. VisualBasic.NET however fixes many issues, Basic is now as powerful, as C# or other languages. Mono ships with a CIL compiler, making the language just as worthy as C#. Thanks to language-independence classes written in MonoBasic can be used in C# as well. The lack of a good supported Basic implementation on Unix has finally be fixed.
Imports System

Module Test
        Sub Main()
                Console.WriteLine ("Hello World!")
        End Sub
End Module

LOGO language

Mono brings the LOGO language to the Gnome desktop (but also to Windows, MacOS, KDE). Like all mono languages it can make use of the class library, thus supporting Database and XML applications.
Print "|Hello world!|

ADO.NET

Mono provides a common interface to Databases, so chnaging will be very easy. The mono hackers put much work into this. You will hardly find a database not supported, either directly, or through ODBC or libgda. Very portable, works on all platforms.

ASP.NET

ASP.NET is the best Framework I've seen so far, for developing WebSites and -Services. It's language independent, too. Imagine a webpage written in pascal, LOGO, basic, C#, C++, ... . You can access all the class library features and it's very fast, because all libraries are compiled. ASP.NET also features WebForms, that make HTML elements accessible as objects and removes the lack of state in HTTP.

GTK#

With Ximian comming from a Gnome background, Mono has first class Gnome bindings. GTK+, but also Glade, gnome-db and GStreamer are supported. Those libraries are ported to most (if not all) Unixes, MacOS X and Windows and nicely integrate with the Gnome desktop. There is also on-going work to use native widgets on windows and MacOS X. Cross-platform is possible!

QT#

QT# has been started by the KDE community and provides a binding to the KDE developer libraries. The underlying libraries are available on Windows and MacOS X as well, but are only free on Unix.

XML

Mono has perfect support for Xml, with many parsers and processing libraries.

Tools

Mono offers a C and .NET debugger, with the ability to use console or GUI frontends, IL assembler and disassemblers. There are also several productivity applications, like a build tool and Unit testing from third--party projects.

Also there is to mention the mono documentation browser.

2. Classes implemented

3. Classes not implemented

While mono tries to implement all classes, those are either not started or have not progressed enough.

4. Mono's additional classes

While with about 3000 classes the .NET Framework is quite feature rich, there are serveral bits that are missing. Mono tries to solve this, by introducing a new namespace, and offering the multiplatform GUI GTK+. Compatiblity is kept, all classes are known to run with the MS implementation.

I. Extended .NET: The Mono.* namespace

II. Extended .NET: Multiplatform GUI through Gtk#

II. Differences on Unix/Windows/MacOS X

The mono classes don't need to be ported. However if the underlying library isn't available for a certain platform, some classes might not work there.

A. Credits

Author: Johannes Roith (johannes@jroith.de)