What is Mono? And why we should love it?

The ever-expanding smartphone market redefines the way we think of applications, it gives the developers the new pathways for the creativity, minimizes the development and allows to create new applications for the users need and for better choice.
With this also comes the new problem: working with different platforms the developers have to come across with different languages and completely different systems and as consequence need different skillsets. Cross-platform development seems to resolve all the mentioned problems above.

Save time and money

This is the main idea to emphasize the positive points towards cross platform development – building cost effective and secured mobile applications.

In the list below briefly are presented the key advantages that cross platform development could offer:

  • Free and open source
  • Reduce development and long-term maintenance cost;
  • Reduce the number of required skills for the development team
  • Single code for building mobile apps for iPhone and Android platform
  • Supports all major mobile platforms include iPhone, BlackBerry, Android, Windows mobile and Symbian

What is Mono?

One of the leading cross-platform solutions is considered Mono project. Mono is a software platform, open source implementation of .NET framework designed by Xamarianto allow developers easily create cross platform applications using purely C#. Mono can be run on many mobile operating systems including Android, BSD, iOS, Linux, OS X,Windows, Solaris, Unix.

In 2009 and in 2011 were released under the commercial version two implementations of Mono – MonoTouch and MonoDroid, for iPhone and Androidsmart – phones.

Mono and .NET assemblies

At the current moment Mono realizes almost all technologies used in MS.NET defined by the ECMA standard. Some of them are:

  1. Common Language Environment (CLR) – the base of the .NET Virtual machine. In case of the program compilation .NET compiler creates the code on the Common Intermediate Language – CIL. At the moment of processing CLR transmits CIL in the real processor byte-code and it allows .NET application being as speed effective so the traditional ones. Besides the leading C#, there are others compiler languages realized in Mono: F#, Java, Scala, Boo, Nemerle, JavaScript, Oberon, LUA, Cobra, PHP, Object Pascal etc.

  2. Garbage Collector (GC) is based on the library of garbage collector Boehm. This library works on the old algorithm and search objects only in the older generation memory pool, given by GC.

  3. Besides reimplementation of MS .NET libraries: ADO.NET, System.Windows.Forms, and ASP.NET.

Mono developers also created their own libraries which provide functional parity and being free from any concern of patent infringement. Some of them are:

  • GtkSharp (Gtk#) – a set of C# bindings for the gtk+ toolkit, and assorted GNOME libraries. This enables application developers to write fully native GNOME application using Mono.
    Also there are complementary libraries that might be useful while developing Gtk# based applications or Gnome applications: Gnome-KeyRing-Sharp, GSF Sharp, GtkGlArea Sharp, WebKit Sharp, GtkMozEmbed Sharp, GtkSourceView etc.
  • Mono.Cecil: library to generate and inspect CIL assemblies.
  • #ZipLib: library to manipulate various kinds of compressed files and archives (Zip and tar).
  • Tao Framework: bindings for OpenGL

Mono benefits

Mono gives the programming power and flexibility of building applications. Mono allows creating the existing code on the independence language making the platform independent. This happens because .NET code not compiled to machine code but to intermediate language (IL). So it makes possible to copy binaries across platforms.

Mono also provides a time-saving free implementation of the .NET framework class library. This library is already written and tested code designed for a variety of common programming tasks. The library includes most common data structures, cryptographic libraries, XML, and Web services support.

What should I pay for Mono?

You can get it for free (without paying) and it is available in under open source licenses that allow this. But you could still pay for it too because not everything written with Mono is free. So for creating the applications, in this case the commercial license, from the copyright holders, is needed.

More information about Mono project you could find, following the links below:


Thank you for your attention and hope this information will be interest of you! Please feel free to leave your comments and considerations on this point.