कोटलिन वि जावा - या दोघांमध्ये काय फरक आहे?

लेखक: John Stephens
निर्मितीची तारीख: 24 जानेवारी 2021
अद्यतन तारीख: 1 जुलै 2024
Anonim
कोटलिन विरुद्ध जावा | Android विकासासाठी Java किंवा Kotlin | कोटलिन ट्यूटोरियल | एडुरेका
व्हिडिओ: कोटलिन विरुद्ध जावा | Android विकासासाठी Java किंवा Kotlin | कोटलिन ट्यूटोरियल | एडुरेका

सामग्री


जावा ही अद्याप पहिली प्रोग्रामिंग भाषा असू शकते जी आपण अँड्रॉइडबद्दल विचार करता तेव्हा लक्षात येते परंतु आपण तसे करत नाही आहे Android विकासासाठी जावा वापरण्यासाठी. खरं तर, कोटलिन आता Google ची आहेप्राधान्यAndroid साठी अधिकृत भाषा!

जावा विषयी अधिक जाणून घेण्यासाठी मेक अँड्रॉइड अ‍ॅप्स वर जावा कोर्सची विनामूल्य प्रस्तावना मिळवा.

आज, अंगभूत कोटलिन सह अँड्रॉइड स्टुडिओ जहाजे आहेत, म्हणून कोटलिन कोड समजणारा Android प्रकल्प तयार करणे Android स्टुडिओच्या प्रोजेक्ट क्रिएशन विझार्डमधील चेकबॉक्स निवडण्याइतकेच सोपे आहे. ओव्हरटाईम पर्यायासाठी समर्थन वाढला आहे, हा निर्णय आता प्रामुख्याने प्राधान्याने खाली येतो.

परंतु आपण जावा ते कोटलिनमध्ये स्विच केल्यास आपण नक्की काय मिळवत आहात? कोटलिन मध्ये कोणती वैशिष्ट्ये आहेत, ती जावा नाही आणि उलट?

या लेखात, आम्ही कोटलिन वि जावा मधील सर्व मुख्य फरक पाहत आहोत.

कोटलिन वि जावा, नंतर अधिक संक्षिप्त कोड ऑफर करते - फाइव व्हिबायआयड्सशिवाय

जर आपण कोटलिन वर्ग आणि जावा वर्गाची तुलना करत असाल जे समान कार्य करीत आहेत, तर कोटलिन वर्ग सामान्यत: अधिक संक्षिप्त असेल, परंतु विशेषत: असे एक क्षेत्र आहे जेथे कोटलिन आपल्याला लिहिण्यासाठी आवश्यक असलेल्या बॉयलरप्लेट कोडचे प्रमाण गंभीरपणे कमी करू शकेल: FindViewByIds.


कोटलिन Android विस्तार आपल्याला आपल्या क्रियाकलाप फाइलमध्ये एखाद्या दृश्यासाठी संदर्भ आयात करण्याची परवानगी देतात, ज्या टप्प्यावर आपण त्या दृश्यासह कार्य करण्यास सक्षम व्हाल तथापि हा क्रियाकलापांचा भाग होता. निकाल? आपल्याला पुन्हा कधीही दुसरी शोधदृश्यबाइड पद्धत लिहावी लागणार नाही!

आपण हे विस्तार वापरण्यापूर्वी, आपल्याला आपल्या मॉड्यूल-स्तरीय बिल्ड उदा. फाइलवर अतिरिक्त प्लगइन जोडण्याची आवश्यकता असेल (प्लगइन लागू करा: 'कोटलिन-अँड्रॉइड-विस्तार') परंतु त्यानंतर आपण दृश्यांची आयात करण्यास तयार आहात, यासाठी उदाहरणार्थ जर आपल्या अ‍ॅक्टिव्हिटी_मेन.एक्सएमएल फाइलमध्ये आयडी मजकूर दृश्यासह मजकूर दृश्य असेल तर आपण आपल्या गतिविधीमध्ये पुढील गोष्टी जोडा:

