이는 닷넷과 자바의 차이점을 언급할 때 가장 간단하면서 핵심을 찌르는 표현이었으나 언제 부터인가 두 개발 플랫폼은 서로를 너무 사랑하는 듯 닮아가고 있어 더 이상 맞는 표현은 아니다.
닷넷 진영을 먼저 살펴보면, 노벨의 모노 프로젝트 덕택에(?) 닷넷 애플리케이션도 유닉스로는 썬 솔라리스, 리눅스로는 수세와 레드햇을 포함한 왠만한 리눅스 배포판, 맥 OS, 그 외에 FreeBSD, OpenBSD를 포함하여 각종 BSD 계열에서 동작한다는 사실을 관심있는 닷넷 개발자라면 이미 다 아는 사실이다. 다만, 모노 프로젝트의 닷넷 구현은 아직까지 1.1에서 2.0사이에 머물고 있어 닷넷 3.x 기반의 기능은 사용할 수가 없다. 현재 Visual Studio로 컴파일한 닷넷 애플리케이션을 별도의 재컴파일 과정 없이 그대로 모노 환경에서 실행시킬 수 있으며 자바처럼 mono Babo.exe 라고 실행한다는 점이 다를 뿐이다. 물론, 해당 애플리케이션이 모노가 구현한 라이브러리로만 구현되어 있는 경우에 에러없이 동작한다. 이것이 가능한 이유는 마이크로소프트가 닷넷 CLI (Common Language Infrastructure)와 C# 스펙을 ECMA 표준으로 등록하여 공개하였고, 모노 프로젝트가 이를 기반으로 별도의 CLR을 만들어 닷넷 개발 및 운용 환경을 제공하면서도 둘 사이에 표준 기반의 호환성이 생긴 것이다.
마이크로소크트는 모노 프로젝트에 대해 공식적으로 지원하지는 않았었다. (그럼 비공식적으로는 ?? :) ) 얼마전 Silverlight의 리눅스 버전을 노벨의 모노 프로젝트 일부로 Moonlight라는 이름으로 개발하기로 마이크로소프트와 노벨이 합의하면서 두 회사 사이의 협력 관계가 모노 전체 프로젝트로 확산될 것인가가 관심의 대상이 된 적이 있다. 하지만, 협력 범위는 Moonlight로 한정하기로 하였다. 어쨌거나 닷넷도 이제는 "다수 언어, 다수 플랫폼" 이라고 비공식적으로(?) 얘기할 수 있을 듯 하다.
그럼, 자바의 경우를 살펴보자.
자바 진영에서도 JVM이 공식적으로(native하게) 지원하는 것은 아니지만, 별도의 프로젝트성으로 혹은 학문적 필요에 의해 많은 언어들이 개발되어 JVM에서 동작하는 언어가 현재 약 200여종에 이른다고 밝히고 있다 (여기 참조). 공식적으로 즉, native하게 JVM에서 지원하는 언어로는 엔터프라이즈 용이 아닌 작은 업무 개발에 적합한 script 언어인 Groovy가 JDK 1.4 부터 지원되고 있다. JDK 1.6 즉 JDK 6.0 부터는 Mozilla Rhino 자바 스크립트 엔진을 탑재하고 자바 스크립트를 자바와 혼용하여 쓸 수 있도록 각종 API도 지원하고 있다. 여기까지는 자바 언어가 주류이고 그 외 작은 업무 개발을 위해 스크립트를 지원하는 정도이나 자바는 이제 다수 언어 지원을 위해 한발 더 내딛었다. 며칠전 썬은 다빈치 머신 (Da Vinci Machine)을 발표하면서 JVM에서도 native하게, 또 JVM의 장점을 가장 잘 살린 아키텍처 및 패턴 등을 사용할 수 있게 다수 주류 언어 지원 계획을 발표하였다. VM 기술이 이제 성숙하였고 보편화되어 가기 때문에 남은 것은 자바 이외의 다수의 주류 언어를 어떻게 JVM내에서 혹은 JVM의 장점을 가장 잘 살리면서 자바 이외의 언어가 가진 장점을 JVM에서 활용할 수 있도록 하느냐가 관심사가 된 것이다. 다빈치 머신은 JDK 차기 버전인 7.0에서 일부 포함될 예정이다. 결국 자바도 "다수 언어, 다수 플랫폼"을 향해 가고 있다.
TAG 다빈치 머신

