달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 3. 24. 10:00

Javap 란? (자바 역어셈블러) I.lib()/I.lib(Java)2010. 3. 24. 10:00

.. .. ..

java를 설치하면, bin 디렉토리 내에 다양한 실행파일들이 설치가 됩니다.

 하지만, 일반적으로 사용하는 것은 javac와 java가 대부분이죠..

 bin 디렉토리 내부를 잘 보면, javap 라는 실행파일도 있습니다.

 이글의 주제는 바로 이 javap 에 대한 얘기가 되겠습니다.

 javap는 간단하게 설명하면, 클래스 파일의 역어셈블하는 실행파일입니다.

 여기서 역어셈블이라는 것이 중요한데요, 역컴파일과는 사뭇 다릅니다.

 역컴파일은 클래스 파일을 가지고 원래 소스로 변환하는 것을 말하지만, 역어셈블은 클래스 파일의 내부의 기본 구조와 역어셈블코드(JVM의 바이너리 코드)만을 나오게 됩니다.

 특정 클래스의 내부 전체를 보고 싶은 경우는 역컴파일러를 이용하셔야 하고, 클래스 내부의 상수/함수들의 목록을 간단히 보고자 할때는 javap를 이용하는 것이 대부분입니다.

 이를 통해서 symbol not found 같은 에러를 찾는데 도움이 됩니다.

 

* 실행예

Integer 클래스의 javap 결과를 보겠습니다.

 public final class java.lang.Integer extends java.lang.Number implements java.lang.Comparable{
    public static final int MIN_VALUE;
    public static final int MAX_VALUE;
    public static final java.lang.Class TYPE;
    static final char[] digits;
    static final char[] DigitTens;
    static final char[] DigitOnes;
    public static java.lang.String toString(int,int);
    public static java.lang.String toHexString(int);
    public static java.lang.String toOctalString(int);
    public static java.lang.String toBinaryString(int);
    public static java.lang.String toString(int);
    static void appendTo(int,java.lang.StringBuffer);
    public static int parseInt(java.lang.String,int);
       throws java/lang/NumberFormatException
    public static int parseInt(java.lang.String);
       throws java/lang/NumberFormatException
    public static java.lang.Integer valueOf(java.lang.String,int);
       throws java/lang/NumberFormatException
    public static java.lang.Integer valueOf(java.lang.String);
       throws java/lang/NumberFormatException
    public java.lang.Integer(int);
    public java.lang.Integer(java.lang.String);
       throws java/lang/NumberFormatException
    public byte byteValue();
    public short shortValue();
    public int intValue();
    public long longValue();
    public float floatValue();
    public double doubleValue();
    public java.lang.String toString();
    public int hashCode();
    public boolean equals(java.lang.Object);
    public static java.lang.Integer getInteger(java.lang.String);
    public static java.lang.Integer getInteger(java.lang.String,int);
    public static java.lang.Integer getInteger(java.lang.String,java.lang.Integer);
    public static java.lang.Integer decode(java.lang.String);
       throws java/lang/NumberFormatException
    public int compareTo(java.lang.Integer);
    public int compareTo(java.lang.Object);
    static {};

[출처] javap의유용성|작성자 하자두


'I.lib() > I.lib(Java)' 카테고리의 다른 글

JNDI 란?  (1) 2010.04.08
자바 리플랙션 (Java Reflection)  (1) 2010.03.29
자바의 abstract와 인터페이스(Interface)  (0) 2010.03.24
POJO (Plain Old Java Object) 란?  (0) 2010.03.23
클레스 어샘블리. (Class -> Java )변환  (1) 2010.03.05
.
:
Posted by .07274.