CLR 【Common Language Runtime】 共通言語ランタイム
概要
CLR(Common Language Runtime)とは、米マイクロソフト(Microsoft)社がWindowsのプログラム実行環境などとして推進している.NET(ドットネット)で、対応プログラムを実行するための動作環境のこと。同社の.NET Frameworkなどが該当する。.NET対応のソフトウェアは、様々なプログラミング言語で書かれたソースコードから、いったん共通中間言語(CIL:Common Intermediate Language)による形式に変換されて利用者のもとに配布される。CILのみで構成され、特定の機種やOSなどに依存するコードを含まないプログラムを「マネージドコード」(managed code)という。
CIL形式のプログラムを解釈し、コンピュータが直に実行可能な機械語によるプログラムに変換して実行するソフトウェアがCLRである。利用者は自らのコンピュータやOSに対応したCLRを用意しておけば、.NET向けソフトウェアを利用することができる。
CLRは一種の仮想マシン(VM:Virtual Machine)を中核とするシステムで、CILプログラムを実行時コンパイル(JITコンパイル)して起動する。例外処理、ガーベジコレクション、スレッド管理などの機能を提供する。通常は.NETの標準クラスライブラリ(BCL:Base Class Library)やアプリケーションフレームワーク(ASP.NETやWPFなど)と同梱されて.NETの実装として提供される。
CLI (Common Language Infrastructure/共通言語基盤)
米マイクロソフト(Microsoft)社が推進する.NETの実行環境(CLR)および対応プログラムの記述言語(CIL)の標準仕様を定めた規格。同社による実装を.NET Frameworkという。
機種やOSに依存しないプログラムの開発・実行環境を実装するために必要な諸技術の仕様を定めている。.NETプログラムの配布形式であるCIL(Common Intermediate Language/共通中間言語/MSIL/IL)の仕様と、開発に用いるプログラミング言語に求められる共通仕様、実行環境(CLR)が実装すべき仕様を定めている。
.NET対応プログラミング言語間で共通して利用されるデータ型の仕様を定めたCTS(Common Type System/共通型システム)、実行プログラム内にコードについての情報を埋め込むメタデータの形式、対応プログラミング言語に要求される共通仕様CLS(Common Language Specification/共通言語仕様)、CILプログラムをネイティブコードに変換して実行するVES(Virtual Execution System/仮想実行システム)の仕様などが含まれる。
CLR規格は同社が提出した標準案をもとに2001年に当時のEMCA(現Ecma International)によってEMCA-335として標準化され、2003年に同様の内容がISO/IEC 23271として国際標準となった。日本では2006年に同規格を翻訳したJIS X 3016が策定されている。