Search Results for 'jvm'

3 POSTS

  1. 2008.05.22 Java Virtual Machine (JVM)과의 인연 13
  2. 2008.04.30 자바 as 에스페란토 for JVML
  3. 2008.04.03 Da Vinci Machine

Java Virtual Machine (JVM)과의 인연

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

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

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

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

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

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


자바 as 에스페란토 for JVML

Posted 2008. 4. 30. 00:15
전통적으로 프로그래밍 언어의 외부 인터페이스(외부 함수 호출)는 주로 C로 되어 있었습니다. 자바의 JNI(Java Native Interface)가 대표적이고, 파이썬도 Python/C API를 제공합니다. 함수 언어 OCaml로 C 인터페이스를 제공하고, Haskell도 마찬가집니다.

C는 프로그래밍 언어계의 에스페란토인 셈인데 C가 이렇게 널리 쓰이는 이유는 다음과 같습니다.

1. C는 표준화된 언어이다 (ISO C)
2. C는 운영 체제 구현 언어로 가장 많이 사용된다. 대표적으로, Unix, Windows, MacOS 등이 모두 C로 구현되어 있다.
3. 많은 라이브러리가 C로 구현되어 있다.
4. 대부분의 프로그래밍 언어가 C 인터페이스를 제공하기 때문에, 프로그래밍 언어가 C 인터페이스만 제공하면 다른 언어와 바인딩도 가능하다. 일례로, Pycaml은 OCaml C 인터페이스로 Python/C API를 호출해 파이썬을 바인딩한다.


자바 가상 머신에서 동작하는 언어에서는 자바가 C를 대체하는 새로운 에스페란토가 되고 있습니다. 자바는 앞서 C가 프로그래밍 언어 인터페이스로 많이 사용되는 이유가 모두 맞아 떨어집니다.


1. 자바는 표준화된 언어다 (Java Language Specification)
2. 자바는 자바 플랫폼 구현 언어로 사용된다. 자바 라이브러리는 모두 자바로 작성되어 있다.
3. 많은 라이브러리가 자바로 구현되어 있다.
4. 대부분의 JVML이 자바 인터페이스를 제공하기 때문에, 프로그래밍 언어가 자바 인터페이스만 제공하면 다른 언어와 바인딩도 가능하다.




Da Vinci Machine

Posted 2008. 4. 3. 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에는 추가하려는 생각인 것 같은데 관련된 내용을 좀 더 파악해야겠습니다.