0Pricing
Kotlin Academy · 강의

KSP와 KAPT 비교: KSP가 더 빠른 이유

KSP와 KAPT의 처리 모델을 비교하고 성능상 이점을 이해해 보세요.

KSP와 KAPT 비교: KSP가 더 빠른 이유은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

애너테이션 처리의 문제점

애너테이션 처리기는 빌드 시 코드를 생성합니다. Kotlin 프로젝트에서는 수년 동안 KAPT — Kotlin 애너테이션 처리 도구 — 를 사용해 왔습니다. KAPT는 Kotlin 소스를 Java 스텁으로 변환한 후 Java 애너테이션 처리기에 전달하는 방식으로 동작합니다. 이 변환에는 상당한 비용이 듭니다.

KAPT의 작동 방식

KAPT는 먼저 Kotlin 컴파일러를 실행해 Java 스텁 파일을 생성한 다음, 해당 스텁에 Java 애너테이션 처리기(APT)를 실행하고, 마지막으로 모든 항목을 함께 컴파일합니다. 각 빌드 단계가 지연 시간을 늘립니다:

  • Kotlin → Java 스텁 컴파일
  • 스텁에 대한 Java APT 처리
  • 최종 Kotlin + 생성된 소스 컴파일

KSP의 작동 방식

KSP(Kotlin 심벌 처리)는 Kotlin 컴파일러 플러그인 API에서 직접 실행됩니다. Kotlin의 추상 구문 트리(AST)를 기본적으로 읽으므로 스텁 생성이나 Java 중간 단계가 필요하지 않습니다. 처리기는 SymbolProcessor를 구현하고 KSNode 객체를 순회합니다.

속도 비교

Google의 벤치마크 자료에 따르면 증분 빌드에서 KSP는 KAPT보다 최대 2배 빠르며, 클린 빌드에서는 훨씬 더 빠릅니다. 이러한 시간 절약은 스텁 생성을 제거한 데서 비롯됩니다. 대규모 프로젝트에서는 스텁 생성이 KAPT 빌드 시간의 30–50%를 차지할 수 있습니다.

증분 처리

KSP는 증분 처리를 기본적으로 지원하므로 마지막 빌드 이후 변경된 심벌만 다시 처리합니다. KAPT의 증분 지원은 제한적입니다. 작고 잦은 변경이 발생하는 대규모 코드베이스에서는 이 차이가 매우 큽니다.

API 차이

KAPT 처리기는 javax.annotation.processing.AbstractProcessor(Java API)를 구현합니다. KSP 처리기는 com.google.devtools.ksp.processing.SymbolProcessor(봉인 클래스와 확장 함수 같은 Kotlin 고유 구성 요소를 사용하는 Kotlin API)를 구현합니다.

Kotlin 고유 타입 정보

KSP는 Kotlin AST를 직접 읽기 때문에 KAPT 스텁이 정확하게 표현할 수 없는 Kotlin 고유 구성 요소를 확인할 수 있습니다. 여기에는 null 허용 여부, 기본 매개변수 값, 확장 함수, expect/actual 선언, 인라인 클래스가 포함됩니다.

멀티플랫폼 지원

KSP 2.x는 Kotlin Multiplatform을 지원합니다. 하나의 KSP 처리기로 JVM, JS, Native 대상용 코드를 생성할 수 있습니다. KAPT는 JVM 전용이며 KMP commonMain 소스를 처리할 수 없습니다.

KAPT에서 KSP로 마이그레이션하기

널리 사용되는 대부분의 라이브러리에는 KSP용 버전이 있습니다. Room(KSP), Hilt(KSP), Moshi(KSP), Dagger(일부 지원) 등이 그 예입니다. 라이브러리 문서를 확인하십시오. 빌드에서 kapt("...")를 ksp("...")로 바꾸고 모든 처리기를 마이그레이션한 후 KAPT 플러그인을 제거합니다.

plugins {
    id("com.google.devtools.ksp") version "2.0.0-1.0.21"
}
dependencies {
    ksp("androidx.room:room-compiler:2.6.1")
}

KAPT가 여전히 필요한 경우

라이브러리에 아직 KSP 처리기 버전이 없을 때는 KAPT를 사용하십시오. 같은 프로젝트에서 KAPT와 KSP를 함께 사용할 수는 있지만, KAPT 처리기에 필요한 스텁 생성 오버헤드까지 제거되지는 않습니다.

도구 및 디버깅

KSP 처리기는 다양한 심각도 수준으로 메시지를 기록할 수 있습니다(KSPLogger). 생성된 파일은 build/generated/ksp/에 나타납니다. IntelliJ와 Android Studio의 IDE 지원 기능은 생성된 소스를 강조 표시하고 해당 위치로 이동할 수 있게 합니다.

빠른 확인

증분 빌드에서 KSP가 KAPT보다 빠른 이유는 무엇인가요?

복습: KSP와 KAPT 비교

핵심 내용:

  • KAPT: Kotlin을 Java 스텁으로 변환한 다음 Java APT를 실행하므로 느리고 JVM 전용입니다
  • KSP: 컴파일러 플러그인을 통해 Kotlin AST를 기본적으로 읽으므로 최대 2배 빠릅니다
  • KSP는 증분 처리와 Kotlin Multiplatform을 지원합니다
  • KSP는 KAPT 스텁이 표현할 수 없는 Kotlin 고유 구성 요소를 확인합니다
  • 라이브러리가 지원한다면 kapt()를 ksp()로 바꾸어 마이그레이션합니다

자주 묻는 질문

“KSP와 KAPT 비교: KSP가 더 빠른 이유” 강의는 무료인가요?

네 — “KSP와 KAPT 비교: KSP가 더 빠른 이유” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“KSP와 KAPT 비교: KSP가 더 빠른 이유”에서 뭘 배우나요?

KSP와 KAPT의 처리 모델을 비교하고 성능상 이점을 이해해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“KSP와 KAPT 비교: KSP가 더 빠른 이유” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. KSP와 KAPT 비교: KSP가 더 빠른 이유
  2. 첫 SymbolProcessor 작성하기
  3. KotlinPoet으로 Kotlin 소스 파일 생성하기
  4. KSP 프로세서를 Gradle 빌드에 통합하기
← Kotlin Academy(으)로 돌아가기