As sacrilegious as it may seem to zealots on either side of the aisle, the ability to combine C#’s hallmark rapid development capabilities with the renowned stability and security of Unix can be a pretty compelling reason to overlook our petty differences and embrace the possibilities that such a marriage offers.
Problem is, most .NET developers have never ventured outside the Windows environment, while most Unix types look no further than C++ or Java—neither of which offers a tool set as rich or developer-friendly as .NET’s C#. But for those of us who have tasted the fruit from both trees, there is a happy medium. It’s called Mono, and over the last few years it’s gone from fledgling to full-fledged—and it’s worth a second look for anyone who may have dismissed it in the past.
It helps to reminisce a bit about the old days—way back in 2001 when .NET was in beta, C# was brand spanking new, and we Java types wondered whether Microsoft would get away with blatant theft of the Java architecture. Back then, there was so little difference that the two languages were nearly interchangeable. The .NET languages were theoretically just as platform-independent as Java, it was just that no one had done any work on a CLR for another platform—unlike the countless JVM’s that existed for all manner of operating systems and processors.
Enter Mono. The Mono team—supported by Novell with cooperation from Microsoft—has created an open source CLR with ports for most Unix flavors among other systems, including one for iPhone OS. There’s even an IDE, MonoDevelop, that offers a real open-source development environment for .NET. But those who prefer the rich tool set provided by Visual Studio may continue to use it for development targeting the Mono platform.
In spite of the fact that Mono has been around almost as long as .NET itself, and supports nearly everything in the 4.0 framework, there seems to be a reluctance to embrace the possibilities. The reality is that C#, the .NET platform, and the rich toolset it provides are unmatched by any other available language or framework. Time to market on .NET solutions is measurably less than with Java, its closest competitor. On the other hand, the scalability, reliability, and security of the Unix/Linux platform put it light years ahead of Windows—in spite of recent strides. So why not enjoy the best of both worlds?
Picture Credit: Kenneth Lu