Kotlin से Java: फ़ाइलें कैसे बदलें? डेवलपर्स के लिए गाइड

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

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

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

Kotlin को Java में क्यों बदलें, जब Kotlin ही "नया Java" है?

\n\n

यह एक विरोधाभास जैसा लगता है: आप Kotlin में लिखते हैं, और फिर Java कोड प्राप्त करना चाहते हैं। क्यों? वास्तव में कई स्थितियाँ हैं। हो सकता है कि आपको Kotlin में लिखा गया कोई प्रोजेक्ट विरासत में मिला हो, लेकिन आपकी टीम अभी तक उस पर स्विच करने के लिए तैयार न हो। या आप Java से तुलना करके Kotlin सीख रहे हों - यह सबसे प्रभावी तरीकों में से एक है। या हो सकता है कि आपको किसी पुराने Java प्रोजेक्ट में Kotlin लाइब्रेरी को एम्बेड करना हो, और आप यह समझना चाहते हों कि कोई विशेष तरीका वास्तव में कैसे काम करता है।

\n\n

किसी भी स्थिति में, प्रश्न "Kotlin सोर्स फ़ाइल को Java सोर्स फ़ाइल में कैसे बदलें" Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक है (हज़ारों व्यूज़)। और आज हम इसे शुरू से अंत तक समझेंगे। आप जानेंगे कि आधिकारिक तौर पर (IntelliJ IDEA के माध्यम से) और अनौपचारिक रूप से (डीकंपाइलेशन के माध्यम से) .kt को .java में कैसे बदलें, कौन सी छिपी हुई समस्याएँ आपका इंतज़ार कर रही हैं, और अगर कुछ काम नहीं करता है तो क्या करें।

\n\n

1. सीधा रूपांतरण: मिथक या वास्तविकता?

\n\n

हम आपको पहले ही चेतावनी देते हैं: Kotlin → Java का "एक-से-एक" उल्टा रूपांतरण मौजूद नहीं है। Kotlin Java के ऊपर सिर्फ "चीनी" नहीं है, इसकी अपनी शब्दार्थ है: null-सुरक्षा, कोरूटीन, एक्सटेंशन फ़ंक्शन, data-क्लासेस। Java में ऐसी सुविधाएँ नहीं हैं। इसलिए कोई भी कनवर्टर अनुमानित कोड देगा, जो अक्सर बोझिल दिखता है और इसमें आंतरिक Kotlin फ़ंक्शन (जैसे, Intrinsics.checkNotNullParameter()) के कॉल होते हैं।

\n\n

लेकिन इसका मतलब यह नहीं है कि समस्या हल नहीं हो सकती। तीन मुख्य दृष्टिकोण हैं:

\n\n
    \n
  • बाइटकोड डीकंपाइलेशन - सबसे सटीक तरीका, IntelliJ IDEA और Android Studio में निर्मित।
  • \n
  • JADX - Android डेवलपर्स के लिए, जब सोर्स कोड नहीं है, बल्कि APK है।
  • \n
  • ऑनलाइन कनवर्टर - छोटे टुकड़ों के लिए त्वरित विकल्प।
  • \n
\n\n

2. विधि #1: IntelliJ IDEA के माध्यम से डीकंपाइलेशन (सबसे विश्वसनीय)

\n\n

यदि आपके पास मूल .kt फ़ाइल है, तो आप इसे IntelliJ IDEA (या Android Studio) में खोल सकते हैं और IDE से समतुल्य Java कोड दिखाने के लिए कह सकते हैं। यह कैसे करें?

\n\n

चरण 1. Kotlin फ़ाइल खोलें

\n

मान लीजिए हमारे पास Kotlin में एक सरल क्लास है:

\n\n
// File: Person.kt\ndata class Person(val name: String, val age: Int) {\n    fun greet() = "Hello, my name is $name"\n}
\n\n

चरण 2. डीकंपाइलेशन शुरू करें

\n

IntelliJ मेनू में Tools → Kotlin → Show Kotlin Bytecode चुनें। बाइटकोड वाला एक पैनल खुलेगा। इस पैनल में Decompile बटन दबाएँ - और आप अपनी फ़ाइल का Java संस्करण देखेंगे।

\n\n

हमारे Person.kt के लिए IDE यही देगा:

\n\n
// Java-डीकंपाइलेशन\npublic final class Person {\n   @NotNull\n   private final String name;\n   private final int age;\n\n   @NotNull\n   public final String getName() {\n      return this.name;\n   }\n\n   public final int getAge() {\n      return this.age;\n   }\n\n   public Person(@NotNull String name, int age) {\n      Intrinsics.checkNotNullParameter(name, "name");\n      super();\n      this.name = name;\n      this.age = age;\n   }\n\n   @NotNull\n   public final String greet() {\n      return "Hello, my name is " + this.name;\n   }\n\n   // equals(), hashCode(), toString() — स्वचालित रूप से जनरेटेड\n}
\n\n

महत्वपूर्ण: कोड में Intrinsics के कॉल हैं - यह Kotlin रनटाइम का हिस्सा है। यदि आप ऐसे कोड को Kotlin निर्भरताओं के बिना किसी प्रोजेक्ट में कॉपी करते हैं, तो यह कंपाइल नहीं होगा। आपको या तो kotlin-stdlib जोड़ना होगा, या मैन्युअल रूप से इन जाँचों को हटाना होगा।

\n\n

3. विधि #2: JADX - बिना सोर्स कोड के Android के लिए

\n\n

यदि आपके पास केवल APK फ़ाइल है, और आप यह समझना चाहते हैं कि कोई Kotlin क्लास कैसे लागू किया गया है, तो JADX का उपयोग करें। यह एक डीकंपाइलर है जो DEX-बाइटकोड को पढ़ने योग्य Java कोड में बदलता है। APK में Kotlin क्लासेस वैसे भी JVM बाइटकोड में कंपाइल होते हैं, इसलिए JADX काम करेगा।

\n\n

उदाहरण: आपको APK में कोरूटीन वाला एक क्लास मिला। Kotlin में यह इस तरह दिख सकता है

ब्लॉग

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