문제 상황
자바 코드를 코틀린 코드로 마이그레이션 하는 과정에서 "이거 자바 코드로 바꾸면 어떻게 되지?" 라는 의문이 들었다.
특히 상수 선언 방법이 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 코드가 class 파일로 컴파일되었다가, 다시 Java 코드로 디컴파일된 위와 같은 결과를 얻을 수 있다.
이를 통해 내가 작성한 Kotlin 코드가 Java에선 어떨지 확인하여 내가 의도한 코드가 맞는 지 확인하면서 마이그레이션을 진행할 수 있게 된다.
'Language > Kotlin' 카테고리의 다른 글
Kotlin에서의 상수 선언 (feat. const와 static final의 차이) (0) | 2024.11.23 |
---|