JVM 대 .NET : JVM은 아직 건재하다.
한빛미디어
|
2001-03-21
|
by HANBIT
19
8,301
by 브래들리 M. 쿤(Bradley M. Kuhn)
사람들은 마이크로소프트의 새로운 닷넷(.NET) 아키텍처는 자바 버츄얼 머신(JVM) 환경보다 더 나은 크로스 언어 객체 모델(cross-language object model)이라고 말한다. 이러한 주장을 하는 사람들은 종종 JVM이 크로스 플랫폼 아키텍처로서 쇠퇴할 것이며, 앞으로는 마이크로소프트의 기술이 주도할 것이라고 기대하고 있다.
닷넷 시스템은 사실 JVM과 다르다. 닷넷 시스템은 언어 통합을 염두해 두고 만들어진 것이다. 하지만, 닷넷이 JVM에 비해 우수한 부분은 단지 편리하다는 것뿐이다. JVM 디자이너들이 교차 언어적인 특성을 우선 순위로 두고 프로그램을 만들지는 않았다 하더라도, 단지 JVM이 완전한 솔루션이 아니라는 이유만으로 그것을 사용하는 것을 더 이상 고려하지 않는 것은 근시안적인 사고이다.
JVM이 특별히 자바 프로그래밍 언어 쪽에 맞추어져 있지만, 그것은 다양한 언어를 위한 일반화된 객체 모델로 사용될 수 있다. 거의 대부분의 대중화된 객체 지향적인 특성들이 JVM 자체에서 지원하거나, 아니면 표준 지원 라이브러리를 통해 지원되고 있다. 따라서 자바가 아닌 다른 언어를 위한 JVM 컴파일러가 JVM의 객체 지향적인 특성들을 수용한다면, JVM 자체가 일반적인 객체 모델로서 사용될 수 있는 것이다.
이러한 일반화된 객체 모델을 사용하면 서로 다른 언어들 사이에서 객체를 공유할 수 있다. 만일 A 언어와 B 언어가 둘 다 JVM 객체 모델을 수용하고 있다면, 서로가 상대의 객체를 자신의 것처럼 접근할 수 있을 것이다. JVM은 자신의 객체들을 다른 언어에 줄 것이며, 각각의 언어는 자신의 고유한 방법으로 객체에 접근할 수 있을 것이다. 어쩌면 이 객체들이 서로 다른 언어로 구현되었다는 사실 조차도 인식하지 못할지도 모른다.
일부 프로젝트에서는 이미 JVM을 이런 방식으로 사용하는 데에 성공하고 있다. 예를 들어, JEmacs 프로젝트에서는 JVM을 Emacs 구현의 중심 컴포넌트로서 사용한다. JEmacs는 스킴(Scheme: 언어의 일종)과 자바 모두를 이용하여 개발될 수 있으며, Emacs Lisp 과 표준 Lisp을 지원하기 위한 작업이 이미 진행 중이다.
따라서 JVM은 애플리케이션을 위한 중앙 엔진으로 사용될 수 있다. 만약 많은 언어들이 JVM의 객체 모델을 수용하는 형태로 JVM에 포팅된다면, 사용자들이 포팅된 어떠한 언어를 이용하더라도 개발 가능한 애플리케이션을 디자인 할 수 있게 될 것이다. 다시 말해, JVM 역시 닷넷이 추구하는 영역을 수용할 수 있다는 뜻이다.
확실히, JVM만 가지고는 닷넷 시스템 전체와 경쟁할 수 없다. 특히, 다른 언어를 JVM으로 포팅하는 데에 "미들-레이어(middle-layer)"가 빠져 있다(닷넷 시스템에서는, IL이 "미들-레이어" 역할을 한다). 하지만, 이러한 문제는 JVM에서도 해결될 수 있다. 펄 보트너는 JEmacs를 처음으로 시작한 개발자인데, 그는 자바 기반의 스킴(Scheme) 시스템인 GNU Kawa에서 사용된 IR(intermediate representation)을 일반화하였다. 이 작업을 통해서 표준 Lisp와 Emacs Lisp이 함께 잘 어울릴 수 있게 되었고, 내가 지금 하고 있는 작업인 펄(Perl)을 JVM에 포팅하는 일이 수월해졌다. 따라서, JVM 자체는 닷넷과 경쟁할 만한 모든 것을 제공해주지는 못하지만, 닷넷과 경쟁할 만한 소프트웨어라는 것은 확실하다.
게다가, JVM과 그와 관련된 라이브러리는 5년여에 걸쳐 성숙되었다. 정말로 많은 분야에서 JVM은 안정적인 플랫폼으로 간주될 수 있는 지점에 도달했다. 기술이 발달하면 발달할수록 사람들은 점점 더 안정성 있는 프로그램을 기대하게 될 것이다.
그리고 이제 기다릴 이유가 없다. 이미 많은 언어들이 JVM에 포팅되었고, 그들 중 많은 수가 자신의 객체를 인식하는 방법으로 JVM을 사용하고 있다. 이들을 통합하는 문제가 남아있기는 하지만, 이것은 그리 어려운 작업은 아니다. 가장 어려운 부분은 이들 언어를 JVM에 포팅하는 작업인데, 이것은 이미 완성되어있다.
JVM과 닷넷을 비교해 보자면, 단지 두 세 개의 프로그래밍 언어가 닷넷에 의존하는 것 같고, 이 프로그래밍 언어들은 부분적으로라도 마이크로소프트로부터 투자를 받는 것으로 보인다. 그 뿐만 아니라 닷넷 시스템에는 무료 소프트웨어가 없다. 반면 JVM으로 구현된 소프트웨어 중에는 무료인 것들이 많이 있으며, JVM으로 포팅되는 다른 많은 소프트웨어들 역시 무료이다. JVM과 JVM포팅 소프트웨어들은 공개되어 있고, 이미 정착된 아키텍쳐인 것이다.
게다가 JVM 환경은 GNU/리눅스나 BSD 시스템, 마이크로소프트 시스템 등 가장 인기 있는 운영 체제에서 사용 가능하다. 머지 않아 닷넷 아키텍처도 마이크로소프트가 아닌 운영 체제에서 사용할 수 있을 것이다. 나는 닷넷이 언어 상호운영 시스템이면서도 애초부터 크로스 플랫폼을 고려하지 않고 특정 운영체제에 초점을 맞추었다는 점에 매우 경계하고 있다.
따라서 JVM이나 그와 관련된 시스템들은, 완전하지는 않을 지라도, 닷넷 시스템의 경쟁자로 성장할 가능성이 있다. JVM에서 이러한 기능을 제공하는 통합 패키지를 다운로드 받을 수 있는 사이트는 한둘이 아닐 것이며, 이들이 더 널리, 쉽게 사용할 수 있게 될 날이 그리 멀지는 않을 것이다.
TAG :