Part of Microsoft's .NET strategy, Common Language Infrastructure (CLI) enables an application program written in any of several commonly-used programming languages to be run on any operating system using a common runtime program rather than a language-specific one. Common Language Infrastructure provides a virtual execution environment comparable to the one provided by Sun Microsystems for Java programs. In both environments, CLI and Java use a compiler to process language statements (also known as source code) into a preliminary form of executable code called bytecode. Later, when a program is run, its bytecode is compiled on the fly into the native code required by the machine architecture of a given computer. Common Language Infrastructure has been accepted as an open standard by ECMA, an international organization for the promotion of technology standards. CLI is designed to make it easier to develop programs that can be used as Web services.
Common Language Infrastructure specifies:
- A common language (the Common Language Specification - CLS)
- A common set of data types that any language must support (the Common Type System - CTS)
- An introduction to the component structure
- How the machine state is managed
- How exceptions are handled
Any programming language that conforms to CLI criteria can access a common class library and can be compiled into a common intermediate language (bytecode). Once compiled into the common intermediate language, any program can then be further compiled into the machine code understood by the specific system it is running on.
Within the Common Language Infrastructure, a component called the Common Type System (CTS) defines the programming types and operations supported by the .NET runtime engine. A subset of CTS, the Common Language Specification (CLS) determines whether an application is in compliance with specified criteria.
Common Language Infrastructure programs can be written in a variety of programming languages, including ASP+, C++, and C#. These are compiled into Microsoft's Common Intermediate Language (CIL), which the Common Language Runtime (CLR) then compiles into machine code for processing.