कोटलिन्क्स.एन्ड्रॉइड.साइंथेटिक.मेन.एक्टिव्हिटी_मेन.टेक्स्टव्यू आयात करा

त्यानंतर आपण फक्त या आयडीचा वापर करुन या मजकूर दृश्यात प्रवेश करू शकता.

मजकूर व्ह्यू.सेटटेक्स्ट ("हॅलो वर्ल्ड")

हे आहे जास्त जावा समतुल्य पेक्षा अधिक संक्षिप्त:

टेक्स्टव्यू मजकूर = (मजकूर दृश्य) FindViewById (R.id.textView); मजकूर.सेटटेक्स्ट ("हॅलो वर्ल्ड");

डिफॉल्टनुसार कोटलिन निरर्थक आहे

जावा विकसकांसाठी नलपॉइंटरएक्सेप्शन हा निराशेचा एक प्रचंड स्रोत आहे. जावा आपल्याला कोणत्याही चलनासाठी रिकामा करण्याची परवानगी देतो, परंतु आपण शून्य मूल्य असलेल्या ऑब्जेक्ट संदर्भ वापरण्याचा प्रयत्न करीत असाल तर नलपॉइंटरएक्सप्शनला सामोरे जाण्यासाठी स्वतःला ब्रेस करा!


हेही वाचा: Android परिचयासाठी कोटिलीन

कोटलिनमध्ये, सर्व प्रकार डीफॉल्टनुसार नॉन-नल केलेले (शून्य मूल्य ठेवण्यास असमर्थ) असतात. आपण आपल्या कोटलिन कोडमध्ये नियुक्त करण्याचा किंवा निरर्थक परत करण्याचा प्रयत्न केल्यास, ते संकलित वेळी अपयशी ठरेल, म्हणून खालीलपैकी कोणतीही रेषा संकलित होणार नाही:

व्हॅल नाव: स्ट्रिंग = शून्य

मजेदार getName (): स्ट्रिंग = शून्य

जर तू खरोखर कोटलिनमधील एका व्हेरिएबला शून्य मूल्य देऊ इच्छित आहे, नंतर आपल्याला त्या प्रकारानंतर प्रश्न चिन्ह जोडून त्या व्हेरिएबलला स्पष्टपणे चिन्हांकित करणे आवश्यक आहे:

व्हॅल नंबर: इंट? = शून्य

यामुळे कोटलिनमध्ये नलपॉइन्टरइसेक्सनस तोंड देणे जवळजवळ अशक्य होते - खरं तर, जर आपणास हा अपवाद आढळला तर अशी शक्यता आहे की आपण कोटलिनला स्पष्टपणे एक टाकण्यास सांगितले, किंवा नलपॉइंटरएक्सप्शन बाह्य जावा कोडपासून उद्भवले आहे.

विस्तार कार्ये

कोटलिन विकासकांना नवीन कार्यक्षमतेसह वर्ग वाढविण्याची क्षमता देते, जो एखादा वर्ग नेहमीच महत्वाची पद्धत गहाळ वाटत असेल असे वाटत असल्यास तो आदर्श आहे!

हे 'विस्तार कार्ये' जावामध्ये उपलब्ध नाहीत, जरी ते अन्य प्रोग्रामिंग भाषांमध्ये उपलब्ध आहेत ज्या आपण Android # विकाससाठी वापरू शकता, जसे की सी #.

पुढील वाचा: नवशिक्यांसाठी जावा प्रशिक्षण

आपण तयार करीत असलेल्या फंक्शनच्या नावावर आपण वर्गाच्या नावाची (जसे की ‘स्ट्रिंग’) प्रीफिक्स करून विस्तार फंक्शन तयार करता (उदाहरणार्थ ‘स्टाईलस्ट्रिंग’):

