Kotlin को Android डेवलपमेंट में Java के कई एन्हांसमेंट्स को ध्यान में रखकर पेश किया गया था। मुख्य फायदे:
- कम कोड: समान फंक्शनैलिटी के लिए कम लाइन्स
- नल सेफ्टी: कंपाइल-टाइम पर नल पॉइंटर एक्सेप्शन प्रिवेंशन
- डेटा क्लास: POJO के बजाय संक्षिप्त डेटा क्लास
कोड तुलना
TextView सेट करना
// Java
TextView displayText = findViewById(R.id.textView);
displayText.setText("Hello World")
// Kotlin (सिंथेटिक प्रॉपर्टी या ViewBinding)
textView.text = "Hello World"
नल सेफ्टी
// Java - रनटाइम पर NPE संभव String value = "abc"; value = null; // कंपाइल होता है, रनटाइम पर क्रैश // Kotlin - कंपाइल टाइम एरर var value: String = "abc" value = null // कंपाइल एरर: Null can not be a value of a non-null type String // नलएबल टाइप var nullableValue: String? = "abc" nullableValue = null // OK println(nullableValue?.length) // सेफ कॉल
डेटा क्लास vs POJO
// Java POJO (गेटर/सेटर/टॉस्ट्रिंग/इक्वल्स/हैशकोड मैन्युअल)
public class User {
private String name;
private int age;
// कंस्ट्रक्टर, गेटर, सेटर, toString, equals, hashCode... ~50 लाइन्स
}
// Kotlin Data Class (ऑटो-जेनरेटेड)
data class User(val name: String, val age: Int)
// equals, hashCode, toString, copy(), componentN() ऑटोमैटिक
महत्वपूर्ण अंतर टेबल
| क्र.सं. | की | Java | Kotlin |
|---|---|---|---|
| 1 | अपवाद (Exceptions) | चेक्ड एक्सेप्शन उपयोग करता है (try-catch अनिवार्य) | कोई चेक्ड एक्सेप्शन नहीं, कंपाइल-टाइम एरर थ्रो करता है |
| 2 | नल हैंडलिंग | नल चेक लागू नहीं, NPE रनटाइम पर | कंपाइल टाइम पर नल चेक लागू |
| 3 | नॉन-प्राइवेट फील्ड्स | कंस्ट्रक्ट्स में नॉन-प्राइवेट फील्ड्स अनुमत | कंस्ट्रक्ट्स में नॉन-प्राइवेट फील्ड्स अनुमत नहीं |
| 4 | ऐरे (Arrays) | कोवेरिएंट (String[] → Object[] असाइनमेंट संभव) | इनवेरिएंट (टाइप सेफ्टी) |
| 5 | टर्नरी ऑपरेटर | है: condition ? a : b |
नहीं है, if-else एक्सप्रेशन उपयोग करें: if (cond) a else b |
| 6 | एक्सटेंशन फंक्शन | नहीं (यूटिलिटी क्लासेस उपयोग करें) | हां - मौजूदा क्लास में फंक्शन जोड़ें |
| 7 | कोरूटीन | नहीं (थ्रेड्स, AsyncTask, RxJava) | बिल्ट-इन कोरूटीन सपोर्ट (स्ट्रक्चर्ड कंकरेंसी) |
| 8 | स्मार्ट कास्ट | नहीं (मैन्युअल कास्ट आवश्यक) | हां - आइस चेक के बाद ऑटो कास्ट |
| 9 | डिफॉल्ट आर्गुमेंट्स | नहीं (ओवरलोडिंग आवश्यक) | हां - फंक्शन पैरामीटर्स में डिफॉल्ट वैल्यू |
| 10 | नामित आर्गुमेंट्स | नहीं | हां - func(name="value", age=25) |
अतिरिक्त Kotlin फीचर्स
एक्सटेंशन फंक्शन
fun String.isValidEmail(): Boolean = this.matches(Regex(".+@.+\\..+"))
// उपयोग
"test@example.com".isValidEmail() // true
कोरूटीन
// Java: AsyncTask/Thread/RxJava - जटिल
// Kotlin: सरल और स्ट्रक्चर्ड
lifecycleScope.launch {
val result = withContext(Dispatchers.IO) {
api.getData() // बैकग्राउंड थ्रेड
}
updateUI(result) // मेन थ्रेड
}
सील्ड क्लासेस
sealed class Result{ data class Success (val data: T) : Result () data class Error(val exception: Throwable) : Result () object Loading : Result () }
निष्कर्ष
Kotlin आधुनिक, संक्षिप्त और सुरक्षित है। Google द्वारा 2019 से "Kotlin First" घोषित। नए प्रोजेक्ट्स के लिए Kotlin अनुशंसित। मौजूदा Java कोड के साथ इंटरऑपरेबिलिटी 100% है।