FeelingXD

[Kotlin] - 코틀린 컴파일 과정 본문

프로그래밍

[Kotlin] - 코틀린 컴파일 과정

FeelingXD 2024. 6. 22. 19:41

Kotlin 빌드과정

코틀린도 JVM 위에서 동작한다. 이를위해서는 코틀린또한 자바처럼 JVM 이 읽을수있는 JAVA Byte 코드로 변환된다.
이과정이 JAVA의 컴파일과 비슷하면서 조금 차이가 있다.

코틀린 과 자바 컴파일 과정

Kotlin 에서 Java Annotation 사용시 발생하는 문제

Kotlin 과 Java 를 혼용해서 사용하고 Java 어노테이션 프로세서를 사용하고있다면 Kotlin 에서 읽지못하는 문제가 발생할 수 있다.

왜 발생할까 ?

Kotlin 컴파일 순서는 다음과 같다.

컴파일 : Kotlin 코드가 먼저 컴파일되어서 .class 파일을 생성한다 그리고 Java 코드가 이후에 컴파일 될때 Java 어노테이션 프로세서가 생성한 코드를 Kotlin이 사용하기전에 이미 컴파일 되어있기때문에 컴파일 이후에 생성한

Java 코드를 Kotlin코드는 참조 할 수 없다.

Lombok 사용시 코틀린은 어노테이션 프로세서가 없기에 코틀린은 Lombok 을알지못함

 

KAPT (Kotlin Annotation Processing Tool)

Kotlin 에서 Annotation 처리를 위해 KAPT(Kotlin Annotation Processing Tool) 플러그인 을 제공합니다.

 

 

KAPT는 어떻게 어노테이션 프로세싱을 지원할까

 

 

1. KAPT 는 Kotlin 코드를 분석하여 Java 스텁 코드를 생성합니다. 이 스텁 코드는 Kotlin코드의 구조를 Java로 표현한것입니다.

 2. Java 어노테이션 프로세서 실행

이제 Kotlin 코드가 변환된 Java 스텁 코드로 Java 어노테이션 프로세스를 실행합니다. 이를 통해 Java로 작성된 어노테이션 프로세서가 Kotlin 코드의 어노테이션 을 지원하게 됩니다.

 

3. 코드 생성:

어노테이션 프로세서가 생성한 코드는 Kotlin 컴파일러가 이해할 수 있는 형태로 변환되어 최종 컴파일 결과물에 포함된빈다.

4. 빌드 프로세스 통합:

KAPT 는 Gradle 빌드 프로세스에 통합되어, 필요한 단계에서 자동으로 실행됩니다. 개발자는 build.gradlef 파일에 KAPT 플러그인을 적용하고, 필요한 의존성을 kapt 키워드로 선언하여 사용할 수 있습니다.(kapt 에서 지원하는지 확인 필요)

 

- kapt를 통해 kotlin 에서 java 어노테이션을 사용할 수 있게되었습니다. 하지만 이과정중에서 중간에 Java 스텁코드를 생성해야하는등의 불필요한 오버헤드가 발생하기도합니다. 이때문에 빌드시간이 느려질 수 있습니다.

'프로그래밍' 카테고리의 다른 글

[Git] - Git 브랜치 전략 😸  (0) 2024.06.01
[Docker] Docker 와 VM🐬  (0) 2024.02.21
Λ - 람다 함수가 뭐에요? 🤔  (0) 2024.02.05
객체 지향 프로그래밍 .md 👀  (0) 2024.01.22