Building applications and web services with Microsoft .NET or Java tools was previously a choice between cross-language and cross-platform development. Limiting applications to run under Windows operating systems was considered one of the major drawbacks of using the .NET framework. On the other hand, Java-based applications can run on any platform, including UNIX and Linux, using a Java Virtual Machine (JVM).
With open source implementations of the .NET platform, developers targeting .NET face an extremely welcome challenge - creating applications that run on multiple platforms. The Common Language Infrastructure (CLI) is the standard defined by ECMA, an industry association dedicated to the standardisation of information and communication technology systems, for describing the core of the .NET framework. It is similar to the JVM and acts as a translator between the .NET infrastructure and other platforms. The Mono Project, Portable .NET, OCL (Intel's CLI implementation), and Microsoft Shared Source CLI (SSCLI) also known as "Rotor", are just some of the open source implementations of the CLI.
View rest of my article in April 2005 issue of Spider Magazine.