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)에서 더 확인할 수 있습니다. 추후 한국어로 정리하여 페이지를 업데이트 하겠습니다.)
'Java' 카테고리의 다른 글
[Java] deep copy (깊은 복사) vs. shallow copy (얕은 복사) (0) | 2022.12.10 |
---|---|
프로젝트 오일러 문제 1번 풀이 (0) | 2016.11.22 |
자바 파일을 터미널에서 컴파일 하는 법 (2) | 2016.11.07 |