javap는 한편으로 'Java dissembler'라고 불린다. 왜 이렇게 불리는지에 대해서는 우선 간단한 코드를 보면서 이해해 보도록 하자.


1. 우선, HelloWorld.java라는 이름의 파일이다.

1
2
3
4
5
public class HelloWorld {
    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}



2. 이 파일을 바이트코드로 변환하여 HelloWorld.class라는 파일을 생성한다.


3. 여기에서 javap 커맨드를 사용해 본다. 다음과 같은 명령어를 입력하여 실행해 보면 된다.

$javap HelloWorld


그러면 터미널에 다음과 같은 결과가 뜰 것이다.

Compiled from "HelloWorld.java"

public class HelloWorld {

  public HelloWorld();

  public static void main(java.lang.String[]);

}

이것이 의미하는 것은 무엇일까? 하나하나 뜯어보자면, 첫번째 줄에서 HelloWorld라는 파일은 HelloWorld.java라는 파일로부터 컴파일된 소스라는 것을 확인할 수 있다. 그 이하로 나오는 부분은 클래스의 기본생성자 및 메인함수와 메인함수가 갖는 파라미터의 데이터 타입이다. 


즉, javap 커맨드는 어떤 바이트코드 파일이 어디서부터 나왔으며, 어떠한 필드와 메소드를 갖고 있는 파일인지를 알려주는 기능을 수행한다고 정리할 수 있겠다.


(javap 커맨드에 대한 정보는 Oracle Docs (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javap.html)에서 더 확인할 수 있습니다. 추후 한국어로 정리하여 페이지를 업데이트 하겠습니다.)


반응형

+ Recent posts