マネージコード
マネージコード (managed code) とは、.NET Frameworkにおける共通言語基盤 (CLI) に準拠した仮想機械上で実行される命令(コード)のことである。
これに対してマネージコード以外のコードはアンマネージコード (unmanaged code) やネイティブコード (native code) と呼ばれる。
マネージコードの実行
[編集]マネージコードのプログラムは通常C#やVB.NETといった人間が読み書きしやすい言語で書かれ、共通中間言語 (CIL) にコンパイルされる。
コードが実行される際、CILは仮想実行システム (VES) で実行環境(プロセッサアーキテクチャ)に依存した機械語にコンパイルされる。このコンパイルはマネージ実行環境のコンパイラによってなされるので、マネージ実行環境はコードが何をしようとしているのかを完全に知ることができる。故にガベージコレクションのフックや例外処理、型安全性の保証、配列境界のチェックなどを行うことができる。
これは古典的にJITコンパイルと言われる手法である。しかし多くのJITコンパイラと違い、仮想機械が機械語に変換する擬似機械語が格納されたファイルは環境依存の機械語(x86やPowerPCなど)をも含むことができる。これはAppleのUniversal Binaryの考えに似ている。
その他の用例
[編集]JavaやScala、KotlinなどのJava仮想マシン上で動作する言語もまた、中間表現であるJavaバイトコードを出力できる言語であり、管理された安全なコードを記述できるという意味でマネージ言語と呼ばれることもある[1]。