Tim Bray는 Comparing Frameworks에서 .NET은 오픈 소스가 아니니 검토할 가치조차 없다는 투로 말했다. Tim은 선마이크로시스템즈의 직원인 것 같으니 당연한 반응일 수도 있지만 생각해 볼 가치가 있다.
개인적으로 닷넷을 무척 좋아하지만, 역시 윈도우에 한정했을 때의 이야기이다. 모노 프로젝트가 상용 서비스에 적극적으로 도입될 정도로 성숙하거나 마이크로소프트가 다른 운영체제도 지원하기로 결정하면 닷넷이 현재 선택할 수 있는 최고의 플랫폼이 되리라 의심하지 않는다. 하지만 현실은 그렇지 못하다.
비용
MS 제품으로 플랫폼을 구성했다간 라이센스 비용이 엄청난데, 사실 이것을 감당할 수 있는 업체가 많지 않다. .NET에도 오픈 소스 IDE나 솔루션이 없지는 않다. 하지만 그런 걸 채택하면 자바보다 낫다고 할 수 있을지 모르겠다. .NET이 보장하는 생산성도 Visual Studio와 같은 개발 도구 없이는 빛이 바래는 것도 사실이다. Visual Studio 대신 Sharp IDE를 사용하는 모습이 그렇게 매력적이진 않을 것 같다. (그나마 마이크로소프트가 Express Edition을 내놓아서 상황이 나아지긴 했다.)
기술 종속
배타적인 성격이 강해서, 도입하는 기업이 리스크 부담도 져야 한다. 기술 지원이 언제까지 이뤄질 것인가 하는 것도 걸림돌이다. 한때 PHP와 쌍벽을 이루던 ASP가 어떻게 됐는지 생각해 볼 일이다. ASP.NET으로 오면서 ASP는 더 이상의 발전이 없는 상태다. PHP가 나날이 도약하고 있는 상황과 비교해보면 암울하기까지 하다. 이미 한 차례 당한 경험이 있는 회사나 개발자라면 .NET 기반 기술을 웹에 도입하는데 부정적일 수 있다.
물론 오픈 소스 진영이라고 해서 무한정 커뮤니티의 지원을 받을 수 있지는 않다. PHP처럼 장수하려면 Zend 같은 업체가 나와주어야 한다. 순수하게 비영리 커뮤니티의 힘으로 기술이 성숙할 수 있으리라고 믿지는 않는다. 중간에 사장되는 오픈 소스 기술도 무시 못할 만큼 많다.
웹 프레임워크
.NET 프레임워크는 매우 잘 구성되어 있다. J2EE 등의 자바 프레임워크는 산만하기 짝이 없는데 반해, .NET 프레임워크는 탄탄하다는 느낌이다. 하지만 ASP.NET이 웹 애플리케이션에 최적화된 환경이라고 생각하지는 않는다. 닷넷 프레임워크는 모든 종류의 애플리케이션 개발을 염두에 두었기 때문에, Rails와 같은 웹 프레임워크보다 복잡하고 최적화되어 있지 못하다. Tim의 말마따나 대부분의 웹 애플리케이션은 구조가 단순하다. .NET은 거의 모든 문제에 대한 해답을 제시할 수는 있지만, 어떤 경우에는 바퀴벌레 한 마리 잡으려고 소총을 난사하는 것 같다. .NET 기술을 제대로 이해하려면 제법 시간을 투자해야 하는데, 과연 그럴 가치가 있는 것일까? 더 쉬운 방법이 있다면 말이다.
프레임워크가 최적화되어 있지 못한 것은 어쩌면 부차적인 문제이다. .NET 기반의 또 다른 웹 프레임워크를 구현하면 되기 때문이다. 모노 프로젝트에는 확실히 이런 움직임이 있다. 하지만 마이크로소프트가 주도하는 환경에선 힘들다. 안타깝게도 ASP.NET 외에는 선택의 여지가 없다. Ruby on Rails를 말할 때, 같은 Ruby 진영의 경쟁할 수 있는 웹 프레임워크가 없다고 지적 받는다. 그런데 ASP.NET도 다르지 않은 것이다.
.NET의 개발 환경
일단 Tim의 글과 비교해서 생각해보자면, 개발 속도, 개발 도구, 확장성, 그리고 유지보수성 모든 면에서 자바보다 조금씩 낫다고 생각한다. 사실 눈에 띌 정도로 차이나는 부분도 분명히 있다. 특히 Visual Studio와 MSDN Library는 멋지다. 이 부분에는 이론의 여지가 없다. Ruby의 윈도우 개발환경에서는 RadRails라는 IDE가 가장 무난해 보인다. 하지만 Eclipse 기반의 이 IDE는 Intellisense와 같은 기본적인 기능마저 지원하지 않아서 무척 실망했다. Mac OS X에는 TextMate가 있다고 하지만, 역시 Visual Studio에 익숙해진 개발자에겐 단점이 아닐 수 없다.
결론
대체로 .NET에 대한 부정적인 의견이 주를 이루었다. 웹 프레임워크라는 관점에서 보면, .NET은 비대하고, 배타적이다. 비대한 프레임워크를 다루려면 개발자 한명 한명이 뛰어나야 한다. .NET의 기반 기술은 가능성이 아직 남아 있어서 더 나은 프레임워크가 나올 여지도 있지만, 시장 상황은 부정적이다.
하지만 데스크탑 애플리케이션의 경우에는 .NET을 진지하게 고려해야 할 때다. 유독 한국의 개발자들이 메모리 사용량이나 속도 문제를 걸고 넘어지곤 한다. 애플리케이션을 구동하는데 기본적으로 필요한 메모리가 분명히 문제가 될 수도 있지만, 사실 20 내지 30 메가바이트 정도도 허용 못하는 소프트웨어가 그렇게 많은지 의문이다. 속도 문제는 최적화 방법이 있다. 공부 좀 해보면 알 수 있다. 내가 즐겨 사용하는 애플리케이션 중 상당수는 .NET 기반이다. 마이크로소프트도 자사 제품에 닷넷 기술을 도입하는 비중을 늘리고 있는 듯 하다. 그런데 이 제품을 사용하는데 느려서 못 써먹겠다고 생각해 본 적이 없다. 시장에서 이기고 싶다면, 메모리 1메가를 아끼는데 신경 쓰지 말고, 사용자가 원하는 제품을 적절한 시기에 내놓을 수 있는데 역량을 집중해야 한다. 윈도우 데스크탑 애플리케이션 개발에 .NET 만큼 훌륭한 솔루션은 없다. (참고. Paing .NET)
기타 문헌
-
Comparing Microsoft .NET Framework Performance and Scalability to J2EE Application Servers: J2EE와 ASP.NET의 성능 비교.