जेटपैक कंपोज़, एंड्रॉइड के लिए Google का नया यूआई टूलकिट, अब अल्फा में है

जेटपैक कंपोज़, एंड्रॉइड ऐप्स विकसित करने के लिए Google का यूआई टूलकिट, अब अल्फा में है। यह एंड्रॉइड के मानक व्यू के साथ पूरी तरह से इंटरऑपरेबल है।

जब किसी ऐप को विकसित करने की बात आती है, तो इसके लिए कई तरीके अपनाए जाते हैं। आप चुन सकते हैं कि किस प्लेटफ़ॉर्म को विकसित करना है, आप किस प्रोग्रामिंग भाषा का उपयोग करना चाहते हैं, और भी बहुत कुछ।

2019 की शरद ऋतु में वापस, Google पुर: कोटलिन का उपयोग करके एंड्रॉइड में यूआई बनाने के लिए एक नया ढांचा। अब तक, यह विकासात्मक स्थिति में है, जिसमें बार-बार परिवर्तन होते रहते हैं और ढेर सारी सुविधाएँ गायब रहती हैं। लेकिन आज, Google ने Jetpack Compose को अल्फा रिलीज़ स्थिति में धकेल दिया है, जिसका अर्थ है कि यह उत्पादन-गुणवत्ता वाली परियोजनाओं में उपयोग किए जाने के एक कदम करीब है।

जेटपैक कंपोज़ क्या है?

एंड्रॉइड ऐप बनाते समय, आमतौर पर आपको दो मुख्य घटकों से निपटना होता है: तर्क-आधारित चीजों के लिए कोड; और लेआउट के लिए XML। डिफ़ॉल्ट रूप से, एंड्रॉइड कोड के लिए जावा और लेआउट के लिए XML टैग के अपने सेट का उपयोग करता है।

कई लोगों के लिए, जावा और एक्सएमएल ठीक हैं, खासकर सरल ऐप्स के लिए। लेकिन दोनों प्रणालियों की अपनी सीमाएँ और परेशानियाँ हैं। एक के रूप में कोटलिन की शुरूआत के साथ

अधिकारी एंड्रॉइड विकास के लिए (और अनुशंसित) भाषा, एंड्रॉइड ऐप बनाने का कोडिंग पक्ष यकीनन बहुत आसान हो गया है। कोटलिन की अंतर्निहित नल सुरक्षा और एक्सटेंशन फ़ंक्शंस जैसी उपयोगी सुविधाओं के साथ, कोड साफ़ दिखता है और पढ़ने में आसान होता है।

लेकिन कोटलिन ने एंड्रॉइड के लेआउट में कुछ भी बदलाव नहीं किया। एक जटिल लेआउट बनाने के लिए, आपको अभी भी एक XML फ़ाइल बनाने और उसे वहां डिज़ाइन करने की आवश्यकता है। इसके कुछ उल्लेखनीय नुकसान हैं, जिनमें कोड और XML के बीच अंतर्निहित अलगाव शामिल है। उदाहरण के लिए, यदि आपके कोड में एक निरंतर स्ट्रिंग है, तो आप इसे केवल XML से संदर्भित नहीं कर सकते हैं, इसलिए यदि वह स्ट्रिंग कोड में बदलती है, तो आपको इसे XML में भी अपडेट करना याद रखना होगा।

जेटपैक कंपोज़ दर्ज करें। यह एंड्रॉइड में तेजी से बढ़ती XML लेआउट डिज़ाइन प्रक्रिया के लिए Google का उत्तर है। अपने ऐप के यूआई को एक्सएमएल में डिज़ाइन करने के बजाय, आप इसे सीधे अपने कोड से कर सकते हैं। जबकि कोड-आधारित लेआउट बनाना संभव है, वे आमतौर पर XML की तुलना में कम रखरखाव योग्य होते हैं और इसमें आसानी से टूटने वाली लाइब्रेरी शामिल होती हैं। दूसरी ओर, कंपोज़ को सीधे कोटलिन के अंदर काम करने के लिए डिज़ाइन किया गया है: कोई और XML नहीं।

जेटपैक कंपोज़ भी XML लेआउट के मानक अनिवार्य डिज़ाइन से काफी अलग है। इसके बजाय, यह रिएक्ट या फ़्लटर के समान है, जिसमें घोषणात्मक लेआउट होते हैं जो उस तर्क को लागू करने के लिए डेवलपर पर निर्भर होने के बजाय, डेटा बदलते समय खुद को अपडेट करते हैं।

क्या समर्थित है

तो जेटपैक कंपोज़ अब अल्फ़ा में है। इसका क्या मतलब है? ख़ैर, बहुत सारी चीज़ें।

दृश्यों के साथ अंतरसंचालनीयता

