Kotlin एक शून्य में नहीं रहता: अन्य भाषाओं के साथ मित्रता क्यों और कैसे करें
\n\nकल्पना करें: आप Kotlin में लिख रहे हैं - एक आधुनिक, संक्षिप्त और सुरक्षित भाषा। लेकिन आपका प्रोजेक्ट कोई खाली स्लेट नहीं है। सिस्टम की गहराइयों में कहीं Java पर लिखा हुआ लीगेसी कोड रहता है, एनालिटिक्स टीम को Python लाइब्रेरी चाहिए, और निम्न-स्तरीय संचालन के लिए C की आवश्यकता है। या आप Kotlin में बिज़नेस लॉजिक लिखकर उसे फ्रंटएंड पर पुनः उपयोग करना चाहते हैं, लेकिन वहाँ JavaScript का राज है।
\n\nअच्छी खबर: Kotlin का अन्य भाषाओं के साथ एकीकरण कोई दर्द नहीं, बल्कि एक सुपरपावर है। Kotlin को 'गोंद भाषा' बनने के लिए डिज़ाइन किया गया है। यह JVM पर (Java के साथ) काम कर सकता है, नेटिव कोड (Kotlin/Native) में कंपाइल हो सकता है, और यहाँ तक कि JavaScript (Kotlin/JS) में भी कंपाइल हो सकता है।
\n\nइस लेख में हम व्यावहारिक उदाहरणों के साथ Kotlin के अन्य भाषाओं के साथ इंटरैक्शन के चार प्रमुख परिदृश्यों पर चर्चा करेंगे। आप सीखेंगे कि Kotlin से Python को कैसे कॉल करें, JNI के माध्यम से C कोड को कैसे एम्बेड करें, Java के साथ सहजता से कैसे काम करें, और फ्रंटएंड पर Kotlin का उपयोग भी कैसे करें। चलिए शुरू करते हैं!
\n\n1. Kotlin और Java: पहली पंक्तियों से आत्मीय संबंध
\n\nसबसे स्पष्ट और सरल परिदृश्य है Kotlin Java इंटरैक्शन। चूँकि Kotlin JVM बाइट-कोड में कंपाइल होता है, यह Java के साथ 100% संगत है। आप Kotlin से किसी भी Java कोड को कॉल कर सकते हैं और इसके विपरीत - बिना किसी ब्रिज, एडेप्टर या दर्द के।
\n\nKotlin से Java को कैसे कॉल करें
\nमान लीजिए, आपके पास तिथियों के साथ काम करने के लिए एक पुराना Java क्लास है:
\n\n// Java: DateUtils.java\npublic class DateUtils {\n public static String formatDate(long timestamp) {\n return new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date(timestamp));\n }\n}\n\n\nKotlin में आप इसे अपने मूल क्लास की तरह उपयोग करते हैं:
\n\n// Kotlin\nfun main() {\n val formatted = DateUtils.formatDate(System.currentTimeMillis())\n println("आज: $formatted") // आज: 2025-04-03\n}\n\n\nसब कुछ 'बॉक्स से बाहर' काम करता है। लेकिन कुछ बारीकियाँ हैं: null-सुरक्षा। Java Kotlin के nullable प्रकारों के बारे में नहीं जानता, इसलिए Java विधियों को कॉल करते समय Kotlin रिटर्न वैल्यू को प्लेटफ़ॉर्म प्रकार (जैसे, String!) के रूप में मानता है। सलाह: हमेशा स्पष्ट रूप से प्रकार निर्दिष्ट करें या समझदारी से !! / ?. का उपयोग करें।
Java से Kotlin को कैसे कॉल करें
\nपिछड़ी संगतता भी मौजूद है। मान लीजिए, आपके पास एक Kotlin फ़ाइल है:
\n\n// Kotlin: Calculator.kt\npackage utils\n\nobject Calculator {\n @JvmStatic\n fun sum(a: Int, b: Int): Int = a + b\n}\n\n\nJava से इसे इस प्रकार कॉल करें:
\n\n// Java\nimport utils.Calculator;\n\npublic class Main {\n public static void main(String[] args) {\n int result = Calculator.sum(5, 3);\n System.out.println(result); // 8\n }\n}\n\n\nमुख्य बात स्टैटिक विधियों के लिए @JvmStatic एनोटेशन और नाम विरोधों को हल करने के लिए @JvmName को न भूलना है। Kotlin का Java के साथ एकीकरण इतना घनिष्ठ है कि आप एक ही प्रोजेक्ट में दोनों भाषाओं को मिला सकते हैं - यह Android डेवलपमेंट और Spring पर कई बैकएंड के लिए एक मानक है।
2. Kotlin और Python: दो दुनिया, एक JVM (और GraalVM)
\n\nयह और भी दिलचस्प है। Kotlin Python सबसे सामान्य जोड़ी नहीं है, लेकिन यह संभव है। कोई सीधा नेटिव ब्रिज नहीं है, लेकिन हम JVM-आधारित समाधानों का उपयोग कर सकते हैं।
\n\nविकल्प A: GraalVM - JVM पर Python चलाना
\nGraalVM एक वर्चुअल मशीन है जो एक ही प्रक्रिया में कई भाषाओं (Java, Kotlin, JavaScript, Python, Ruby) को चला सकती है। यह Kotlin के Python के साथ एकीकरण के लिए एक आदर्श उपकरण है।
\n\nGraalVM स्थापित करें और Python समर्थन जोड़ें:
\n\ngu install python\n\n\nअब Kotlin कोड में Python फ़ंक्शन को कॉल किया जा सकता है:
\n\n// Kotlin (GraalVM Polyglot API)\nimport org.graalvm.polyglot.*\n\nfun main() {\n val context = Context.create("python")\n // निष्पादित करें