본문 바로가기
프로그래밍 놀이터/C, C++, C#, VB

[Java 개발자가 공부해본 C#] CLR ( Common Language Runtime ) 에 대하여.

by 돼지왕 왕돼지 2012. 4. 15.
반응형


안녕하세요 돼지왕 왕돼지입니다.

오늘은 CLR ( Common Language Runtime ) 에 뭐하는 녀석인지 한번 알아보겠습니다. 


CLR ( Common Language Runtime ) 은 자바의 JVM ( Java Virtual Machine ) 과 거의 같은 녀석이라고 보시면 되겠습니다. 계층도를 보았을 때 Class Libraries( .NET Framework ) 와 Application 을 연결하는 역할을 하고 있습니다.  


 요 CLR 은 말 그대로 .Net Framework 가 지원하는 Common Language ( C, C++, C#, Visual Basic 등 ) 이 돌아가는 가상머신 이라고 보시면 되겠습니다. 네이티브 코드로 작성되어 있는 프로그램들은 운영체제가 직접 실행할 수 있지만, C#이나 VB 컴파일러 등이 만들어 낸 실행 파일은 운영체제가 이해할 수 없는 코드로 되어 있기 때문에 바로 실행할 수 없습니다. 이런 .NET 이 제공하는 language 들이 Compile 되면 IL ( Intermediate Language ) 라는 중간 언어로 작성된 파일을 만들어 냅니다. 그리고 이 어플리케이션이 실행 될 때 CLR 이 중간 언어를 읽어들여 JIT ( Just In Time ) 컴파일을 하여 네이티브 코드로 만들어 실행을 합니다. 

그럼 왜 바로 처음부터 Native 코드를 만들지 않고 CLR 을 거쳐 2번의 Compile 을 하는 걸까요? .NET 이 여러가지 언어를 지원하는데, 이 언어들이 모두 Platform 에 최적화된 코드가 되게 하기 위함입니다. 물론 컴파일 비용이 좀 부담스럽긴 하지만, Target 기계에 최적화되어 최고의 성능을 낼 수 있습니다. ( 무조건 Native 로 변형하면, Compile의 부담은 적지만, 모든 기계에서 최적화된 성능을 내지는 못합니다. ) 

CLR 의 기본은 요런 녀석이지만 JVM 과 같이, 예외처리를 도와주고, 언어 간의 상속을 지원하며, COM 과의 상호 운영성을 지원하고, Garbage Collection 도 지원합니다. ( 완전 자바군요? ) 





반응형

댓글