जैसे कोटलिन जावा के साथ पूरी तरह से इंटरऑपरेबल है, वैसे ही जेटपैक कंपोज़ एंड्रॉइड के मानक व्यू के साथ पूरी तरह से इंटरऑपरेबल है। इसका मतलब काफी कुछ है.

एक के लिए, यदि आप चाहें तो जेटपैक कंपोज़ पर माइग्रेट करना बहुत आसान होगा। अपने सभी कस्टम व्यू और लेआउट को कंपोज़ेबल में बदलने के बजाय, आप केवल अपने नए लेआउट और कंपोनेंट को कंपोज़ में बनाने में सक्षम होंगे। क्या आपके पास एक लाइब्रेरी है जो "विरासत" दृश्यों का उपयोग करती है, लेकिन आपका ऐप कंपोज़ के साथ डिज़ाइन किया गया है? कोई बात नहीं। आप व्यू को सीधे अपने कंपोज़ेबल फ़ंक्शन में जोड़ सकते हैं। क्या आपने अभी तक कंपोज़ पर छलांग नहीं लगाई है, लेकिन आप ऐसी लाइब्रेरी का उपयोग करना चाहते हैं जो कंपोज़ेबल्स पर निर्भर हो? फिर, कोई समस्या नहीं. बस कंपोजेबल को सीधे अपने लेआउट में डालें।

जहां तक ​​थीमिंग की बात है, यह लेआउट इंटरऑपरेबिलिटी जितना प्लग-एंड-प्ले नहीं है। तथापि, गूगल ने एक लाइब्रेरी बनाई है अपने मानक XML थीम को कंपोज़-संगत थीम में अनुकूलित करना, चीजों को केंद्रीकृत रखने और दोहराव से बचने में मदद करना।

एनिमेशन

यहां कहने के लिए वास्तव में बहुत कुछ नहीं है, सिवाय इसके कि जेटपैक कंपोज़ एंड्रॉइड के व्यू फ्रेमवर्क की तरह ही एनिमेशन का समर्थन करता है। आप अपनी इच्छानुसार स्थान बदल सकते हैं, आकार बदल सकते हैं और घुमा सकते हैं।

आलसी सूचियाँ

एक आलसी सूची मूलतः RecyclerView का कंपोज़ संस्करण है। यह केवल आवश्यकतानुसार आइटम पेश करता है, रैम की बचत करता है और प्रदर्शन बढ़ाता है। बेशक, यह कंपोज़ होने के कारण, सूचियों को लागू करना काफी आसान है।

बाधा लेआउट

एंड्रॉइड में अधिक शक्तिशाली दृश्यों में से एक कॉन्स्ट्रेंटलेआउट है। यह आपको बच्चों के दृश्यों को एक-दूसरे के सापेक्ष स्थिति, आकार और वजन देने की सुविधा देता है, साथ ही कुछ एनिमेशन को भी आसान बनाता है। यदि आप कंपोज़ में इस कार्यक्षमता को खोने के बारे में चिंतित थे, तो आपको ऐसा नहीं करना चाहिए, क्योंकि यह यहाँ भी है।

सामग्री यूआई घटक

शक्तिशाली दृश्यों का एक और सेट Google की सामग्री घटक लाइब्रेरी है। यहां मौजूद अधिकांश मानक दृश्य और लेआउट हैं जिन्हें आप मूल दृश्य ढांचे में पा सकते हैं। लेकिन अतिरिक्त कार्यक्षमता प्रदान करने और थीम को आसान बनाने के लिए उन्हें संशोधित या लपेटा गया है, और उन्होंने रचना करने का अपना तरीका भी बना लिया है।

परिक्षण

किसी ऐप को विकसित करने का एक महत्वपूर्ण हिस्सा उसका परीक्षण करना है। एक साधारण ऐप के लिए, आप इसे इंस्टॉल करके और उपयोग करके मैन्युअल रूप से ऐसा कर सकते हैं। हालाँकि, अधिक जटिल परियोजनाएँ स्वचालित परीक्षण ढाँचे से बहुत लाभान्वित हो सकती हैं जो आपके लिए सबसे अधिक मेहनत करती हैं। जेटपैक कंपोज़ स्वचालित परीक्षण का समर्थन करता है ताकि आप अपने ऐप को यथासंभव स्थिर बना सकें।

अभिगम्यता सुविधाएँ

पहुंच हमारे समाज का एक महत्वपूर्ण हिस्सा है। हमारी तकनीक में पहुंच-योग्यता सुविधाओं के बिना, बहुत से लोग हमारे फोन, टेलीविज़न और जो कुछ भी प्रदान करते हैं, उन लाभों से वंचित रह जाएंगे। जेटपैक कंपोज़ अभी भी अल्फ़ा में है, इसलिए एक्सेसिबिलिटी समर्थन पूर्ण नहीं है, लेकिन Google विकास के दौरान इसे ध्यान में रख रहा है, और प्राथमिक समर्थन पहले से ही मौजूद है।

