본문 바로가기

Papyrus/Dizzy Report

Windows 7에 대한 단상

윈도우7에 대한 이야기가 이제 조금씩 많아지고 있다. 개인적으로, 윈도우7을 무척 기대하는데, 사실 비스타에서부터 윈도우7의 존재를 감지했다고 하면 너무 우습게 들릴 것이다.

좀 비슷한 이야기로, Visual Studio와 같은 경우, Visual Studio.NET은 그 가능성에 비해서 툴이 산만하다는 느낌을 지울 수 없었지만, 이 다음 버전은 물건이 될 것 같다는 생각이 들었다. 그리고 Visual Studio 2005에 들어서면서, 새로운 지향점이 잘 흡수되어 괜찮은 물건이 탄생했다. Visual Studio 2005에 이르러서야 Visual C++ 6.0을 확실히 내다버릴 수 있게 된 것이다.

비스타에 대해서 느끼는 것도 마찬가지이다. 사람들이 많이 관심을 가지는 에어로보다, 비스타가 추구하는 방향에 대해서 무척 공감했으며, 강화된 보안 정책이라든가(ActiveX에 대한 접근은 이 바뀐 보안 정책에서 출발한다), 로컬 환경에서만 이런 저런 여러 개념들을 흡수하면서 발전해 온 윈도우가, 자신의 색깔에 대한 근본적인 고찰을 하기 시작한 것에 높은 점수를 주고 싶다.

그렇지만, 언제나 MS 제품이 그렇듯이 첫 버전은 만족스럽지 못하며, 더구나 비스타의 경우에는 일반인들이 피부로 느낄 수 있는 여지는 에어로를 빼면 사실 없다. 오히려 더 불편하다고 느낄 것이다. 그렇지만, 개발자가 보기에는 비스타는 엄청난 변화를 했다. 무엇보다, 전통적인 윈도우 실행 환경의 전부였던 Win32에 대한 직접적인 접근보다, .NET 프레임워크를 통한 체계적인 접근 방법이 마련되었기 때문이다(사실, 보안 강화는 .NET이란 존재가 등장했기 때문에 가능해진 것이다). 단점으로는, 기존의 윈도우들이 떨쳐버리지 못했던 하위 호환성인데, 윈도우 버전이 올라가면 올라갈수록 윈도우가 가벼워지는게 아니라 더 끔찍한 괴물이 되어버리는 이유는 하위 호환성 때문이다.

즉, 새로운 API가 추가되어 과거의 기능들이 필요없다고 하더라도, 하위 호환성을 유지하기 위해서 과거의 라이브러리들을 모두 포함해야 하며, 또 과거의 기술과 매끄럽게 연동되면서도 최신 기술을 지원해야 한다. 최소한 몸집 면에서는 줄어들 일이 절대로 없으며, 가볍고 빠른 기능이 구현되기가 대단히 어렵다.

윈도우는 사실, 완전히 운영체제 그 자체의 기능만을 놓고 본다면 다이어트가 충분히 가능하다. 그것이 불가능했던 것은 이 하위 호환성 때문인데.. 이 부분을 제거한다면 윈도우는 지금 존재하는 어떤 운영체제와 비교해도 퍼포먼스에서 충분히 경쟁력을 가질 수 있을거라 생각한다.

드디어, 윈도우7에서는 MS가 작정하고 이 하위 호환성을 포기한다고 한다. 완전하게 하위 호환성을 포기하는 것은 아니지만, 최소한 16비트 윈도우 시절의 잔재는 완전히 청산할 것이며, 또 Win32 API에서도 필요없거나 중복되는 기능들에 대해서는 어느 정도 청소가 이루어질 것으로 기대한다. 이것이 가능해진 이유는, 두 말 할 것 없이 .NET의 존재 때문이다. .NET은 사실 가상 머신이라는 중간층이 있어서 MSIL로 작성된 프로그램이라면 플랫폼에 상관없이 모두 지원할 수 있기 때문이다. 앞으로는 .NET의 완전 구동 여부가 중요한 것이며, 순수한 Native Win32 Application들은 점차 사라질 것이란 암시를 하고 있는 것이다. 물론, .NET이라 하더라도 내부적으로 Native Win32 API를 사용하는 것이므로 이 말은 좀 어폐가 있지만, 클라이언트 프로그램이 직접적으로 Win32 API를 호출하는 형태로 작성되는 프로그램은 점차 도태된다는 의미이다.

.NET에 본격적으로 대응하는 운영체제는 비스타라 할 수 있지만, 비스타는 시대적으로 완전히 .NET 환경으로 넘어갈 수도 없고, 그렇다고 Native Win32 응용 프로그램들을 배제할 수 없는, 애매한 시기에 태어난 공룡같은 운영체제가 될 수 밖에 없었다. 비스타가 롱혼으로 불리던 시절에 구현하겠다고 했던 기능들을 살펴보라. 일단 아발론으로 불렸던 새로운 윈도우 프리젠테이션 엔진인 WPF, 그리고 파일 시스템을 한차원 더 추상화해줄거란 WinFS, 여기에 XP 못지 않은 하위 호환성, 퍼포먼스에 대한 고려, 강화된 네트워크 기능.. 얼마나 끔찍하게 많은 코드들이 추가되었을지 상상하기도 힘들다. 이런 끝없는 코드들이 애초에 빠르고 버그 없이 돌아간다고 기대하는 것 자체가 어리석은 일이 아닐까? 그리고, WinFS라는 것은 아직도 완전히 구현되지 못했고.

즉, 윈도우7은 성능이 중요한 크리티컬한 부분이나 하드웨어와 밀접하게 동작하는 부분에서의 Native Win32 코드를 사용하는 프로그램들의 호환성은 어느 정도 보장하겠지만, 그렇지 않은 일반 윈도우 응용 프로그램들은, .NET 환경에서 돌아가는 정도의 수준이 아니라면 과감하게 포기하겠다는 의미이다. 다시 말해 윈도우의 다이어트 수준은 바로 이 트레이드-오프 수준에서 결정되며, 처음에 등장하는 윈도우7은 비록 깔끔하게 과거의 잔재를 털어버리지는 못하겠지만, 윈도우7의 후계 버전들은 Native Win32 Application들의 시대적 도태와 함께 점점 경량화하는 것이 가능하다는 예상을 할 수 있는 것이다.


그리고, 그때가 되면 비로소 윈도우는 Unix도 아니고, Mac OS의 짝퉁도 아닌, 진정한 Windows라는 운영체제의 색을 발할 수 있을 것이다.