닷넷 바이너리(.net binary)와 네이티브 바이너리(native binary)

윈도우에서 흔히 쓰는 .exe 실행 프로그램이나 .dll 이란 동적 링크 라이브러리들을 가지고 바이너리라고 부릅니다. 보통은 그냥 똑같이 C:\에 존재하기 때문에 파일만 봐서는 구분이 되지 않습니다.

이 둘을 구분하는 건 바로 실행 환경을 보고 구분합니다. .net 응용 프로그램은 CLR(Common Language Runtime)이라는 닷넷의 구성 요소 중 하나에서 동작합니다. CLR 위에서 실행되며, CLR에 의해 관리됩니다. 메모리, 스레드, 원격 서비스, 보안, 형식 안정성 등의 거의 모든 관리가 CLR에 의해 관리됩니다. 그래서 .net 응용 프로그램은 Managed Program이라고도 합니다.

CLR

이쯤 되면 대충 뭐랑 비슷해 보이긴 하죠? JVM이 떠오르셨다면 정답입니다. CLR은 닷넷의 핵심 요소로써 JVM과 유사한 역할을 합니다.

C#

C#

공부하기 어려운 언어는 아닙니다. 특히 자바를 공부했던 분들이라면 더더욱 어렵지 않습니다. 객체 지향 언어들은 거의 공통적인 특성을 가지고 있기 때문에 공통적인 부분만 한 가지 언어로 익혀두고, 다른 언어를 배울 때는 그 차이를 매워가는 형식으로 알아두면 되기 때문입니다. 문법의 쓰임새는 그냥 보고 따라하기 나름입니다.

근데 C#은 왠지 좀 다른 세계의 이야기를 하는 거 같은 책들이 많습니다. MS에서 만들어서 윈도우에서만 쓰이니깐요? 그런 것도 있지만.. C#이 객체 지향 프로그래밍을 위한 언어인 것 뿐만 아니라 닷넷(.net)에 대해서도 좀 더 잘 알아둬야 한다는 점이 있습니다. 이 점이 유명하게 작용하면서도 타 플랫폼 개발자들이 요즘 윈도우 프로그래밍을 할 때 어렵게 느끼는 점입니다.

MS는 윈도우의 환경을 점차 통합해 가는 시기를 계속 거쳐왔습니다. 그리고 그 중심에 있는 것이 바로 닷넷 프레임워크(.net Framework)입니다. 닷넷 프레임워크는 클라이언트용 윈도우 뿐만 아니라 윈도우 서버 및 클라우드(애저 서비스), XBox와 Windows Phone에까지 적용될 정도로 수많은 MS 플랫폼에 적용됩니다. 그만큼 사용 범위도 넓기 때문에 요즘의 윈도우 프로그래밍을 위해선 알아둬야 합니다.

저도 다시 쓰면서 복습해야 하니 천천히 보죠. ㅇㅅㅇ