कोटलिन पिछले 2 वर्षों से एक बड़ी सफलता रही है, यह हर जगह एक ट्रेंडिंग टॉपिक रहा है और इसकी लोकप्रियता अभी भी बढ़ रही है। और यह भी आधिकारिक है कि Google ने कोटलिन को Android ऐप डेवलपमेंट की आधिकारिक भाषा बनने के लिए प्रेरित किया है।
लेकिन फिर भी, बहुत से लोग अभी भी एंड्रॉइड डेवलपमेंट के लिए कोटलिन पर जावा को पसंद करते हैं, ऐसा क्यों है? इसका एक मुख्य कारण यह है कि लोग अभी भी अपनी पसंद की मुख्य भाषा को जावा से कोटलिन में बदलने में सहज नहीं हैं, लोग नई चीजों में बदलने से डरते हैं।
कोटलिन का उपयोग अभी शुरू करें, आसान तरीका
वास्तव में, जावा से कोटलिन में स्विच करना बहुत आसान है, एक बहुत ही लचीली भाषा होने के कारण, आप आसानी से कोटलिन को कोड कर सकते हैं लेकिन मुहावरेदार रूप से, यह जावा है!
तो अब, जावा से कोटलिन पर स्विच करते समय ध्यान देने योग्य कई बातें हैं:
<मजबूत>1. जावा इंटरऑपरेबिलिटी
कोटलिन जावा के साथ पूरी तरह से इंटरऑपरेबल है और दूसरी तरफ भी। इसका क्या मतलब है, इसका मतलब है कि आपका कोटलिन आपके जावा कोड को कॉल कर सकता है, यह ऐप माइग्रेशन के लिए चीजों को बहुत आसान बनाता है, आप पहले से ही जावा के साथ आधा कोड करते हैं? कोई बात नहीं, वैसे भी कोटलिन को कोड करें।
<मजबूत>2. कोई और आदिम डेटा प्रकार नहीं
int . का उपयोग करते समय याद रखें या इंट जावा में आपको आधा दिन लगता है? कोटलिन में अब और अधिक आदिम डेटा प्रकार नहीं हैं, इसके बजाय सब कुछ ऑब्जेक्ट में लपेटा गया है।
<मजबूत>3. थोड़ा बदल गया सिंटैक्स (लेकिन चिंता न करें इसे पकड़ना आसान है)
वेरिएबल, फंक्शन और क्लास डिक्लेरेशन जैसे कई सिंटैक्स को थोड़ा बदल दिया गया है, लेकिन अगर आप जावा जैसे OOP बैकग्राउंड से आते हैं, तो यह कोई समस्या नहीं होगी। और साथ ही, शून्य कीवर्ड और सेमी-कोलन (';') को हटा दिया गया है, धन्यवाद कोटलिन उस अर्धविराम को हटाने के लिए !!
मैं आपको एंड्रॉइड क्लास के साथ बुनियादी उदाहरण पेश करूंगा:
//Inheritance and implementation is using ':' now
class BasicActivity : AppCompatActivity() {
//variables declaration is now variable name first then type
var a :Int = 10 //var is for mutable
val b :Int = 15 //val is for immutable
/*lateinit keyword must be added for initialisation of non-
primitive type without initial value in Kotlin*/
lateinit var someTextView:TextView
//Also, no more new keyword here
var gameList:List<Integer> = ArrayList()
//overriding is using keyword instead of
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_basic)
}
}
4. अनुमान टाइप करें
कोटलिन चर के लिए प्रकार अनुमान प्रदान करके जीवन को आसान बना देगा:
var a = 5 //will automatically infer this as integer
var b = "John" // will automatically infer this as String
5. शून्य सुरक्षा जांच
कोटलिन ने शून्य सूचक अपवाद से बचने के लिए शून्य सुरक्षा जाँच प्रदान की है। प्रत्येक चर जो शून्य मान लौटा सकता है, उसे ?
. के साथ चिह्नित (और चिह्नित किया जाना चाहिए) किया जाएगा संकेत।
var a:String? = null
var b:String = null //not allowed
यह नल-सूचक अपवाद (जावा बिलियन डॉलर की गलतियाँ) से बचने के लिए शून्य सुरक्षा कॉल भी प्रदान करता है
//not allowed, a might be null
a.function()
// this will not throw null pointer, instead will continue the flow
a?.function()
//force function call, can cause NPE, use this only if 100% sure that this value will not be null
a!!.function()
6. कोई और स्थिर कीवर्ड नहीं
कक्षाओं और विधियों दोनों के लिए स्टेटिक कीवर्ड को अब ऑब्जेक्ट कीवर्ड से बदल दिया गया है, विशेष रूप से विधियों के लिए कंपेनियन ऑब्जेक्ट।
7. स्विच केस संशोधित
स्विच केस को अब एक नए कीवर्ड में बदल दिया गया है, जिसे कब कहा जाता है। जो साफ और अधिक लचीला दिखता है:
when (x) {
1 -> println("One")
2 -> print("Two")
else -> print("Others")
}
8. कोई और जाँच अपवाद नहीं
याद रखें जब आप जावा में कुछ ऑपरेशन या कास्टिंग कर रहे थे, और वह लाल चेतावनी निकलती है और आपको वहां अपवाद जांच जोड़ने के लिए कहा जाता है? इसे अब कोटलिन में हटा दिया गया है। अब, आपका आईडीई आपको कोई अपवाद करने के लिए बाध्य नहीं करेगा !!
यह सब उस हिस्से के लिए है जिसे आपको कोटलिन में विकसित करना शुरू करना है, लेकिन मुहावरेदार जावा।
कोटलिन में अभी जाना मुश्किल नहीं है, है ना? अब कोटलिन जावा से उतना अलग नहीं लगता।
कोटलिन द्वारा प्रदान की गई सुविधाएं
अब, कोटलिन और जावा कैसे भिन्न हैं, इस पर एक नज़र डालने के बाद, हमें कोटलिन द्वारा प्रदान की जाने वाली सुविधाओं पर भी एक नज़र डालने की आवश्यकता है और कोटलिन तरीके से कोटलिन को धीरे-धीरे कैसे शुरू करें:
<मजबूत>1. लचीलापन
कोटलिन में मेरे प्यार का एक मुख्य कारण भाषा का लचीलापन है। क्या आप ओओपी शुद्धतावादी हैं? क्या आप कार्यात्मक प्रोग्रामिंग की कोशिश करने के लिए खुजली कर रहे हैं जो वर्तमान में गर्म विषय है? और कोडिंग . के प्यार के लिए भगवान, आप दोनों कोटलिन में कर सकते हैं! एफपी द्वारा प्रदान की जाने वाली सभी सुविधाओं को पूरी तरह से प्रदान नहीं करने के बावजूद, यह इसका समर्थन करने के लिए पर्याप्त है।
<मजबूत>2. लैम्ब्डा सपोर्ट
हां, मुझे पता है कि अब जावा 8 लैम्ब्डा को सपोर्ट करता है, लेकिन कोटलिन इसमें सबसे पहले आया और यह उसमें बहुत अच्छा काम करता है। निश्चित रूप से, लैम्ब्डा फ़ंक्शन का उपयोग करने में संक्रमण करना पहली बार में मुश्किल होगा, लेकिन जैसा कि कहा गया है, कोटलिन वास्तव में उस पर लचीला है। तो हे, यह तुम्हारी कॉल है!
कुछ एंड्रॉइड लाइब्रेरी ने लैम्ब्डा सपोर्ट को भी सक्षम किया है, उदाहरण के लिए View.OnClickListener
(यदि आप एंड्रॉइड बैकग्राउंड से आए हैं, तो मुझे यकीन है कि यह तरीका पहले से ही आपके लिए बहुत परिचित है):
val randomButton : Button
//using lambda function as argument
randomButton.setOnClickListener{v -> doRandomStuff(v) }
<मजबूत>3. डेटा वर्ग
कोटलिन ने मॉडल/इकाई वर्ग के लिए एक विकल्प प्रदान किया है, जिसे डेटा वर्ग कहा जाता है। यह अनावश्यक सेटर गेटर की आवश्यकता को हटा देता है और इसमें अंतर्निहित समान विधि और टूस्ट्रिंग फ़ंक्शन भी है, इसके लिए आपको एक बनाने की आवश्यकता नहीं है। इसका उपयोग करना भी बहुत आसान है:
data class Person(
val id:String,
val name:String = "John Doe" //Default Value
)
//Initialisation block
var person = Person("id","Not John")
4. विस्तार कार्य
कोटलिन एक्सटेंशन फ़ंक्शंस के उपयोग की अनुमति देता है, जो कोड को अधिक पठनीय बनाता है। साथ ही, यह आपको कक्षा को स्वयं संशोधित किए बिना किसी वर्ग को कार्यक्षमता प्रदान करने में सक्षम करेगा:
fun Int.superOperation(anotherInt:Int):Int {
val superNumber = this * anotherInt + anotherInt
return superNumber
}
//you can now call the functions
val someNumber = 5
val superNumber = someNumber.superOperation(10) //65
5. नामित और डिफ़ॉल्ट तर्क
सी # की तरह, कोटलिन भी इसके तरीकों के लिए नामित और डिफ़ॉल्ट पैरामीटर का समर्थन करता है। यह प्रत्येक तर्क में मूल्यों को पारित करने की आवश्यकता को पूरी तरह से हटा देता है। आप चुन सकते हैं कि आप किस मूल्य को संशोधित करना चाहते हैं, और वॉइला! आपके 10 फ़ंक्शन कॉल के लिए समान विशेष मान पास करने में अब कोई परेशानी नहीं है!
//variable declaration
fun someOperations(var x: Int, var y:Int, var z:Int = 1){
return x+y+z
}
someOperations(1,2) //return 4
someOpeartions(y = 1, x = 1) //return 3
6. संदर्भात्मक समानता
कोटलिन भी संदर्भित समानता ('===') के साथ आता है, यह जांच करेगा कि क्या दो चर वर्तमान में एक ही वस्तु का जिक्र कर रहे हैं।
var a = 10
var b = 10
a == b //true
a === b //true also, primitive type object equation will only check its value
data class Person (val name: String)
val p1 = Person("John")
val p2 = Person("John")
p1 == p2 //true
p1 === p2 //false
7. स्मार्ट कास्टिंग
इंस्टेंस का उपयोग करने के बजाय, कोटलिन अब कास्टिंग या टाइप चेकिंग के लिए उपयोग करने के लिए आसान और अधिक पठनीय सिंटैक्स प्रदान करता है:
//type checking
//kotlin smart cast mechanism will also automatically change the object into corresponding type if it passes the type checking
if (shape is Circle) {
println(“it’s a Circle”)
shape.radius //automatically be casted as Circle
} else if (shapeObject is Square) {
println(“it’s a Square”)
} else if (shapeObject is Rectangle) {
print(“it’s a Rectangle”)
}
कोटलिन के पास as
भी है स्पष्ट कास्टिंग सक्षम करने के लिए कीवर्ड:
//It's considered unsafe since it behaves simillarly like static casting
var anotherShape = shape as Circle
//This can be used instead for safe casting
var safeShape = shape as? Circle
8. कोरटाइन्स
जावा में एसिंक्रोनस कॉल हमेशा एक परेशानी रही है। थ्रेड बनाना कोड में बहुत अधिक स्थान लेता है और कोड को अपठनीय बनाता है। एक साफ और मजबूत कोड प्रदान करते हुए पारंपरिक थ्रेड ऑपरेशन को बदलने के लिए कोरटाइन बनाए गए हैं:
import kotlinx.coroutines.*
fun main() {
// launch a new coroutine in background and continue
GlobalScope.launch {
// non-blocking delay for 1 second (default time unit is ms)
delay(1000L)
// print after delay
println("World!")
}
// main thread continues while coroutine is delayed
println("Hello,")
// block main thread for 2 seconds to keep JVM alive
Thread.sleep(2000L)
}
Coroutines अधिक जटिल संचालन जैसे जॉब जॉइनिंग, चैनल, साझा संदर्भ और माता-पिता का भी समर्थन करता है। विवरण और अधिक उपयोग यहां पढ़े जा सकते हैं।
इसे रैप करना
संक्षेप में कहें तो, कोटलिन का उपयोग शुरू करना बहुत आसान है, आप कोटलिन को उसी तरह कोड कर सकते हैं जैसे आप जावा को कोड करते हैं। और साथ ही, कोटलिन ने कई सुविधाएं प्रदान की हैं जो आपको जावा का उपयोग करने में बढ़त दे सकती हैं।
ज़रूर, इस समय जावा अभी भी मजबूत हो रहा है। लेकिन कुछ नया सीखना शुरू करना कभी गलत नहीं होता। हमें, प्रोग्रामर के रूप में, आजीवन सीखने को अपनाना चाहिए और कभी भी सीखना बंद नहीं करना चाहिए। कोटलिन की सबसे अच्छी बात यह है कि जावा से माइग्रेट करना कितना आसान है।
पढ़ने के लिए धन्यवाद। मुझे आशा है कि आप आनंद लेंगे और उम्मीद है कि यह एक अच्छा उपयोग होगा! कोटलिन की खोज में शुभकामनाएँ, और अगली बार मिलते हैं।