Although the Linux desktop is maturing into an enterprise class offering, developing Linux applications remains a challenging proposition. Today's Linux development environment, although powerful, has a very steep learning curve, and is largely restricted to Python, Perl, C and C++.
Developers are increasingly moving to managed runtime environments such as .NET and Java. In these environments, responsibility for tasks such as creating objects, making method calls, managing memory allocation and operating system resources access is left to language runtime, which provides additional services to the executing code. Managed languages are leaner and safer than languages such as C or C++. However, the Java runtime systems commonly available on Linux lack the performance that customers demand, and Java applications do not conform to the Linux GUI look and feel.
.NET and its new language, C#, however, offer the performance and appearance of native code. With the Common Language Specification for compilers, code can be mixed freely across languages: Java, C, C#, C++, Python, and so forth. In addition, .NET uses an intermediate compilation mechanism that allows cross-platform deployment of binary applications.
The Mono implementation of the .NET development platform provides a superior development environment for writing Linux applications with unprecedented productivity by allowing developers to write rich clients, web services and server-side applications and deploy them on Linux, Netware, MacOS and Microsoft Windows.