Kotlin Symbol Processing (KSP) Kotlin: पूरी गाइड उदाहरणों के साथ
1. KSP क्या है और इसकी ज़रूरत क्यों है?
Kotlin Symbol Processing (KSP) JetBrains द्वारा विकसित एक लाइब्रेरी और कंपाइलर प्लगइन है। इसका मुख्य उद्देश्य Kotlin डेवलपर्स को कंपाइलेशन के समय सोर्स कोड का विश्लेषण करने और उसके आधार पर नया कोड (कोड जनरेशन) बनाने का एक सरल, तेज़ और विश्वसनीय API प्रदान करना है। KSP पुराने javax.annotation.processing (Java Annotation Processing) तंत्र का सीधा विकल्प है, जो Java के लिए बनाया गया था और Kotlin के साथ काम करते समय इसकी कई सीमाएँ हैं।
KSP की ज़रूरत क्यों है? आधुनिक Kotlin डेवलपमेंट में अक्सर बॉयलरप्लेट कोड को ऑटोमैटिक बनाने की ज़रूरत होती है: DTO क्लासेज़, मैपर, Parcelable इम्प्लीमेंटेशन, Room एंटिटीज़, Moshi एडॉप्टर और भी बहुत कुछ। KSP यह सब कंपाइलेशन के समय करता है, बिना रनटाइम रिफ्लेक्शन के, जिससे ऐप की परफॉरमेंस बेहतर होती है। KAPT (Kotlin Annotation Processing Tool) के विपरीत, KSP सीधे Kotlin के AST ट्री के साथ काम करता है, बीच की Java स्टेज को छोड़कर, जिससे स्पीड 2-4 गुना तक बढ़ जाती है। KSP Kotlin की नई भाषा सुविधाओं (suspend फंक्शन, inline क्लासेज़, value क्लासेज़) को भी बेहतर सपोर्ट करता है और Java स्टब्स जनरेट करने की ज़रूरत नहीं होती।
KSP अपनी खुद की कोड जनरेशन लाइब्रेरी, फ्रेमवर्क (जैसे Dagger, Room, Glide) और मेटाप्रोग्रामिंग टूल्स बनाने के लिए एकदम सही है। इसका उपयोग Kotlin इकोसिस्टम में बड़े पैमाने पर होता है: Compose, Room, Moshi, Koin, Apollo GraphQL और कई अन्य लोकप्रिय लाइब्रेरीज़ में।
2. इंस्टॉलेशन
KSP को pip या npm के ज़रिए नहीं, बल्कि Gradle बिल्ड सिस्टम के ज़रिए इंस्टॉल किया जाता है। Kotlin प्रोजेक्ट के लिए, आपको KSP प्लगइन और Kotlin वर्शन के अनुसार उसका सही वर्शन जोड़ना होगा।
build.gradle.kts (रूट प्रोजेक्ट) में जोड़ने का सटीक तरीका:
// build.gradle.kts (रूट लेवल)
plugins {
id("org.jetbrains.kotlin.jvm") version "1.9.22" apply false
id("com.google.devtools.ksp") version "1.9.22-1.0.17" apply false
}
// build.gradle.kts (ऐप मॉड्यूल)
plugins {
id("org.jetbrains.kotlin.jvm")
id("com.google.devtools.ksp")
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.22")
implementation("com.squareup:kotlinpoet:1.16.0") // कोड जनरेशन के लिए
ksp("com.example:my-processor:1.0.0") // आपका प्रोसेसर
}
Gradle Groovy (build.gradle) के लिए: