Common Language Runtime
Common Language Runtime (CLR) は、.NET Frameworkおよび.NET Core (.NET 6以降を含む) における実行環境であり、アプリケーションのメモリ管理、セキュリティ、例外処理、スレッド管理を提供します。本ハンドブックでは、CLRの仕組み、機能、使用方法を解説します。
CLRの特徴
編集- クロスランゲージ統合: 異なる言語で記述されたプログラムが統合的に動作。
- 共通中間言語 (CIL): ソースコードは一旦CILにコンパイルされ、実行時にネイティブコードに変換。
- 自動メモリ管理: ガベージコレクション (GC) を通じて効率的なメモリ管理を実現。
- 例外処理の統一: 統一された例外処理機構を提供。
- コードアクセスセキュリティ (CAS): アプリケーションのセキュリティ制御を実現。
CLRの仕組み
編集実行プロセス
編集- ソースコード: C#やVB.NETなどで記述。
- コンパイル: CIL (Common Intermediate Language) に変換。
- アセンブリ: CILコードとメタデータを含む。
- JITコンパイル: 実行時にネイティブコードへ変換。
メモリ管理
編集CLRでは、以下の手法を通じてメモリを管理します:
- スタックとヒープ: ローカル変数はスタック、オブジェクトはヒープに格納。
- ガベージコレクション: 不要になったオブジェクトを自動で回収。
ガベージコレクションの動作
編集- ジェネレーション: オブジェクトは3つの世代 (Gen 0, Gen 1, Gen 2) に分類される。
- マーキングとスイープ: 到達可能なオブジェクトをマーキングし、不要なオブジェクトをスイープ。
主な機能
編集クロスランゲージの互換性
編集CLRは、複数の言語で記述されたコードの相互運用性をサポートします:
- C#
- Visual Basic .NET
- F#
- 他のCLI対応言語 (IronPython, IronRuby など)
型システム
編集- 共通型システム (CTS) により、すべてのデータ型は統一された形式で表現される。
セキュリティ
編集CLRは以下のセキュリティ機能を提供します:
- コードアクセスセキュリティ (CAS): アセンブリの権限を制御。
- 検証と型安全性: アセンブリの信頼性をチェック。
使用例
編集C#での基本的なプログラム
編集以下は、CLR上で動作する基本的なC#プログラムの例です:
using System; class Program { static void Main() { Console.WriteLine("Hello, CLR!"); } }
CILコードの例
編集上記のC#コードをコンパイルすると、以下のようなCILコードが生成されます:
CIL_0000: ldstr "Hello, CLR!" CIL_0005: call void [mscorlib]System.Console::WriteLine(string) CIL_000a: ret
CLRの利点
編集- 効率的なパフォーマンス: JITコンパイラによる最適化。
- 簡易なデバッグ: 一貫したエラーメッセージと例外処理。
- 広範なライブラリ: .NET標準ライブラリとの連携。
注意点
編集- ガベージコレクションによるパフォーマンスオーバーヘッドに注意。
- JITコンパイルの初回実行時に遅延が発生する場合あり。
まとめ
編集CLRは、.NETプラットフォームの基盤として、効率的なアプリケーション開発を可能にします。その柔軟性と強力な機能を活かし、さまざまな用途で活用されています。