0Pricing
Kotlin Academy · Lección

KSP frente a KAPT: por qué KSP es más rápido

Compare los modelos de procesamiento de KSP y KAPT y comprenda las ventajas de rendimiento.

KSP frente a KAPT: por qué KSP es más rápido es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

El problema del procesamiento de anotaciones

Los procesadores de anotaciones generan código durante la compilación. Durante años, los proyectos de Kotlin usaron KAPT —Kotlin Annotation Processing Tool—, que funciona convirtiendo el código fuente de Kotlin en stubs de Java antes de pasarlos a los procesadores de anotaciones de Java. Esta conversión es costosa.

Cómo funciona KAPT

KAPT ejecuta el compilador de Kotlin para producir archivos de stubs de Java, después ejecuta procesadores de anotaciones de Java (APT) sobre esos stubs y, por último, compila todo conjuntamente. Cada paso de la compilación añade latencia:

  • Compilación de Kotlin → stubs de Java
  • Procesamiento de Java APT sobre los stubs
  • Compilación final de Kotlin + código fuente generado

Cómo funciona KSP

KSP (Kotlin Symbol Processing) se ejecuta directamente sobre la API de complementos del compilador de Kotlin. Lee de forma nativa el árbol de sintaxis abstracta (AST) de Kotlin: no genera stubs ni utiliza un intermediario de Java. Los procesadores implementan SymbolProcessor y recorren objetos KSNode.

Comparación de velocidad

Los datos de referencia de Google muestran que KSP es hasta 2× más rápido que KAPT en compilaciones incrementales y significativamente más rápido en compilaciones limpias. El ahorro se debe a la eliminación de la generación de stubs, que puede representar entre el 30 y el 50 % del tiempo de compilación de KAPT en proyectos grandes.

Procesamiento incremental

KSP admite de forma nativa el procesamiento incremental: solo se vuelven a procesar los símbolos que han cambiado desde la última compilación. KAPT ofrece una compatibilidad incremental limitada. En bases de código grandes con cambios pequeños y frecuentes, esta diferencia es considerable.

Diferencias entre las API

Los procesadores de KAPT implementan javax.annotation.processing.AbstractProcessor (la API de Java). Los procesadores de KSP implementan com.google.devtools.ksp.processing.SymbolProcessor (la API de Kotlin, con construcciones propias de Kotlin como clases selladas y funciones de extensión).

Información de tipos propia de Kotlin

Como KSP lee directamente el AST de Kotlin, puede ver construcciones específicas de Kotlin que los stubs de KAPT no pueden representar fielmente: nulabilidad, valores de parámetros predeterminados, funciones de extensión, declaraciones expect/actual y clases inline.

Compatibilidad multiplataforma

KSP 2.x admite Kotlin Multiplatform. Un solo procesador de KSP puede generar código para los destinos JVM, JS y Native. KAPT solo funciona en JVM y no puede procesar los fuentes commonMain de KMP.

Ruta de migración de KAPT a KSP

La mayoría de las bibliotecas populares tienen variantes para KSP: Room (KSP), Hilt (KSP), Moshi (KSP) y Dagger (parcial). Consulte la documentación de la biblioteca. Sustituya kapt("...") por ksp("...") en su compilación y elimine el complemento de KAPT cuando haya migrado todos los procesadores.

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

Cuándo sigue siendo necesario KAPT

Use KAPT cuando una biblioteca todavía no tenga una variante de su procesador para KSP. Se admite combinar KAPT y KSP en el mismo proyecto, pero esto no elimina la sobrecarga de generación de stubs de KAPT para los procesadores que utilizan KAPT.

Herramientas y depuración

Los procesadores de KSP pueden registrar mensajes con distintos niveles de gravedad (KSPLogger). Los archivos generados aparecen en build/generated/ksp/. La compatibilidad del IDE (IntelliJ / Android Studio) resalta los fuentes generados y permite navegar hasta ellos.

Comprobación rápida

¿Por qué KSP es más rápido que KAPT en las compilaciones incrementales?

Resumen: KSP frente a KAPT

Conclusiones clave:

  • KAPT: convierte Kotlin en stubs de Java y después ejecuta Java APT; es lento y solo funciona en JVM
  • KSP: lee el AST de Kotlin de forma nativa mediante un complemento del compilador; es hasta 2× más rápido
  • KSP admite el procesamiento incremental y Kotlin Multiplatform
  • KSP reconoce construcciones específicas de Kotlin que los stubs de KAPT no pueden representar
  • Migre sustituyendo kapt() por ksp() cuando la biblioteca lo admita

Preguntas frecuentes

¿La lección «KSP frente a KAPT: por qué KSP es más rápido» es gratis?

Sí — el texto completo de «KSP frente a KAPT: por qué KSP es más rápido» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «KSP frente a KAPT: por qué KSP es más rápido»?

Compare los modelos de procesamiento de KSP y KAPT y comprenda las ventajas de rendimiento. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «KSP frente a KAPT: por qué KSP es más rápido»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. KSP frente a KAPT: por qué KSP es más rápido
  2. Escribir su primer SymbolProcessor
  3. Generar archivos fuente de Kotlin con KotlinPoet
  4. Integrar procesadores KSP en una compilación de Gradle
← Volver a Kotlin Academy