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