CodeBlanks Logo Icon CodeBlanks

KSP vs KAPT

KSP ve KAPT farkını öğrenirsin.

KSP ve KAPT farkı

KSP ve KAPT her ikisi de derleme zamanı kod üretir ama yolları farklıdır. KSP doğrudan Kotlin sembollerini okur; KAPT önce Kotlin'i Java stub'ına dönüştürür.

KSP 2 kata kadar hızlıdır; Kotlin'e özgü yapıları (suspend fonksiyon, inline class) daha iyi destekler. KAPT daha eski ve yaygın; Dagger gibi eski kütüphaneler hala KAPT gerektirir. Yeni bir proje başlatırken KSP'yi tercih et; mevcut bağımlılık KAPT zorluyorsa geçiş planı yap. İkisi de derleme zamanı kod üretir; runtime yükü yoktur.

Geçiş planı

KAPT'den KSP'ye geçiş çoğu zaman basittir: Gradle dosyasında kapt yerine ksp kullan ve bağımlılıkları güncelle.

Örnek: kapt("com.example:processor:1.0") yerine ksp("com.example:processor:1.0") yaz. Kotlin 2.x ile kapt plugin'i hala çalışır ama KSP önerilir. Eğer bir bağımlılık KSP sunmuyorsa geçici olarak KAPT tutulur; kütüphane KSP desteği eklediğinde tamamen kaldırılır. Bu yaklaşım projeyi çalışır halde tutar.

Uygulama Karşılaştırma tablosu yaz

data class Tool(val name: String, val factor: Int) tanımla. main içinde listOf(Tool("KSP", 1), Tool("KAPT", 3)) oluştur. Her araç için println("${'$'}{it.name}: ${'$'}{it.factor}x") yaz.

Başlangıç kodu

Main.kt
// Tool veri sınıfını ekle

fun main() {
    // iki Tool örneği oluştur ve her birini yazdır
}

Örnek çözüm

Main.kt
data class Tool(val name: String, val factor: Int)
fun main() {
    val tools = listOf(Tool("KSP", 1), Tool("KAPT", 3))
    tools.forEach { println("${it.name}: ${it.factor}x") }
}

Beklenen çıktı

KSP: 1x
KAPT: 3x

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangisi daha hızlıdır?

  • KAPT, çünkü Java kullanır
  • KSP, çünkü Kotlin'i doğrudan okur Doğru cevap
  • İkisi de aynı hızda
  • Bağlı kütüphaneye göre değişir

Açıklama: KSP, Kotlin sembollerini doğrudan okuduğu için daha hızlıdır.

2 KSP'nin hızını yaz

Soru
val ksp = 1
val kapt = ____
println("KSP ${ksp}x, KAPT ${kapt}x")
Cevap
val ksp = 1
val kapt = 3
println("KSP ${ksp}x, KAPT ${kapt}x")

Açıklama: KAPT tipik olarak 3 kata kadar yavaştır.

3 KSP/KAPT eşle

Kavram Anlamı
KSP Doğrudan Kotlin okur
KAPT Java stub'ına dönüştürür
ksp(...) KSP bağımlılığı
kapt(...) KAPT bağımlılığı

Uzman bölümündeki tüm dersler