Kotlin Multiplatform: क्रॉस-प्लेटफॉर्म डेवलपमेंट का गुप्त हथियार

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin सिर्फ Android के लिए नहीं है?

\n\n

अगर आप अब भी सोचते हैं कि Kotlin सिर्फ Android के लिए "बेहतर Java" है, तो आप बड़ी बात मिस कर रहे हैं। ऐसी दुनिया में जहां हर कोई एक कोड लिखकर हर जगह चलाना चाहता है, Kotlin Multiplatform (KMP) Flutter और React Native जैसे फ्रेमवर्क का असली "किलर" बनकर उभर रहा है। लेकिन इनके विपरीत, Kotlin आपको नेटिव UI छोड़ने या JavaScript सीखने के लिए मजबूर नहीं करता।

\n\n

कल्पना करें: आप बिजनेस लॉजिक, नेटवर्क रिक्वेस्ट और डेटाबेस ऑपरेशन एक बार Kotlin में लिखते हैं। फिर उसी कोड को Android, iOS, वेब और यहां तक कि सर्वर (Ktor) पर भी इस्तेमाल करते हैं। यह कोई कल्पना नहीं, बल्कि Kotlin में क्रॉस-प्लेटफॉर्म डेवलपमेंट की असली ताकत है।

\n\n

इस लेख में हम सिर्फ थ्योरी नहीं पढ़ाएंगे। हम आपको रियल कोड उदाहरण दिखाएंगे, KMP की तुलना प्रतिस्पर्धियों से करेंगे, और आज ही शुरुआत करने का स्टेप-बाय-स्टेप प्लान देंगे।

\n\n

Kotlin Multiplatform (KMP) क्या है और इसकी जरूरत क्यों है?

\n\n

KMP कोई फ्रेमवर्क नहीं है। यह Kotlin भाषा में बनी एक कंपाइलेशन तकनीक है। यह कॉमन कोड को अलग-अलग प्लेटफॉर्म पर कंपाइल करने की सुविधा देती है:

\n\n
    \n
  • Android — JVM बाइट-कोड (हमेशा की तरह)।
  • \n
  • iOS — नेटिव बाइनरी (LLVM के जरिए)।
  • \n
  • JavaScript/Web — ब्राउज़र के लिए JS कोड।
  • \n
  • Native (Linux, Windows, macOS) — Kotlin/Native के जरिए।
  • \n
\n\n

सबसे खास बात: आप expect/actual लिखते हैं — कॉमन कोड में अपेक्षित API घोषित करते हैं, और हर प्लेटफॉर्म के लिए अलग-अलग इसे लागू करते हैं। बाकी सब कुछ कॉमन रहता है।

\n\n

उदाहरण 1: नेटवर्क रिक्वेस्ट के लिए कॉमन मॉड्यूल

\n\n

चलिए एक सरल HTTP क्लाइंट बनाते हैं जो Android और iOS दोनों पर काम करेगा। इसके लिए हम Ktor का उपयोग करेंगे — जो Kotlin में लिखा गया क्लाइंट है।

\n\n

चरण 1: प्रोजेक्ट स्ट्रक्चर (Gradle)

\n\n

अपने कॉमन मॉड्यूल के build.gradle.kts फ़ाइल में:

\n\n
plugins {\n    kotlin("multiplatform")\n    id("io.ktor.plugin") version "2.3.7"\n}\n\nkotlin {\n    androidTarget()\n    iosX64()\n    iosArm64()\n    iosSimulatorArm64()\n\n    sourceSets {\n        val commonMain by getting {\n            dependencies {\n                implementation("io.ktor:ktor-client-core:2.3.7")\n                implementation("io.ktor:ktor-client-content-negotiation:2.3.7")\n                implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")\n            }\n        }\n        val androidMain by getting {\n            dependencies {\n                implementation("io.ktor:ktor-client-android:2.3.7")\n            }\n        }\n        val iosMain by creating {\n            dependsOn(commonMain)\n            dependencies {\n                implementation("io.ktor:ktor-client-darwin:2.3.7")\n            }\n        }\n    }\n}
\n\n

चरण 2: कॉमन कोड (commonMain)

\n\n

एक data class और API क्लाइंट बनाएं:

\n\n
// commonMain/kotlin/com/example/User.kt\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class User(\n    val id: Int,\n    val name: String,\n    val email: String\n)\n\n// commonMain/kotlin/com/example/ApiClient.kt\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.plugins.contentnegotiation.*\nimport io.ktor.client.request.*\nimport io.ktor.serialization.kotlinx.json.*\n\nclass ApiClient {\n    private val client = HttpClient {\n        install(ContentNegotiation) {\n            json()\n        }\n    }\n\n    suspend fun fetchUser(id: Int): User {\n        return client.get("https://jsonplaceholder.typicode.com/users/$id").body()\n    }\n}
\n\n

देखा? कोई if-else नहीं, कोई प्लेटफॉर्म चेक नहीं। बस साफ-सुथरा Kotlin कोड।

\n\n

उदाहरण 2: SharedPreferences के लिए Expect/Actual

\n\n

मान लीजिए हमें एक टोकन सेव करना है। Android पर SharedPreferences, iOS पर UserDefaults। देखिए KMP का जादू:

\n\n

कॉमन कोड (commonMain):

\n\n
// commonMain                

ब्लॉग

पुस्तक अनुशंसाएँ