[java] Java 클래스 파일을 어떻게 “디 컴파일”합니까? [닫은]

클래스 파일을 디 컴파일하기 위해 어떤 프로그램을 사용할 수 있습니까? 실제로 Java 코드를 받습니까 아니면 JVM 어셈블리 코드입니까?

이 사이트의 Java 성능 관련 질문에서, 종종 Java 클래스 파일을 “디 컴파일”한 사람들의 응답을보고 컴파일러가 특정 사항을 최적화하는 방법을 확인합니다.



답변

2016 년 2 월 업데이트 :

www.javadecompilers.com 은 JAD를 다음과 같이 나열합니다.

가장 인기있는 Java 디 컴파일러이지만 주로이 시대에만 사용됩니다. C ++로 작성되었으므로 매우 빠릅니다.
오래되고 지원되지 않으며 올바르게 Java 5 이상을 디 컴파일하지 않습니다.

따라서 마일리지는 최근 jdk (7, 8)에 따라 다를 수 있습니다.

동일한 사이트에 다른 도구가 나열됩니다.

Salvador Valencia주석 (2017 년 9 월) 에 언급 한 바와 같이 javadecompiler 는 .class파일을 클라우드에 업로드 하고 디 컴파일 된 코드를 반환 하는 SaaS를 제공합니다 .


원래 답변 : 2008 년 10 월

  • J2SE 5.0 (Java SE 5)의 주요 기능을 정의하는 JSR 176의 최종 릴리스는 2004 년 9 월 30 일에 공개되었습니다.
  • Pavel Kouznetsov가 작성한 유명한 Java 디 컴파일러 인 JAD가 지원하는 최신 Java 버전은 JDK 1.3 입니다.
  • “DJ Java Decompiler”또는 “Cavaj Java Decompiler”와 같이 오늘날 인터넷에서 다운로드 할 수있는 대부분의 Java 디 컴파일러는 JAD에 의해 구동되며 Java 5 소스를 표시 할 수 없습니다.

Java Decompiler (아직 다른 Fast Java 디 컴파일러)에는 다음이 있습니다.

  • Java 5+ “.class”파일의 디 컴파일 및 분석을위한 명시 적 지원
  • 좋은 GUI :

스크린 샷

JDK 1.1.8에서 JDK 1.7.0까지의 컴파일러 및 기타 ( Jikes , JRockit 등) 와 함께 작동합니다 .

실제로 완벽하게 작동 하는 온라인 라이브 데모 버전 이 있습니다! 페이지에 jar 파일을 드롭하고 아무것도 설치하지 않고 디 컴파일 된 소스 코드를 볼 수 있습니다.


답변

디 컴파일러가 몇 개 있습니다 … 빠른 검색 결과 :

  1. 프로키온 : 오픈 소스 (Apache 2) 및 적극적으로 개발
  2. 크라 카타 우 : 오픈 소스 (GPLv3) 및 적극적으로 개발
  3. CFR : 오픈 소스 (MIT) 및 적극적으로 개발
  4. JAD
  5. DJ 자바 디 컴파일러
  6. 모카

그리고 더 많은.

이것들은 Java 코드를 생성합니다. Java에는 JVM 바이트 코드 ( javap ) 를 볼 수있는 기능이 있습니다 .


답변

Java 소스 코드를 보려면 디 컴파일러를 확인하십시오. jad 검색으로 이동하십시오 .

바이트 코드를 보려면 JDK와 함께 제공되는 javap 를 사용하십시오 .


답변

나는 여러 가지를 시도했지만 Procyon 은 나에게 가장 잘 작동하는 것처럼 보였다. 현재 개발 중이며 최신 Java 버전의 많은 기능을 지원합니다.

이것들은 내가 시도한 다른 것입니다.

  • CFR
    • 유망하지만 종종 메소드 디 컴파일에 실패했습니다. 나는 이것에 계속 내 눈을 유지합니다. 또한 최신 Java 기능을 지원하여 적극적으로 개발되었습니다.
  • 크라 카타 우
    • 원본 소스를 재구성하는 대신 동등한 Java 코드를 출력하려고 시도하는 다른 접근 방식을 취합니다. 내 테스트에서 Procyon과 거의 비슷한 수준이지만 여전히 다른 것이 좋습니다. -skip오류가 발생하지 않도록 명령 줄 플래그 를 사용해야했습니다 . 적극적으로 개발되었고 흥미롭게도 파이썬으로 작성되었습니다.
  • JD-GUI
  • JAD
    • 작동했지만 Java 1.4 이하 만 지원합니다. Eclipse 플러그인 으로도 사용 가능 합니다. 더 이상 개발 중이 아닙니다.

답변

JAD Decompiler를 사용 합니다.

이클립스 그것을위한 플러그인, jadeclipse는 . 그것은 꽤 좋다.


답변

프로키온 에는 디 컴파일러가 포함되어 있습니다. FOSS입니다.


답변

그을음 은 최신 Java 코드를위한 옵션입니다. 적어도 그것은 여전히 ​​최근에 유지되고 있다는 장점이 있습니다 …

또한 Java Decompiler 는 독립형 GUI와 Eclipse 통합을 모두 갖춘 디 컴파일러입니다.

마지막으로 Jdec 은 언급되지 않았지만 다른 옵션만큼 세련되지는 않았습니다.