Search Results for 'VM/JIT'

3 POSTS

  1. 2008.05.22 Java Virtual Machine (JVM)과의 인연 (13)
  2. 2008.04.03 Da Vinci Machine
  3. 2007.01.31 SpiderMonkey와 Tamarin (5)

Java Virtual Machine (JVM)과의 인연

Posted 2008.05.22 04:42
저는 JVM에 관련된 글을 종종 쓰는 편입니다. 마소에서 자주 우려먹은 주제 역시 JVM 혹은 자바 내부 구현 쪽이었습니다. 물론 더 이상 JVM 관련 실무를 하지 않으면서 지식의 한계를 느껴서 지금은 프로그래밍 언어로 관심사가 많이 넘어갔습니다.

사실 특례하기 전에는 프로그래밍 언어, 컴퓨터 아키텍처, VM 등에 별로 관심이 없었습니다. 하지만 우연한 기회에 특례로 입사한 회사에서 JVM 관련 일을 하게 되었습니다. 국내에서는 드물게 CDC 급(핸드폰에 들어가는 CLDC급 VM과 달리 J2SE 스펙과 동일한 임베디드용 JVM) 소스 코드를 열심히 볼 기회를 가졌습니다.

JVM 하면서 논문 읽는 법을 배웠고, 복잡한 소프트웨어를 작성하는 방법도 배웠고, 시스템 프로그래밍의 기초를 다졌고, 프로그래밍 언어에 대한 관심을 가지게 되었으니 JVM 명세와 코드는 지금 제가 개발자로 살아가는 데 막대한 영향을 끼친 것 같습니다.

JVM한 덕분에 작년 초에는 삼성소프트웨어멤버쉽(SSM)에서 자바가상머신을 주제로 이틀 간 강의도 했습니다. 준비 기간에 비해서 강의 시간이 너무 많아서(무려 16시간) 무척 힘들었는데 (제 목소리에 졸았을 학생들에게 죄송) 그래도 매우 가치 있는 경험이었습니다.

지금은 예전에 비해서 무척 다양한 일을 하고 있어서 예전만큼 깊이 있게 논문이나 코드를 들여다보고 있지 못해서 조금 답답한 마음도 있습니다. VM이나 코어에 가까운 일을 업으로 삼는 행복을 느낄 수 있는 곳이 많지 않다는 사실도 알게 되었고요. (적어도 국내에서는요)

JVM 관련해서 깊이 있게 보시는 분이 계시면 같이 이야기할 수 있는 자리를 만들어 보는 것도 좋을 것 같다는 생각이 듭니다. 제 블로그는 의견 남겨주시는 분이 거의 없는데, 관심 있으신 분은 적극적으로 의견 좀 남겨주시길.


신고

Da Vinci Machine

Posted 2008.04.03 03:12
JVM에서 돌아가는 프로그래밍 언어가 무려 200개가 넘는다는 사실을 알고 있으세요? Programming Languages for the Java Virtual Machine 보시면 JVM 상에서 동작하는 언어의 목록이 나와있습니다.

OpenJDK에서는 다빈치 머신(Da Vinci Machine)이라는 프로젝트를 하고 있습니다. 자바 가상 머신(JVM)을 자바 뿐만 아니라 여러 언어에서 쉽게 사용할 수 있도록 개선하는 것을 목표로 하고 있습니다.

특히 Groovy, Jython, Jruby 등 JVM을 타겟으로 하는 스크립트 언어 사용이 늘면서 전략적으로 동적 스크립트 언어 지원을 가장 큰 목표로 삼고 있습니다.

Microsoft 2008 Lang.NET Symposium에서 발표한 New Languages on the JVM: Pain Points and Remedies를 보면 JVM에서 다중 언어를 지원하면서 겪은 문제점과 해결책들을 잘 요약해서 보여주고 있습니다.

동적 스크립트 언어 구현에서 가장 골머리를 앓는 부분이 동적 메서드 호출입니다. 파이썬이나 루비는 런타임에 존재하지 않는 함수를 호출할 수 있지만 자바는 컴파일할 때 다 확인을 합니다. 자바를 구현한 JVM은 동적으로 메서드를 호출할 방법이 없기 때문에 복잡한 트릭을 사용해야 합니다.

다빈치 머신은 JSR 292 Supporting Dynamically Typed Languages on the JavaTM Platform 와도 관련이 있는데, invokedynamic이라는 바이트코드 명령을 추가하자는 제안이 된 상태입니다. 2008년에 JVM 확장을 확정하고 자바 7에는 추가하려는 생각인 것 같은데 관련된 내용을 좀 더 파악해야겠습니다.

신고

SpiderMonkey와 Tamarin

Posted 2007.01.31 15:51
Channy님이 작성하신 "Mozilla와 Adobe 손잡다!"라는 글을 의견을 달아봅니다.

Adobe 사가 자사의 Flash Player 9에 탑재되어 있던 ActionScript 실행 엔진인 Action Script Virtual Machine(AVM2)를 오픈소스화하여 모질라 프로젝트에 기부하였습니다. 현재 3.0 버전인 ActionScript는 ECMAScript에 기반하고 있고, 마찬가지로 ECMAScript에 기반한 자바스크립트와 형제 관계입니다. 따라서 AVM2는 현재 Firefox 2에 탑재되어 있는 자바스크립트 엔진인 SpiderMoneky를 대체 혹은 보완하는데 사용될 수 있는 것이지요.

AVM2는 오픈소스화 되면서 원숭이 이름을 따서 코드명을 짓는 모질라의 관습에 따라 Tamarin 프로젝트로 이름을 바꾸게 됩니다. Tamarin은 다른 자바스크립트 엔진과 달리 JIT(Just In Time) 컴파일을 지원합니다. 쉽게 말해, 실행 전에 바이트코드를 머신 코드로 변경해 빠른 속도로 자바스크립트를 실행하는 기술을 말합니다. Adobe 사의 벤치마킹에 따르면 Tamarin을 사용하면 최대 10배 이상의 성능 향상 효과를 볼 수 있다고 합니다.

코드 통합이 순조롭게 진행되면 Firefox 3부터는 Tamarin을 자바스크립트 엔진으로 사용하게 될 것입니다.  FIrefox는 Gecko 엔진과 XUL 엔진 부분을 제외하면 브라우저도 자체도 대부분 자바스크립트로 작성되어 있습니다. JIT 엔진을 도입하면 브라우저의 속도가 향상되는 효과가 있을 것으로 예상합니다.

하지만 이 기술이 의미하는 바가 단순히 브라우저의 실행 속도 향상은 아닙니다. 웹 2.0을 표방하는 사이트들이 기술적으로는 AJAX를 바탕으로 하고 있고, AJAX는 결국 자바스크립트를 더욱 많이 사용함을 뜻합니다. 따라서 Tamarin 엔진 도입으로 자바스크립트의 실행 속도가 비약적으로 빨라진다면, 점진적으로 지금보다 좀 더 상호작용이 강하고 동적인 웹 2.0이 더욱 확산될 수 있는 인프라를 만드는 셈이 됩니다.


Frank Hecker가 작성한 "Adobe, Mozilla, and Tamarin"를 읽어보시면 이에 대한 좀 더 자세한 내용을 얻을 수 있습니다.

신고

티스토리 툴바