ICDロゴ

CLR (Common Language Runtime)

【シー・エル・アール】

最終更新日: 2002/05/19

 マイクロソフトが提供する次世代情報環境のソフトウェア・フレームワークである.NET Framework上で、アプリケーションやサービスを動作させるための実行エンジン。CLRはコードの実行を管理し、アプリケーションに対してさまざまなサービスを提供する。Javaで言うところのJava仮想マシン(Java VM)に相当する。 従来のWindows環境では、アプリケーションから呼び出すランタイム・ライブラリとして、MFCランタイム・ライブラリやVisual Basicランタイム・ライブラリ、ATL(Active Template Library)などのように、使用する言語やプログラミング・モデルごとに独立したランタイム環境が提供されていたが、CLRはその名が示すように共通の言語ランタイムであり、.NETをサポートする各言語のコンパイラによって生成された実行ファイルはすべてCLR上で実行される。

 CLR上で実行されるコードは、マネージド・コードと呼ばれ、CLRにより完全に管理されて実行される(これに対し、CLRでは管理されない従来のものは、「アンマネージド・コード」と呼ばれる)。.NETをサポートする各言語コンパイラは、すべてマネージド・コードを生成するため、プログラマは任意の言語でアプリケーションを記述し、それらを組み合わせて使用することができる。CLRに準拠したマネージド・コードでは、言語間でのクラスの継承やメソッドの呼び出し、言語間での例外処理などが可能となっている。また.NET Frameworkのクラス・ライブラリもマネージド・コードで構成されているため、どの言語からも共通して使用することができる。

 CLRによるアプリケーション実行のおおまかな流れは次のようになる。

 アプリケーションが実行されると、まずCLRのクラス・ローダによってアプリケーションのコンポーネントがメモリ上にロードされ、配置される。このときにはコードがタイプ・セーフかどうかのチェックも行われる。誤ったメモリ領域への参照や型が一致しないパラメータの受け渡しなどを含むタイプ・セーフでないコードは実行されない。

 .NETのアプリケーションの実行ファイルは、すべてMSIL(Microsoft Intermediate Language)と呼ばれる中間コードで構成されており、これは実行時にCLRのJITコンパイラによりネイティブ・コードに変換される。ただしこの場合でも、アプリケーションのすべての部分がコンパイルされるわけではなく、メソッドの呼び出しに応じて必要な個所が効率的にコンパイルされ、実行される。

 アプリケーションの実行中は、オブジェクトのライフタイム管理や、オブジェクトへの参照を管理することによってガーベジ・コレクションが行われる。また、システム・リソースや他のプログラム・コードへのアクセスに対するセキュリティのチェックも行われる。

 これら以外にもCLRは、開発サポートとしてデバッグやプロファイルなどのサービスも提供する。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