मजेदार स्ट्रिंग.स्टाईलस्ट्रिंग (): स्ट्रिंग {// स्ट्रिंग स्टाईल करा आणि नंतर परत द्या // //

त्यानंतर आपण विस्तारित वर्गाच्या उदाहरणावरुन या कार्यास कॉल करू शकता. संकेत, जणू त्या त्या वर्गाचा भाग:

myString.styleString ()

कॉरोटीन हे प्रथम श्रेणीचे नागरिक आहेत

जेव्हा आपण दीर्घकाळ चालणारे ऑपरेशन सुरू करता, जसे की नेटवर्क I / O किंवा CPU- केंद्रित कार्य, ऑपरेशन पूर्ण होईपर्यंत कॉलिंग थ्रेड अवरोधित केला जातो. डिफॉल्टनुसार Android हा एकच-धागा असल्याने आपण मुख्य थ्रेड रोखताच आपल्या अॅपची यूआय फ्रीझ होईल आणि ऑपरेशन पूर्ण होईपर्यंत ते प्रतिसाद देत नाही.

जावा मध्ये, हा उपाय पारंपारिकपणे एक पार्श्वभूमी धागा तयार करण्याचा होता जेथे आपण हे गहन किंवा दीर्घकाळ चालणारे कार्य करू शकता, परंतु एकाधिक थ्रेड्सचे व्यवस्थापन केल्यास जटिल, त्रुटी-प्रवण कोड होऊ शकतो आणि नवीन धागा तयार करणे एक महाग ऑपरेशन आहे.

आपण कोटलिनमध्ये अतिरिक्त थ्रेड तयार करू शकता, आपण कॉरोटीन्स देखील वापरू शकता. थ्रेडला अडथळा न आणता एखाद्या विशिष्ट ठिकाणी अंमलबजावणी निलंबित करून आणि नंतर हे कार्य नंतरच्या धागावर पुन्हा सुरू केल्याने कोरोटीन्स दीर्घकाळाची आणि सखोल कामे करतात. हे आपल्याला नॉन-ब्लॉकिंग असिंक्रोनस कोड तयार करण्यास अनुमती देते दिसते समकालिक आणि म्हणूनच अधिक स्पष्ट, संक्षिप्त आणि मानवी-वाचनीय आहे. कॉरोटीन्स देखील स्टॅकलेस असतात, म्हणून थ्रेड्सच्या तुलनेत त्यांचा स्मृती वापर कमी असतो आणि ते एसिन्क्रॉनस नॉन-ब्लॉकिंग प्रोग्रामिंगच्या अतिरिक्त शैली, जसे की एसिंक / अवेकिटचे दरवाजे उघडतात.

कोणतेही चेक केलेले अपवाद नाहीत

कोटलिनकडे अपवाद नाहीत, म्हणून आपणास कोणताही अपवाद पकडण्याची किंवा घोषित करण्याची आवश्यकता नाही.

हे असे काहीतरी आहे की जे आपल्याला कोटलिनकडे आकर्षित करते, किंवा जावा सोबत रहायचे आहे हे तपासलेल्या अपवादांच्या आपल्या मतावर अवलंबून असेल, कारण हे विकसक समुदायाचे विभाजन करणारे एक वैशिष्ट्य आहे. आपला जावा कोड गोंधळ घालून प्रयत्न करणे / पकडण्यासाठी अस्वस्थ असल्यास, आपण या वगळण्यात खूष आहात, तथापि आपणास आढळले की अपवाद त्रुटी पुनर्प्राप्तीबद्दल विचार करण्यास प्रोत्साहित करतात आणि शेवटी आपल्याला अधिक सामर्थ्यवान बनवण्याच्या दिशेने ढकलतात. कोड, नंतर जावा कोटलीनच्या काठावर आहे असे एक क्षेत्र म्हणून आपण हे पाहण्याची अधिक शक्यता आहे.

प्रतिनिधींना मूळ पाठिंबा

जावा विपरीत, कोटलिन प्रथम श्रेणी प्रतिनिधीद्वारे (कधीकधी अंतर्निहित प्रतिनिधी म्हणून ओळखले जाते) मार्गे “रचनांवर वारसा” डिझाइन पॅटर्नचे समर्थन करते. प्रतिनिधीत्व म्हणजे जेथे प्राप्तकर्ता ऑब्जेक्ट दुसर्‍या प्रतिनिधी ऑब्जेक्टवर कार्य करते, जे मूळ संदर्भात मदतनीस ऑब्जेक्ट असते.

कोटलिनचे वर्ग प्रतिनिधीत्व वारशास एक पर्याय आहे ज्यामुळे एकाधिक वारसा वापरणे शक्य होते. दरम्यान, कोटलिनची नियुक्त केलेली प्रॉपर्टी कोडची डुप्लिकेशन रोखण्यास मदत करतात, उदाहरणार्थ एकाधिक प्रॉपर्टीज गेटर आणि सेटरसाठी आपल्याला समान कोड पुन्हा वापरायचा असेल तर आपण हा कोड एखाद्या प्रस्थापित मालमत्तेत काढू शकता. प्रॉपर्टी प्रतिनिधीला getValue ऑपरेटर फंक्शन आणि पर्यायाने सेटवॅल्यू ऑपरेटर परिभाषित करणे आवश्यक आहे:

वर्ग प्रतिनिधी {ऑपरेटर मजा getValue (...) ... ... ...} ऑपरेटर मजा सेटवॅल्यू (...) ... ... ...}}