एंड्रॉइड स्टूडियो

हालाँकि, Jetpack Compose की सभी सुविधाएँ Jetpack Compose में ही नहीं हैं। आसान कंपोज़िंग के लिए एंड्रॉइड स्टूडियो और कोटलिन में प्लगइन्स और एक्सपेंशन भी हैं।

कोटलिन कंपाइलर प्लगइन

कोटलिन जेवीएम की तरह, आपके कंपोज़ फ़ंक्शंस को कोड में ठीक से परिवर्तित करने के लिए एंड्रॉइड स्टूडियो में एक कंपाइलर प्लगइन है जिसे एंड्रॉइड वास्तव में समझ सकता है और उसका अनुसरण कर सकता है।

इंटरैक्टिव पूर्वावलोकन

आपके मानक XML लेआउट की तरह, एंड्रॉइड स्टूडियो जेटपैक कंपोज़ के लिए एक लेआउट पूर्वावलोकन के साथ आता है। हालाँकि यह वर्तमान में कुछ पहलुओं में XML पूर्वावलोकन जितना सुविधाजनक नहीं है - इसके लिए आपको अपना प्रोजेक्ट बनाना होगा अद्यतन करने के लिए पूर्वावलोकन, और एक समर्पित पूर्वावलोकन फ़ंक्शन बनाएं - यह एक उल्लेखनीय लाभ के साथ आता है: इंटरैक्टिव पूर्वावलोकन.

एक इंटरैक्टिव पूर्वावलोकन सिर्फ एक सामान्य पूर्वावलोकन है, लेकिन इंटरएक्टिव. पागल, मुझे पता है. हालाँकि, इसका मतलब यह है कि आप वास्तव में टेक्स्ट बॉक्स में टेक्स्ट टाइप कर सकते हैं, बटन क्लिक कर सकते हैं, और, अच्छी तरह से, अपने कंपोज़ेबल्स के साथ इंटरैक्ट कर सकते हैं, उन्हें तैनात किए बिना भी।

एकल कंपोज़ेबल परिनियोजन

यदि आप वास्तव में अपने लेआउट को तैनात करना चाहते हैं (यानी इंस्टॉल करना) यह देखने के लिए कि यह वास्तविक डिवाइस पर कैसे काम करता है, तो यह सुविधा आपकी मदद कर सकती है। सामान्य XML लेआउट के साथ, यह देखने के लिए कि वास्तविक दुनिया में एक लेआउट कैसे काम करता है, आपको संपूर्ण ऐप बनाना और इंस्टॉल करना होगा। यदि आप जिस लेआउट का परीक्षण करना चाहते हैं वह प्राथमिक स्क्रीन पर नहीं है, तो आपको उस तक पहुंचने के लिए बहुत अधिक टैप करना पड़ सकता है।

और यहीं पर केवल एक कंपोज़ेबल को तैनात करने की क्षमता काम आती है। अपना ऐप बनाने और इंस्टॉल करने और फिर जिस लेआउट का आप परीक्षण कर रहे हैं उस पर नेविगेट करने के बजाय, आप बस लेआउट को तैनात कर सकते हैं। एंड्रॉइड स्टूडियो एक रैपर गतिविधि उत्पन्न करेगा और खोलेगा जो आपके द्वारा तैनात किए गए कंपोज़ेबल को प्रदर्शित करेगा। यह परीक्षण और डिज़ाइन को बहुत तेज़ बना सकता है, और तत्व इंटरैक्शन से संबंधित मुद्दों को अलग करने में भी मदद कर सकता है।

कोड समापन

यदि आपकी आईडीई में कोड पूर्ण नहीं है, तो क्या यह भी एक आईडीई है? नहीं, नहीं, ऐसा नहीं है। तो, निश्चित रूप से, एंड्रॉइड स्टूडियो जेटपैक कंपोज़ के लिए पूर्ण कोड पूर्णता का समर्थन करता है।


हालाँकि यह वह सब कुछ नहीं है जो जेटपैक कंपोज़ तालिका में लाता है, उपरोक्त सुविधाएँ और व्यवहार यह दर्शाते हैं कि Google इस ढांचे को कितना शक्तिशाली बनाना चाहता है। और, जबकि यह अभी भी अल्फा में है, यह इसकी पिछली "विकास" स्थिति से एक कदम आगे है। यदि आप वास्तव में जेटपैक कंपोज़ का उपयोग करना बंद कर रहे थे (जैसा कि मैं कर रहा था), तो अब इसे दोबारा आज़माने का समय आ गया है।