일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 이진탐색
- Markdown
- 브루트포스
- 면접복기
- github
- 회고
- Greedy
- 마크다운
- 몬티홀
- BFS
- Stack
- 문제풀이
- Python
- 정수론
- 그래프탐색
- 빌더패턴
- 그래프 탐색
- GarbageCollector
- 백준
- 그리디
- GC
- 프로세스
- g1gc
- 분할정복
- deque
- 배열 돌리기1
- 적정 스레드
- DP
- springboot
- 구현
- Today
- Total
FeelingXD
[Kotlin] - 코틀린 컴파일 과정 본문
Kotlin 빌드과정
코틀린도 JVM 위에서 동작한다. 이를위해서는 코틀린또한 자바처럼 JVM 이 읽을수있는 JAVA Byte 코드로 변환된다.
이과정이 JAVA의 컴파일과 비슷하면서 조금 차이가 있다.
Kotlin 에서 Java Annotation 사용시 발생하는 문제
Kotlin 과 Java 를 혼용해서 사용하고 Java 어노테이션 프로세서를 사용하고있다면 Kotlin 에서 읽지못하는 문제가 발생할 수 있다.
왜 발생할까 ?
Kotlin 컴파일 순서는 다음과 같다.
컴파일 : Kotlin 코드가 먼저
컴파일되어서 .class 파일을 생성한다 그리고 Java 코드가 이후에 컴파일 될때 Java 어노테이션 프로세서가 생성한 코드를 Kotlin이 사용하기전에 이미 컴파일 되어있기때문에 컴파일 이후에 생성한
Java 코드를 Kotlin코드는 참조 할 수 없다.
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 |