नंतर, आपण एखादी संपत्ती तयार करता तेव्हा आपण असे जाहीर करू शकता की या विशिष्ट मालमत्तेसाठी गेटर आणि सेटर फंक्शन्स दुसर्‍या वर्गाने हाताळल्या आहेत:

वर्ग MyClass {var प्रॉपर्टी: प्रतिनिधी () द्वारे स्ट्रिंग

डेटा वर्ग

एका प्रकल्पासाठी असे अनेक वर्ग असणे असामान्य नाही ज्यामध्ये डेटा ठेवण्याशिवाय काहीही होत नाही. जावा मध्ये, आपण स्वत: ला या वर्गांसाठी बरेच बॉयलरप्लेट कोड लिहीत आहात, जरी वर्गांमध्ये त्यांची कार्यक्षमता अगदी कमी आहे. थोडक्यात, आपल्याला कन्स्ट्रक्टर, डेटा संचयित करण्यासाठी फील्ड्स, प्रत्येक फील्डसाठी गेटर आणि सेटर फंक्शन्स, तसेच हॅशकोड (), इक्वल्स () आणि टूस्ट्रिंग () फंक्शन्सची व्याख्या करणे आवश्यक आहे.

कोटलिनमध्ये, आपण आपल्या वर्ग परिभाषेत ‘डेटा’ कीवर्ड समाविष्ट केल्यास, सर्व आवश्यक गेटर्स आणि सेटर व्युत्पन्न करण्यासह संकलक आपल्यासाठी हे सर्व कार्य करेल.

डेटा वर्ग तारीख (वार महिना: स्ट्रिंग, वार दिवस: इंट)

स्मार्ट कॅस्ट

जावा मध्ये, आपल्याला बर्‍याचदा टाइप तपासून पहावे लागेल आणि नंतर एखादी वस्तू त्या ठिकाणी टाकली जाऊ शकते हे आधीच स्पष्ट आहे अशा परिस्थितीत एखादी वस्तू टाकणे आवश्यक आहे.

कोटलिनची स्मार्ट कॅस्ट आपल्यासाठी या रिडंडंट कॅस्ट हाताळू शकते, म्हणून आपण कोट्लिनच्या ‘आहे’ ऑपरेटरने आधीपासूनच तपासणी केली असेल तर आपणास स्टेटमेंटमध्ये कास्ट करण्याची आवश्यकता नाही. उदाहरणार्थ, कंपाईलरला माहित आहे की खालील कास्ट सुरक्षित आहे:

जर (हॅलो स्ट्रिंग आहे) {प्रिंटस्ट्रिंग (हॅलो)}

बांधकाम करणार्‍यांना आधार

जावा विपरीत, कोटलिनच्या वर्गात प्राथमिक कन्स्ट्रक्टर आणि एक किंवा अधिक दुय्यम कन्स्ट्रक्टर असू शकतात, जे आपण आपल्या वर्गाच्या घोषणेत समाविष्ट करून तयार करता:

वर्ग मेनएक्टिव्हिटी कन्स्ट्रक्टर (फर्स्टनेम: स्ट्रिंग)} {

अप्रत्यक्ष रुंदीकरणास समर्थन नाही

कोटलिन संख्यांकरिता अंतर्भूत रुंदीकरण रूपांतरणांचे समर्थन करीत नाही, म्हणून लहान प्रकार सुस्पष्टपणे मोठ्या प्रकारात रूपांतरित होत नाहीत. कोटलिनमध्ये, आपल्याला इंट व्हेरिएबलला बाइट प्रकाराचे मूल्य वाटप करायचे असेल तर आपल्याला सुस्पष्ट रूपांतरण करणे आवश्यक आहे, तर जावाला अंतर्निहित रूपांतरणांसाठी समर्थन आहे.

कोटलिनसह भाष्य प्रक्रिया ग्रंथालये

कोटलिन सर्व विद्यमान जावा फ्रेमवर्क आणि ग्रंथालयांना समर्थन देते, भाष्य प्रक्रियेवर अवलंबून असलेल्या प्रगत फ्रेमवर्कसह, काही जावा लायब्ररी आधीपासूनच कोटलिन विस्तार प्रदान करीत आहेत, जसे की आरएक्सकोटलिन.

आपण भाष्य प्रक्रियेवर अवलंबून असलेली जावा लायब्ररी वापरू इच्छित असल्यास, नंतर आपल्या कोटलिन प्रकल्पात जोडणे थोडे वेगळे आहे कारण आपल्याला हे वापरून अवलंबित्व निर्दिष्ट करणे आवश्यक आहे कोटलिन-कॅप्ट प्लगइन आणि नंतर एनोटेशनप्रोसेसरऐवजी कोटलिन एनोटेशन प्रक्रिया साधन (कॅप्ट) वापरा. उदाहरणार्थ:

// प्लगइन लागू करा // प्लगइन लागू करा: कोटलिन-कप्पा // कॅप्ट कॉन्फिगरेशन // अवलंबन using kapt "com.google.dagger: dagger-compiler: $ dagger-version" वापरुन संबंधित अवलंबन जोडा. ...

जावा सह अदलाबदल

अँड्रॉइड विकासासाठी कोटलिन किंवा जावा वापरायचा की नाही यावर वादविवाद करताना, आपल्याला तिसरा पर्याय असल्याचे लक्षात आले पाहिजे: दोन्ही वापरा. दोन भाषांमध्ये सर्व फरक असूनही जावा आणि कोटलिन हे 100% इंटरऑपरेबल आहेत. आपण जावा वरून कोटलिन कोड कॉल करू शकता आणि आपण कोटलिनकडून जावा कोड कॉल करू शकता, म्हणून एकाच प्रकल्पामध्ये कोटलिन आणि जावा वर्ग शेजारी शेजारी असणे शक्य आहे आणि तरीही सर्व काही संकलित केले जाईल.

जेव्हा आपण कोटलिनसह प्रारंभ करता तेव्हा दोन भाषांमधील हलविण्याची लवचिकता उपयुक्त ठरते कारण यामुळे आपल्याला कोटलिनला विद्यमान प्रकल्पात वाढीची ओळख करुन दिली जाऊ शकते, परंतु आपण कायमस्वरुपी दोन्ही भाषा वापरण्यास प्राधान्य देऊ शकता. उदाहरणार्थ, अशी काही वैशिष्ट्ये असू शकतात जी आपण कोटलिनमध्ये लिहिण्यास प्राधान्य देतात आणि काही वैशिष्ट्ये जी आपल्याला जावामध्ये लिहायला सोपी वाटतात. कोटलिन आणि जावा दोघेही बायकोडचे संकलन करीत असल्याने, आपला जावा कोड कोठे संपतो हे कोटलिन कोड सांगू शकणार नाही, त्यामुळे जावा असणारा अ‍ॅप आपण रीलिझ का करू शकत नाही याचे कारण नाही. आणि कोटलिन कोड

आपण स्वत: साठी कोटलिन प्रयत्न करू इच्छित असल्यास, जोपर्यंत आपण Android स्टुडिओ 3.0 पूर्वावलोकन किंवा उच्च स्थापित केलेले नाही, आपण प्रारंभ करू शकता असे काही मार्ग आहेतः

  • एक नवीन Android स्टुडिओ प्रकल्प तयार करा. नवीन प्रोजेक्ट तयार करणे आणि प्रोजेक्ट क्रिएशन विझार्डमधून ‘कोटलिन समर्थन समाविष्ट करा’ चेकबॉक्स निवडणे ही सर्वात सोपी पद्धत आहे.

  • विद्यमान निर्देशिकेत कोटलिन वर्ग जोडा. प्रश्नातील डिरेक्टरीवर कंट्रोल-क्लिक करा, त्यानंतर ‘फाईल> नवीन> कोटलिन फाईल / क्लास निवडा.’ अँड्रॉइड स्टुडियो तुम्हाला बॅनर प्रदर्शित करेल की तुम्हाला कोटलिनला पाठिंबा देण्यासाठी आपला प्रकल्प कॉन्फिगर करण्यास सांगा; ‘कॉन्फिगर’ दुव्यावर क्लिक करा आणि ऑनस्क्रीन सूचनांचे अनुसरण करा.

  • विद्यमान जावा फायली कोटलिनमध्ये रूपांतरित करा. आपण कोट्लिन कनव्हर्टरद्वारे कोणतीही जावा फाईल चालवू शकता, फाइलवर कंट्रोल-क्लिक करून आणि ‘कोड> जावा फाईलमध्ये कोटलिन फाइलमध्ये रूपांतरित करा’ निवडून.

लपेटणे

जसे आपण पाहू शकता की जाटला कोट्लिनला प्राधान्य देण्याची बरीच चांगली कारणे आहेत, तथापि जावाचा वरचा हात असणारी दोन क्षेत्रे आहेत. कदाचित सर्वात उल्लेखनीयः बर्‍याच अँड्रॉइड विकसक याक्षणी जावाबद्दल अधिक परिचित आहेत. कोट्लिन विरुद्ध जावा वादविवाद लवकरच त्यांची निराकरण होणार नाही, दोघांचीही स्वत: ची गुणधर्म असेल. तर, आपण कोटलिनवर स्विच करत आहात किंवा Android विकासासाठी जावा अजूनही एक उत्कृष्ट पर्याय आहे असे आपल्याला वाटते?

पुढील वाचा: Android विकासासाठी जावा सिंटॅक्सची ओळख

आम्ही आमच्याकडे येणार्‍या सर्वोत्कृष्ट सौदे आपल्यापर्यंत आणण्याचा आम्ही नेहमीच प्रयत्न करतो आणि गेल्या सात दिवसात आमच्या रडारवर ऑडिओ सौद्यांची चवदार निवड झाली आहे....

बिग डेटा आपल्या फेसबुक फीडपासून Google नकाशे वर नेटफ्लिक्स शिफारसींपर्यंत सर्व काही ड्राइव्ह करतो. डेटा शास्त्रज्ञ इतके मागणी असलेले का आहेत हे पाहणे सोपे आहे. ते मुळात टेक जग बदलत ठेवतात....

आम्ही आपल्याला पाहण्याची सल्ला देतो