안녕하세요 돼지왕 왕돼지입니다.
오늘은 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 도 지원합니다. ( 완전 자바군요? )
'프로그래밍 놀이터 > C, C++, C#, VB' 카테고리의 다른 글
[Java 개발자가 공부해본 C#] Stack Memory, Heap Memory, Variable, Reference 의 관계 (0) | 2012.04.15 |
---|---|
[Java 개발자가 공부해본 C#] 변수 초기화 ( Initialize ) 에 대하여. (0) | 2012.04.15 |
[Java 개발자가 공부해본 C#] C#에서 Exception 이 발생하면.. (2) | 2012.04.15 |
[Java 개발자가 공부해본 C#] HelloWorld. (4) | 2012.04.12 |
[Java 개발자가 공부해본 C#] C# 개발을 위한 프로그램. ( Visual Studio, Visual C# 2010 Express, Dream Spark 무료 다운 ) (0) | 2012.04.12 |
댓글