Search Results for 'VM/JIT'

2 POSTS

  1. 2008.05.22 Java Virtual Machine (JVM)과의 인연 (13)
  2. 2008.04.03 Da Vinci Machine

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


  1. Favicon of http://kaistizen.net BlogIcon 최재훈

    | 2008.05.22 10:24 | PERMALINK | EDIT | REPLY |

    저는 CLR쪽을 주로 봤습니다. 논문보단 MS 내놓은 기술 자료만 읽었던 듯 한데, 그것도 지금 회사로 와서 C++을 주로 다루다보니 뜸해졌습니다. 요즘 다시 C++/CLI를 다루게 돼서 조만간 다시 공부하지 않을까 싶습니다. 당장은 C++/CLI를 익히는 것도 벅차긴 하지만요.

  2. Favicon of http://skyul.tistory.com BlogIcon 서광열

    | 2008.05.25 14:20 | PERMALINK | EDIT |

    언제 한 번 뵐 수 있으면 좋겠네요. 마소 통해서도 소식은 종종 듣는데 정작 한 번도 뵌적이 없어서^.^ 만나서 VM이나 CLR 이야기도 좀 하고요.

  3. 지나가던

    | 2008.05.22 14:16 | PERMALINK | EDIT | REPLY |

    깊이 있게 보고 싶은데...;;
    깊이 있게는 아직 못 보고 있구요...업무 특성상 성능을 쥐어짜야 할 일이 많아서 jvm 쪽 관련 문서는 열심히 보고 있습니다..

    bytecode말고 runtime에 돌아가는 기계어 코드를 확인하고 싶은데..
    도대체 jvm이 뭘 어떻게 얼마나 최적화를 하는지 확인하기가 힘드네요 ^^

  4. Favicon of http://skyul.tistory.com BlogIcon 서광열

    | 2008.05.25 14:22 | PERMALINK | EDIT |

    OpenJDK 가셔서 HotSpot 소스를 보시는 방법이 제일 빠르지 않을까 싶습니다. 업무하시면서 재미있는 내용 있으면 같이 공유하면 좋을 듯 싶습니다. 업무상 비밀은 제외하고요^^;;

  5. Favicon of http://jinto.pe.kr BlogIcon jinto

    | 2008.05.22 16:56 | PERMALINK | EDIT | REPLY |

    JVM 아주 조금 들여다봤습니다. 저는 위피 플랫폼 구현 때문에 코드를 좀 봤었죠. 실무코딩에서는 빠져있었고, 기술미팅만 담당했었는데요. static 클래스 로딩이나 gc나 넘어야 하는 산이 한두개가 아니더군요. 감동적이었던 것은 사방에 들어있는 버그수정의 흔적들이었습니다. 코멘트로 잘 정리해서 버그번호 몇번을 어떻게 해결했다, 라고 적혀있는 부분이 JVM의 핵심 자산처럼 보이더군요. 국내에서 JVM을 자세히 들여다본 사람이 많이 있을까요?

  6. Favicon of http://skyul.tistory.com BlogIcon 서광열

    | 2008.05.25 14:23 | PERMALINK | EDIT |

    국내에도 CLDC 급 VM(주로 핸드폰에 들어가는)을 만드는 회사들이 있으므로 관련 코드를 많이 보셨으리라 생각됩니다.

    저도 예전 회사 말고는 VM 하시는 분들을 많이 뵙지 못해서 잘은 모르겠습니다.

  7. Favicon of http://edong.net BlogIcon leepro

    | 2008.05.25 14:11 | PERMALINK | EDIT | REPLY |

    RVM(http://jikesrvm.org/)가지고 공부하면 좀 감이 올듯합니다. JVM관련 연구에서 대부분 RVM을 사용하고 있더군요.

  8. Favicon of http://skyul.tistory.com BlogIcon 서광열

    | 2008.05.25 14:24 | PERMALINK | EDIT |

    네. JVM 관련 페이퍼에 자주 등장하는 JVM 구현이지요.

  9. Favicon of http://blog.naver.com/smiler82 BlogIcon 스말러

    | 2008.06.13 20:09 | PERMALINK | EDIT | REPLY |

    형~! SSM 강의, 반응 좋았어요~ ㅋㅋㅋㅋㅋ
    형이 강의하신다고하여 급 참석했던 기억이...^^
    그때 잠시 JVM에 관심이 갔다가... 지금 한참 식었네요.. 다시... 열을 올려야할 듯....

  10. 박홍범

    | 2008.08.14 12:33 | PERMALINK | EDIT | REPLY |

    저는 AOT 컴파일러를 만들다가 지금은 전혀 다른 일을 하고 있습니다. Java Byte Code를 C++로 변형을 해서 이것을 다시 컴파일 하는 방법입니다. 그래서 속도 문제를 해결을 해보겠다고 하는 프로젝트를 진행을 했었습니다. 한 3년전 일이네요.
    지금도 같이 일하시던 분이 일을 진행을 하고 있으시고 SUN의 Java VM보다 3배는 빠른 VM을 만들고 계십니다. 거의 완성이 되었습니다.
    JVM의 핵심은 GC와 Thread Managing이죠. Kernel쪽에서 속도를 높이기 위해서는 여기에 새로운 알고리즘을 적용하는 수 밖에 없습니다.
    다른 한가지 방법으로는 JNI를 사용하지 않는 것이죠. JNI가 워낙 느려터져서리 JNI를 안 쓰고 새롭게 인터페이스하면 빨라질 수 밖에 없죠.

    다만 좋은 JVM을 만든다고 해서 판로를 만들기기 힘들다는 거죠. 특히 국내에서는 관심을 갇는 업체가 없죠. 혹시 저런 AOT 컴파일러나 SUN보다 빠른 VM에 관심 있는 기업 있으시면 연락 부탁 드립니다. 블러그에 이런말 써도 되나요?

    개인적으로 VM에 대해서 아직도 공부할 것이 많은데 업무와 무관하게 공부하기는 너무 힘든 크기의 프로젝트인것 같습니다.

  11. Favicon of http://hobbycoder.tistory.com BlogIcon HobbyCoder

    | 2009.10.26 02:47 | PERMALINK | EDIT | REPLY |

    JVM의 성능과 관련하여 전부터 한가지 애매한 점이 있는데, native코드가 섞이면 성능이 증가하는가 혹은 감소하는가 입니다. 위 댓글을 보면 JNI 를 쓰면 느려진다는데 상식적으로 속도가 필요한 부분을 C++ 로 확장하면 빨라져야 하는게 아닐까요? 혹은 Java 에서 C++ 호출을 하기 위한 처리 단계가 아주아주 너무나 복잡해서 JNI가 끼면 느린건가요?
    JVM에 관한 고급주제를 많이 써주셔서 무척 도움이 되었습니다. 언제 시간나시면 JNI 혹은 VM과 네이티브에 관한 분석 기사도 부탁드려요~ ^^

  12. Conan

    | 2010.09.15 03:42 | PERMALINK | EDIT | REPLY |

    오웃 반갑네요 회사 이외에서 이렇게 JVM 에 관심있으신 분들을 만나뵙게되다니 그런데 글이좀 오래되서 주인장께서 이글을 읽으실지.. ㅎㅎ
    어찌하다보니 아직 JVM 으로 밥먹고있습니다.

    요즘은 front end 까지 같이 해볼수 있는 python 같은 script language 에 좀더 관심이 가는중입니다.

  13. Favicon of http://jualtaswanitamurah.info/paleo-diet-reviews/ BlogIcon Paleo Diet Reviews

    | 2013.02.04 20:17 | PERMALINK | EDIT | REPLY |

    내가 그 계속을 기대하면 소리가 매우 성실하고 좋은 주제를 작성한 것들. 우리 많은 사람들이이 행사에 대해 알고하지 않습니다. 게시물이 도움이됩니다.

Write your message and submit

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

Write your message and submit