Language/Kotlin

Kotlin 코드를 Java 코드로 디컴파일(Decompile) 하는 방법

PgmJUN 2024. 11. 23. 16:03

 

 

문제 상황

자바 코드를 코틀린 코드로 마이그레이션 하는 과정에서 "이거 자바 코드로 바꾸면 어떻게 되지?" 라는 의문이 들었다.

 

특히 상수 선언 방법이 2개인 코틀린에서 companion object, const 를 각각 사용하여 상수 선언 시

둘의 결과는 같은 지, 아니면 내가 아는 것과 조금 다르게 동작할 지에 대한 의문으로 디컴파일 방법을 탐색하여 알게 되었다.

 

 


 

Kotlin to Java 디컴파일(Decompile)이란?

Kotlin 을 Java로 디컴파일 한다는 것은

Kotlin으로 작성된 언어를 .class 파일로 컴파일한 다음, 다시 Java로 디컴파일을 수행한다는 것을 의미한다.

 

결국 Kotlin으로 작성된 코드가 Java로 보면 어떤 지 확인할 수 있기 때문에 Java -> Kotlin 마이그레이션 상황에서 굉장히 유용하게 사용할 수 있다.

 

 


 

방법

IntelliJ는 JetBrains에서 만들었다.

Kotiln 또한 JetBrains에서 만든 언어이다.

때문에 JetBrains에선 Kotlin 언어에 대한 지원이 풍족한데, 이 기능 또한 IntelliJ에서 제공하는 기능이다.

 

 

 

IDE 화면에서 shift를 2번 연속으로 누르게 되면 위와 같은 입력창이 나타난다.

여기서 show kotlin bytecode 를 검색하게 되면 위와 같은 기능이 보여진다.

 

한 번 선택해보자.

 

 


그럼 위와 같이 화면 우측에 Decompile 버튼이 나타나는데, 클릭해보자

 

 

(좌) Kotlin 코드 / (우) Decompile된 코드

 

그럼 위와 같이 Kotlin 코드가 class 파일로 컴파일되었다가, 다시 Java 코드로 디컴파일된 위와 같은 결과를 얻을 수 있다.

 

이를 통해 내가 작성한 Kotlin 코드가 Java에선 어떨지 확인하여 내가 의도한 코드가 맞는 지 확인하면서 마이그레이션을 진행할 수 있게 된다.