'Bytecode'에 해당되는 글 1건

  1. 2006.09.10 Java Bytecode Viewer
자바2006.09.10 16:13

JVM(Java Virtual Machine)은 Java bytecode(일반적으로 *.class 형태의 파일)를 수행하는 virtual machine이다. Real machine처럼 instruction set도 있고, memory manipulation도 한다.

Java bytecode는 JVM에서 동작하기 위한 data들을 가지고 있는데, method 부분의 코드를 보면 VM instruction으로 이루어져 있음을 확인할 수 있다.

사실 JVM은 Java bytecode만 다룰 뿐, 그 bytecode가 Java language로부터 compile되었는지, 다른 language로부터 compile되었는지는 별 관심없다. 심지어 binary 편집기로 직접 bytecode를 생성해도 문제없이 동작한다. 물론 인간의 인지능력으로는 불가능에 가깝겠지만...

Java byecode는 The Java Virtual Machine SpecificationThe class File Format 파트를 보면 그 구조를 알 수 있다. 그리고 bytecode를 GUI로 편리하게 볼 수 있는 툴들이 여러 가지 있는데, 개인적으로 ej-technologies사의 jclasslib bytecode viewer가 제일 마음에 든다.


[JRE 1.5.08의 rt.jar에 있는 String.replace()의 Code attribute에 대한 bytecode (jclasslib bytecode viewer 스크린샷)]

ej-technologies사는 독일에 근거지를 두고있으며, JProfiler로 유명한 application performance, deployment 솔루션 개발업체다. jclasslib bytecode viewer는 GPL라이센스로 소스코드까지 제공되는 open source 소프트웨어다. 참고로, JProfiler를 설치해보면 jclasslib를 라이브러리로 활용하고 있음을 알 수 있다.

또다른 Java bytecode viewer로는 Class Construction Kit이 있다.

사용자 삽입 이미지

The bytecode in the 'replace' method of the String class file(JRE 1.5.08). Screenshot from the Class Construction Kit.


[JRE 1.5.08의 rt.jar에 있는 String.replace()의 Code attribute에 대한 bytecode (Class Construction Kit 스크린샷)]

Apache JakartaBCEL(The Byte Code Engineering Library) 프로젝트를 활용한 툴인데, 자세한 설명은 없지만 BCEL 프로젝트의 admin멤버가 만든 것 같다.

이 외에도 여러 viewer가 있으나 살펴본 것 중에는 위의 두 가지가 가장 마음에 들었는데, 혹시 추천하고 싶은 툴이 있다면 댓글 부탁합니다...:)

참고로 jclasslib bytecode viewerBCEL은 모두 SourceForge에서 호스팅되다가 BCEL의 경우 5.0부터 Apache로 donate되었다.

# References

신고
Posted by roguebean
TAG ,

티스토리 툴바