더구나 프로그래밍을 배우고 있는 입장으로서 종종 이야기되는 닷넷에 대해 알아보고자 찾아보았지만,
MS가 닷넷을 통해 개발 프로세스에 큰 그림을 다시 그리고자 했다는 느낌은 듭니다만..
문서 해독능력이 부족한지 이해가 쉽지 않네요.
여러번 읽고 이해하도록 노력해 봐야겠네요.
감사합니다..
2010.04.12 23:09:55 (*.36.237.53)
bard
쉽게 설명하자면... Win32 에 비종속적인 (대신 CLI에 종속적인) 바이너리를 만들어내는데 그 목적이 있습니다.
.NET 이 추구하는 바는 좁은 의미로 보자면 JAVA를 따라하는 것입니다. JAVA는 JVM이라는 가상의 플랫폼을 기반으로 하기 때문에, Native OS가 무엇이건 간에
JVM만 포팅된다면 어디서건(이라고 적고 어떻게든 이라고 읽음) 재 컴파일 없이, 별도의 포팅작업 없이 기존의 어플리케이션을 돌릴 수 있습니다.
MS Windows 기반의 모든 소프트웨어(Win32 기반)는 Windows 머신에서 밖에 돌아가지 않았고, 그 또한 x86이니 Alpha니, x86_64니 뭐니 해서 서로간의 호환성이
개판이었죠.. MS로서는 늘 바라만 보고 있던 서버시장에 JAVA라는 녀석이 생뚱맞게 나타나 떡 하니 자리잡는 꼴을 보니 배가아프지 않을 수가 없었을 껍니다.
그래서 따라쟁이 MS는 CLI를 앞세우고 .NET 플랫폼을 출시했지요. 이론적으로는 어떤 머신 어떤 OS건 이 CLI 만 포팅이 된다면(JVM처럼) 어디서건 .NET 기반
어플리케이션은 구동 될 수 있습니다. 버뜨... 세상이 그리 호락호락한게 아니라서 아직 CLI가 리눅스외 다른 머신으로 포팅됐다는 얘기는 못들어봤네요...
뭐 암튼 더 넓게 보다면 단순히 JVM을 따라해보자! 정도가 아닌 원대한 꿈(?)이 있었겠습니다만, 대충 MS가 엔터프라이즈 시장에서 자바가 가지고 있는 그 장점을
취하기 위해 시도한 결과물이라고 생각하시면 얼추 맞을듯 싶습니다.
2010.04.12 23:32:51 (*.36.237.53)
bard
현재 엔터프라이즈 시장은 자바 플랫폼과 오라클 기반 PRO*C 플랫폼이 거의 양분(이라고 해봐야 둘다 오라클입니다만..)하고 있는 상황이라고 보시면 됩니다.
이 시장은 정말 MS가 오래전부터 들어가고 싶어했던 시장이죠.
그 매력적인 시장에 들어가기 위해 자바처럼 다른 진영과 연합하는 대신, 자신들이 가진 제품군(Windows Server, Exchange Server, SQL Server, BizTalk 등)을
모두 하나의 플랫폼으로 묶고, 여기에 개발 프레임워크까지 더해서 그 전체를 아우르는 플랫폼을 .NET이라고 부르고 브랜드 마케팅에 들어간 것입니다.
.NET은 범위가 매우 넓은 용어이고, 실제 개발자들 사이에서 말하는 .NET은 .NET 프레임워크(혹은 SDK) 정도인 경우가 많습니다.
위의 설명은 개발자 시야에서 본 .NET의 의의(?)라고 생각하고 읽어주시면 감사하겠습니다. ;]
PS: 자바는 JVM과 기타 기본스펙(JSR이라고 부르는) + 기본스펙에 대한 샘플 implementation 정도로 이루어져 있습니다. 나머지 제품군
(WebSphere, WebLogic, MQ 등등등)은 JSR 스펙에 대한 각 벤더의 implementation 이죠. 자바는 썬(지금은 오라클)이 만들었다 뿐 실제
자바로 돈을 번 사람들은 벤더(IBM, Oracle, BEA 등등)들이었죠.
이런 OPEN 정책을 펼쳐 넓혀진 시장을 MS는 자사의 역량만으로 차지하려 드니 아직 큰 효과는 못보고 있는듯 합니다. ;]
2010.04.12 23:50:07 (*.140.89.74)
엘린
bard/ 답변 감사합니다.
그렇다면 CLI는 JVM처럼 가상머신인건가요?
닷넷 프레임워크를 통해 윈도우의 많은 개발자들을 끌고 가겠다. 혹은 이탈시키지 않은 상태로 MS 자신이 만들어놓은 플렛폼에 종속시키면서도
타 OS, 혹은 데스크탑과는 다른 시장을 점유하겠다는 목표로 야심차게 시작은 하였으나,
CLI의 포팅이 잘 이루어지지 않고, 닷넷으로의 개발자 유입이 더뎌지면서(신입생때 선배들이 닷넷보다는 자바를 선호하는 경향을 보여서..)
자바등을 통해 커져버린 시장에 제대로 정착하지 못하고 기대했던 성과를 못보고 있는 건가요.
자바와 닷넷..
이들의 예전 역사들을 다시 뒤져봐야겠네요..
감사합니다.
2010.04.12 23:54:19 (*.36.237.53)
bard
엘린//
CLI를 가상머신이라고 하기엔 다소 무리가 있습니다. CLI는 말 그대로 Common Language Infrastructure 입니다. ;]
내부적으로 .NET 프로그램들은 native 가 아닌 CLI 가 이해하는 중간코드 형태로 실행파일이 만들어집니다. 그걸 CLI가
해당 머신에 적합한 native 형태로 바꿔서 실행하게 되죠. 여기까지 동작방식은 JVM과 매우 흡사합니다만.. JVM은
그 자체가 하나의 머신이고(한때 자바 칩도 만들어졌었지요) CLI는 그냥 저런 동작을 해주는 중간코드 생성기 정도 입니다.
(물론 중간코드 생성기 외에도 엄청난 수의 Component 를 보유한 기반구조이기도 합니다.)
암튼 자바와 닷넷은 닮은듯 다른 쌍둥이(?) 형제라고 보시면 되겠습니다. 물론 사이는 좋지 않습니다. ;P
2010.04.13 00:04:29 (*.140.89.74)
엘린
bard// 답변 감사합니다.
왠지 후련하네요...
가만히 있다가도 궁금한게 생기면 구글부터 여는 습관이 있어서...
검색 후에도 프레임워크에 대한 내용이 주로 나와서 알쏭 달쏭 해지기만했는데...
감사합니다.
2010.04.13 00:07:59 (*.129.96.15)
Tail
현재 리눅스에서도 닷넷 어플을 돌릴 수 있는 mono가 있습니다. 물론 ms에서 서포트하는건 아닙니다만...