What is Mono?
If you are into Linux or Visual Studio development you may have surely heard of Mono. Mono is an open development project sponsored by Novell which aims to create an open source version of the Microsoft .Net development environment that runs on UNIX-like operating systems (Linux, BSD, UNIX, etc.). Mono enables developers working on UNIX-like platforms to develop cross platform .NET applications that run on similar operating systems. Mono defines itself as "An open source implementation of Microsoft's .Net Framework based on the ECMA [formerly European Computer Manufacturers Association, now known as Ecma International] standards for C# and the Common Language Runtime."
Mono provides cross platform capabilities for applications by compiling applications to an intermediate language instead of machine code. This way Mono makes it possible to copy binaries across platforms by using the intermediate language included in the .NET runtime of Mono.
Mono is made up of the following components:
Mono runtime: Mono runtime provides the just in time compiler, library loader, garbage collector, threading, and interoperability.
Base Class Library: A set of classes compatible with Microsoft .Net framework to provide a foundation to build applications upon.
Mono Class Library: A set of classes to provide additional functionality often useful in building Linux applications.
C# Compiler: The C# compiler.
Mono supports the following languages:
MonoDevelop can be considered as the Visual Studio IDE equivalent and the main development tool on Mono. It supports plenty of languages like C#, Visual Basic.NET, Java, C, C++ etc. It has features you would often expect in an advanced development IDE like Intellisense, integrated web designer, Source control, Class Management, Built-in Help, Add-ins etc. Apart from Linux it also runs on Windows and Mac OS X. However there is no windows installer available and you have to build it from the source.
Benefits of Mono
Linux application development has been traditionally done in C or C++ with languages like Python, etc. gaining popularity lately. However, Mono offers a unique benefit for developers who are already well versed with languages like C# and who have been building applications for Windows. For them, the learning curve involved in developing a Linux application after moving from Windows development is a lot less steep when compared to Linux development using C/C++. It also allows for rapid application development by letting you use its comprehensive set of class libraries. Mono automatically takes care of critical factors like memory management, reflection, threading, etc., and hence saves a lot of time and trouble writing code for the same. Moreover as Mono is cross platform running even on devices like Sony PlayStation 3 and Apple iPhone, your application developed using Mono can run nearly on any computer.
Some Mono Applications
Mono has been around for quite some time and there is quite an amount of active development going on around it. Here are a few Mono applications worth mentioning.
Bluefunk: A music player for Gnome developed using the Mono platform.
XBGM#: Xbox Game Manager.
gTVListings: A TV listings management program
Banshee: Media Player built upon Mono platform.
MediaNET: A software content manager tool.
Kurush: Personal Finance Tool