충분히 쌓여가는
CLR(Common Language Runtime) 본문
CLR
C#으로 만든 프로그램은 CLR 위에서 실행된다
CLR은 자바의 실행 환경인 JVM과 비슷한 역할을 한다
CLR은 .NET 라이브러리와 함께 OS 위에 설치된다
C# 컴파일러가 만들어낸 실행 파일은 하드웨어가 이해할 수 없는 코드로 구성되어 있기 때문에 실행할 수 없다
JIT 적시 컴파일
C# 컴파일러는 C# 소스 코드를 컴파일해서 IL(Intermediate Laguage)라는 중간 언어로 작성된 실행 파일을 만들어낸다
사용자가 이 파일을 실행시키면 CLR이 중간 코드를 읽어들여 다시 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행시키고 이것을 JIT(Just In Time) 컴파일이라고 부른다
한 마디로 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 뜻
두 번 컴파일 하는 이유
C#이 동작하는 환경이자 엔진인 CLR은 C#뿐만 아니라 다른 언어도 지원하도록 설계되었다
서로 다른 언어들이 만나기 위한 지점이 IL 이라는 중간 언어이고, 이 언어로 쓰인 코드를 CLR이 다시 자신이 설치된 플랫폼에 최적화해 컴파일한 후 실행한다
장점: 플랫폼에 최적화된 코드를 만들어 냄
단점: 실행 시 이루어지는 컴파일 비용의 부담
CLR의 기능
C#이나 기타 언어들을 동작시키는 환경 기능
프로그램의 예외가 발생했을 때 이를 처리하도록 도와주는 기능
언어 간 상속 지원
COM과의 상호 운영성 지원
자동 메모리 관리 등의 기능을 제공(Garbage Collection)