A software development and execution environment designed by Microsoft as a direct competitor to Java. .NET framework should not be confused with Microsoft's past labeling of a line of products as ".NET". .NET simplifies interoperability between languages and machines on Microsoft Windows especially, although not specifically, for web based services. Essentially the .NET framework consists of the CLR (common language runtime), CTS (common type system), CLS (common language system), and IL (intermediate language). The CLR consists of a number of resources provided to .NET applications such as the security model, type system and .NET classes (c.f. Java classes). The CTS is the range of all types that .NET understands although it is not necessarily the case that a .NET program will understand all of these types. The CLS however is a subset of the CTS which all .NET languages must support: any two .NET languages can interoperate via. the CLS. All .NET languages are at some stage compiled into the IL, a byte-code like language. However unlike a standard Java run time environment, the IL is converted to machine code either upon installation of the software or at run time by a just in time compiler (JIT). The IL is not interpretted. .NET's main weakness is that Microsoft have ignored the Unix and mainframe environments, effectively ruling .NET out of use in many enterprise environments. However there is Mono - an open source .NET framework for Unix}. .NET was based on research by Steven Lucco on a product called OmniVM, sold by Colusa software. Attracted to OmniVM since VB and C/C++ environments were already available, Microsoft bought Colusa in 1996. Microsoft provides .NET compilers for C#, C++, VB, and Jscript.