CLR(Common Language Runtime)
CLR은 소프트웨어 실행 환경 또는 런타임 환경에 가깝다.
운영 체제와 실행되는 프로그램 사이에서 중간 계층 역할을 수행하는 시스템 소프트웨어의 일종이다. 운영 체제에서 애플리케이션이 실행될 수 있도록 돕는 "해석기"이자 "관리자"이며 이를 통해 .NET 애플리케이션이 하드웨어나 운영 체제와 직접적으로 상호작용하지 않고도 실행될 수 있게 한다.
자세히는 .NET Framework 및 .NET Core에서 동작하는 실행 환경(runtime)을 의미하며 CLR은 C#, VB.NET, F# 등 다양한 .NET 언어로 작성된 프로그램이 실행될 수 있도록 지원하는 핵심적인 역할을 한다.
CLR의 주요 역할과 기능
1. 코드 실행
C# 소스 코드는 컴파일되면 IL (Intermediate Language)이라는 중간 코드로 변환된다.
이 IL 코드는 CLR에 의해 실행 시 JIT (Just-In-Time) 컴파일러를 통해 기계어로 변환되어 실행된다.
2. 메모리 관리
가비지 컬렉션 (Garbage Collection)을 통해 사용이 끝난 객체를 자동으로 제거하여 메모리 누수를 방지하며 객체의 생성과 할당을 관리해 효율적인 메모리 사용을 지원한다.
3. 언어 상호 운용성
CLR은 다양한 .NET 언어 간의 상호 운용성을 지원한다. 예를 들어, C#에서 작성된 클래스를 VB.NET에서도 사용할 수 있다.
4. 보안 관리
프로그램이 수행할 수 있는 작업을 제한해 보안 수준을 강화하며 애플리케이션 도메인(AppDomain)을 통해 코드 실행을 격리할 수 있다.
5. 스레드 관리
멀티스레드 애플리케이션을 효과적으로 실행하고 동기화하는 기능을 제공한다.
.NET
.NET은 소프트웨어 개발을 위한 프레임워크와 플랫폼이다.
프레임 워크? 플랫폼?
- 프레임 워크: 애플리케이션을 개발할 때 사용할 수 있는 도구, 라이브러리, 규칙의 집합.
- 플랫폼: 프로그램이 실행될 수 있는 환경 제공.
.NET 핵심 구성 요소
1. 런타임(CLR)
.NET 애플리케이션의 실행 환경이다. .NET 코드의 실행, 메모리 관리, 스레드 관리 등을 담당한다.
2. 프로그래밍 언어
.NET은 여러 언어를 지원하며, 대표적으로 C#, VB.NET, F# 등이 있다.
3. 클래스 라이브러리
애플리케이션 개발에 필요한 다양한 기능(파일 처리, 네트워크, 데이터베이스, 암호화 등)을 제공하는 표준 라이브러리이다. 개발자는 이러한 라이브러리를 활용해 복잡한 기능을 쉽게 구현할 수 있다.
.NET과 CLR은 밀접하게 연결되어 있다. .NET 플랫폼이 전체적인 틀이라면, CLR은 그 틀 안에서 애플리케이션이 실행될 수 있도록 돕는 핵심 엔진이다.