재우니의 블로그

이번 강좌는 닷넷과 자바에 대한 이야기를 해보겠습니다.

닷넷은 저번 강좌에서 말씀을 드렸겠지만, CLS(언어스팩), CTS(공통타임시스템), IL, JIT 컴파일러로
이루어져 있으며, 여러가지 언어를 지원하기 때문에 이런 닷넷의 개념들을 뒷받침 해주어 가능한 것입니다.


1) CLS 와 CTS 에 대한 설명

자바가상머신에서 작동되는 프로그램은 자바로 말할 수 있지만, 닷넷은 C# 말고도 다양한 언어를 지원한답니다. 다양한 언어를 상호 융통성 있게 해주는 것이 CTS와 CLS 입니다.
CTS 는 COMMON TYPE SYSTEM 을 말하며, CLS 는 COMMON LANGUAGE SPECIFICATION 을 말합니다.

CTS 는 닷넷환경에서 데이터형을 관리하는 시스템을 말하는 것이고요, CLS 는 CTS 에서 지원하는 언어의 일반적인 규약을 정의하는 것입니다. 닷넷에서 제일 중요한 부분이니 꼭 참고하셔야 할 겁니다. 서로 다른 언어를 프로그램했다고 해도 닷넷에서는 CTS 가 테스트하고 검증관리를 합니다. 무슨 말씀인지 아시겠죠?

그리고 닷넷을 위한 모든 컴파일러가 지원해야 하는 표준 규약이 있는데 그것이 바로 CLS 라고 한답니다. CLS 는 닷넷의 CTS 와 IL 을 지원하기 위한 최소한의 규약이라고 정의하고 있죠.

vc++를 하신분에게는 이말이 먹힐라나 잘..모르겠지만, visual c++ 프로그램은 managed c++ 프로그램 형식으로 되어야 하는거 아시죠? c#은 CLS의 규칙을 따라야 한다는 거죠. ^^;

그럼 IL이라고 방금 전에 거론 했는데요. IL 은 뭘까요? 풀어서 말하면 기계어와 중간언어라고 말하죠. Intermediate Language 라고 합니다. 그럼 무슨 역할을 할까요? 이는 언어의 상호융통성을 가능하게 끔 해주는 강력한 요소가 중간언어 즉, IL 형태로 컴파일이 된다는 사실이죠.

닷넷은 직접 지원하는 코드는 반드시 중간언어 형태로 컴파일이 됩니다. 중간언어를 IL이라고 했는데.. 자바에도 중간언어가 있답니다. 명칭을 닷넷과 다르게 바이트코드라고 하죠. 따라서 자바배우신 분들을 위해 해깔리지 않도록 참고하세요. 그럼 둘다 똑같은가요? 그렇지는 않겠죠? 차이점이라고 말씀드리면, 자바의 바이트코드는 자바만을 위한 코드이지만, 닷넷의 IL 은 VB.NET,C++,MANAGED C++,COBOL 등 다양한 언어를 중간 코드형태로 만듭니다. 따라서 모든 언어를 IL 인 중간언어로
만들어 언어와 기계어 사이에 한 단계를 두어서 기계가 이해하기 쉽도록 만든 중간언어 형태로 만듭니다. 따라서 이런 책임은 CTS, CLS 가 책임을 지는 것이죠. 이로인해 언어 사이의 호환성이 되며, 닷넷플렛폼에 독립적인 프로그램을 작성할 수 있습니다.

그러면..완벽한 기계어는 누군가 만들어 주겠죠? 중간언어인 IL 가 로드되었을때 순간적(?)으로 컴파일을 해줍니다. 이것이 바로 JIT 컴파일러가 해주는 것이죠. 스스로 말이죠.


posted by 심재운 (shimpark@gmail.com)