Java 디컴파일 도구 JD-GUI 설치 및 사용 방법(.class .jar 디컴파일)

1. Java 실행 원리

JD-GUI에 대해 살펴보기 전 Java 언어의 실행 원리를 간단하게 살펴보면 다음과 같습니다.
먼저, 작성된 Java 코드는 자바 컴파일러인 javac를 통해 바이트코드(.class 파일)로 변환됩니다.
이렇게 컴파일된 바이트 코드는 JVM(Java Virtual Machine)의 클래스 로더에 의해 메모리에 로딩되는데요.
로딩된 바이트코드는 JIT 컴파일러에 의해 기계어로 변환되거나, 인터프리터 방식으로 실행됩니다.
이러한 실행 방식 덕분에 Java 프로그램은 운영체제에 종속되지 않고, 다양한 플랫폼에서 동일한 방식으로 실행될 수 있습니다.
2. 디컴파일(Decompile)이 필요한 경우
디컴파일이란, 컴파일된 바이트코드를 다시 원본 소스로 복원하는 과정을 말하는데요.
컴파일러가 소스코드를 컴파일하는 과정에서 최적화가 수행되기 때문에 디컴파일 된 소스코드는 원본 코드와 완전히 동일하지 않을 수 있다는 특징이 있습니다.
디컴파일이 필요한 몇 가지 경우를 살펴보면 다음과 같습니다.
- 소스코드의 손실
백업되지 않은 소스 코드가 삭제되거나 손상되었을 때, 디컴파일을 통해 원본 소스와 비슷한 형태의 코드를 복원할 수 있습니다.
- 디버깅 및 문제 해결
이미 컴파일되어 동작 중인 프로그램에서 문제가 발생하는 경우, 디컴파일러를 통해 원본 소스와 비슷한 형태의 코드를 복원할 수 있습니다.
- 라이브러리 분석
개발 과정에서 사용되는 라이브러리가 기계어 또는 바이트코드 형태로만 제공되는 경우, 라이브러리의 동작을 이해하거나 문제를 해결하기 위해 디컴파일을 통해 소스코드를 확인할 수 있습니다.
* 디컴파일은 경우에 따라 저작권의 문제가 발생할 수 있기 때문에 사용에 주의가 필요합니다.
3. JD-GUI 다운로드 및 사용 방법

https://java-decompiler.github.io/
먼저 해당 링크의 JD-GUI Download 부분을 통해 운영체제에 맞는 jd-gui 프로그램을 다운로드합니다.

macOS의 경우 .jar 파일을 다운로드하여 jar 파일 실행 명령어를 통해 jd-gui 프로그램을 실행할 수 있습니다.

디컴파일 방법은 간단합니다.
디컴파일이 필요한 .class .jar .war 파일을 드래그 또는 'File -> Open File...'을 통해 열어주면 됩니다.
'Programming > Java' 카테고리의 다른 글
(java) ZipArchiveOutputStream, ZipArchiveEntry 클래스를 통한 파일 압축 방법 (3) | 2024.11.13 |
---|---|
윈도우 서버에서 jar 파일 백그라운드 실행하기 (0) | 2024.03.09 |
Java 운영체제(윈도우, 리눅스) 프로세스 상태 확인하는 방법 (0) | 2024.02.11 |
SOLID 객체 지향 프로그래밍의 5가지 원칙 (0) | 2023.08.14 |
java @Builder 기능 더 활용하기(toBuilder, @Singular 등) (0) | 2023.08.05 |