Room 3.0 का पहला अल्फ़ा वर्शन रिलीज़ कर दिया गया है! Room 3.0, लाइब्रेरी का एक ऐसा वर्शन है जिसमें कई बड़े बदलाव किए गए हैं. इसमें Kotlin Multiplatform (KMP) पर फ़ोकस किया गया है. साथ ही, इसमें Android, iOS, और JVM डेस्कटॉप के लिए पहले से मौजूद सहायता के अलावा, JavaScript और WebAssembly (WASM) के लिए भी सहायता जोड़ी गई है.
इस ब्लॉग में, Room 3.0 में किए गए बड़े बदलावों, Room 3.0 को लॉन्च करने की वजहों, और Room 2.0 से माइग्रेट करने के अलग-अलग तरीकों के बारे में बताया गया है.
नुकसान पहुंचा सकने वाले बदलाव
Room 3.0 में, एपीआई में ये नुकसान पहुंचा सकने वाले बदलाव किए गए हैं:
- SupportSQLite एपीआई के लिए सहायता बंद करना: Room 3.0, पूरी तरह से androidx.sqlite ड्राइवर एपीआई पर काम करता है. SQLiteDriver एपीआई, KMP के साथ काम करते हैं. साथ ही, Room की Android के एपीआई पर निर्भरता खत्म करने से, Android के लिए एपीआई की सतह आसान हो जाती है, क्योंकि इससे दो संभावित बैकएंड होने से बचा जा सकता है.
- अब Java कोड जनरेट नहीं किया जाएगा: Room 3.0, सिर्फ़ Kotlin कोड जनरेट करता है. यह, Kotlin-फ़र्स्ट पैराडाइम के साथ काम करता है. साथ ही, इससे कोडबेस और डेवलपमेंट की प्रोसेस आसान हो जाती है. इससे, तेज़ी से बदलाव किए जा सकते हैं.
- KSP पर फ़ोकस करना: हम Java Annotation Processing (AP) और KAPT के लिए भी सहायता बंद कर रहे हैं. Room 3.0, सिर्फ़ KSP (Kotlin Symbol Processing) प्रोसेसर है. इससे, Kotlin कोडबेस को Java भाषा की सीमाओं के बिना बेहतर तरीके से प्रोसेस किया जा सकता है.
- कोरूटीन को प्राथमिकता देना: Room 3.0, Kotlin कोरूटीन का इस्तेमाल करता है. इसलिए, इसके एपीआई कोरूटीन-फ़र्स्ट हैं. कोरूटीन, KMP के साथ काम करने वाला एसिंक्रोनस फ़्रेमवर्क है. साथ ही, वेब प्लैटफ़ॉर्म के लिए सहायता उपलब्ध कराने के लिए, Room को एसिंक्रोनस बनाना ज़रूरी है.
नया पैकेज
Room 3.0, एक नए पैकेज में मौजूद है. ऐसा इसलिए, ताकि Room 2.x के मौजूदा वर्शन के साथ काम करने से जुड़ी समस्याएं न हों. साथ ही, Room पर ट्रांज़िटिव डिपेंडेंसी वाली लाइब्रेरी (उदाहरण के लिए, WorkManager) के साथ भी कोई समस्या न हो. इसका मतलब है कि इसके पास एक नया मेवन ग्रुप और आर्टफ़ैक्ट आईडी भी है. उदाहरण के लिए, androidx.room:room-runtime अब androidx.room3:room3-runtime बन गया है. साथ ही, androidx.room.RoomDatabase जैसी क्लास अब androidx.room3.RoomDatabase पर मौजूद होंगी.
Kotlin और कोरूटीन को प्राथमिकता देना
Room 3.0, अब Java कोड जनरेट नहीं करता. इसलिए, इसके लिए KSP और Kotlin कंपाइलर की ज़रूरत होती है. भले ही, Room के साथ इंटरैक्ट करने वाला कोडबेस Java में हो. हमारा सुझाव है कि आपके पास मल्टी-मॉड्यूल प्रोजेक्ट हो, जिसमें Room का इस्तेमाल किया जाता हो. साथ ही, Kotlin Gradle प्लगिन और KSP को कोडबेस के बाकी हिस्सों पर असर डाले बिना लागू किया जा सके.
Room 3.0 के लिए, कोरूटीन की भी ज़रूरत होती है. खास तौर पर, डीएओ फ़ंक्शन को सस्पेंड करना ज़रूरी है. हालांकि, अगर वे फ़्लो जैसे रिएक्टिव टाइप को वापस कर रहे हैं, तो उन्हें सस्पेंड करने की ज़रूरत नहीं है. Room 3.0, डीएओ फ़ंक्शन को ब्लॉक करने की अनुमति नहीं देता. अपने ऐप्लिकेशन में कोरूटीन को इंटिग्रेट करने के बारे में जानने के लिए, Android पर कोरूटीन से जुड़ा दस्तावेज़ देखें.
SQLiteDriver एपीआई पर माइग्रेट करना
SupportSQLite का इस्तेमाल बंद करने के बाद, ऐप्लिकेशन को SQLiteDriver एपीआई पर माइग्रेट करना होगा. Room 3.0 के सभी फ़ायदों का इस्तेमाल करने के लिए, यह माइग्रेशन ज़रूरी है. इसमें BundledSQLiteDriver के ज़रिए, बंडल की गई SQLite लाइब्रेरी का इस्तेमाल करने की अनुमति देना भी शामिल है. Room 2.7.0 या इसके बाद के वर्शन का इस्तेमाल करके, आज ही ड्राइवर एपीआई पर माइग्रेट किया जा सकता है. हमारा सुझाव है कि SupportSQLite का इस्तेमाल न करें. अगर Room के इंटिग्रेशन को SQLiteDriver एपीआई पर माइग्रेट किया जाता है, तो Room 3.0 पर ट्रांज़िशन करना आसान हो जाता है, क्योंकि पैकेज में बदलाव करने के लिए, ज़्यादातर सिंबल रेफ़रंस (इंपोर्ट) अपडेट करने होते हैं. साथ ही, कॉल-साइट में बहुत कम बदलाव करने पड़ सकते हैं.
SQLiteDriver एपीआई की खास जानकारी के लिए, SQLiteDriver एपीआई का दस्तावेज़ देखें.
Room को SQLiteDriver एपीआई का इस्तेमाल करने के लिए माइग्रेट करने के बारे में ज़्यादा जानने के लिए, आधिकारिक SupportSQLite से माइग्रेट करने के दस्तावेज़ देखें.
Room SupportSQLite रैपर
हम समझते हैं कि सभी प्रोजेक्ट के लिए, SupportSQLite को पूरी तरह से हटाना तुरंत मुमकिन नहीं हो सकता. इस ट्रांज़िशन को आसान बनाने के लिए, Room 2.0 सीरीज़ के सबसे नए वर्शन, Room 2.8.0 में androidx.room:room-sqlite-wrapper नाम का एक नया आर्टफ़ैक्ट जोड़ा गया है. इस आर्टफ़ैक्ट में, एक ऐसा कंपैटिबिलिटी एपीआई है जिसकी मदद से, RoomDatabase को SupportSQLiteDatabase में बदला जा सकता है. भले ही, डेटाबेस में मौजूद SupportSQLite एपीआई को SQLiteDriver इंस्टॉल होने की वजह से बंद कर दिया गया हो. इससे उन डेवलपर को कुछ समय के लिए मदद मिलती है जिन्हें अपने कोडबेस को पूरी तरह से माइग्रेट करने में ज़्यादा समय लगता है. Room 3.0 में, यह आर्टफ़ैक्ट androidx.room3:room3-sqlite-wrapper के तौर पर मौजूद है. इससे, Room 3.0 पर माइग्रेट करने में मदद मिलती है. साथ ही, SupportSQLite के अहम इस्तेमाल के लिए सहायता भी मिलती है.
उदाहरण के लिए, roomDatabase.openHelper.writableDatabase के इनवोकेशन को roomDatabase.getSupportWrapper() से बदला जा सकता है. साथ ही, रैपर तब भी उपलब्ध कराया जाएगा, जब Room के बिल्डर पर setDriver() को कॉल किया जाता है.
ज़्यादा जानकारी के लिए, room-sqlite-wrapper का दस्तावेज़ देखें.
Room और SQLite के लिए वेब सहायता
Kotlin Multiplatform, JS और WasmJS को टारगेट करता है. साथ ही, इसमें एपीआई में कुछ अहम बदलाव किए गए हैं. खास तौर पर, Room 3.0 में कई एपीआई, सस्पेंड फ़ंक्शन हैं, क्योंकि वेब स्टोरेज के लिए सही सहायता एसिंक्रोनस होती है. SQLiteDriver एपीआई को भी वेब के लिए सहायता उपलब्ध कराने के लिए अपडेट किया गया है. साथ ही, androidx.sqlite:sqlite-web में एक नया वेब एसिंक्रोनस ड्राइवर उपलब्ध है. यह वेब वर्कर पर आधारित ड्राइवर है. इसकी मदद से, ऑरिजिन प्राइवेट फ़ाइल सिस्टम (ओपीएफ़एस) में डेटाबेस को सेव किया जा सकता है.
वेब के लिए Room सेट अप करने के बारे में ज़्यादा जानने के लिए, Room 3.0 के रिलीज़ नोट देखें.
कस्टम डीएओ रिटर्न टाइप
Room 3.0 में, Room में RxJava और Paging की तरह, कस्टम इंटिग्रेशन जोड़ने की सुविधा जोड़ी गई है. @DaoReturnTypeConverter नाम के नए एनोटेशन एपीआई की मदद से, अपना इंटिग्रेशन बनाया जा सकता है, ताकि Room का जनरेट किया गया कोड, रनटाइम पर ऐक्सेस किया जा सके. इससे, @Dao फ़ंक्शन के पास अपने कस्टम रिटर्न टाइप हो सकते हैं. इसके लिए, Room टीम की ओर से सहायता जोड़ने का इंतज़ार नहीं करना पड़ता. मौजूदा इंटिग्रेशन को इस सुविधा का इस्तेमाल करने के लिए माइग्रेट किया जाता है. इसलिए, अब इस पर निर्भर रहने वाले लोगों को @Database या @Dao की परिभाषाओं में कनवर्टर जोड़ने होंगे.
उदाहरण के लिए, Paging कनवर्टर, androidx.room3:room3-paging आर्टफ़ैक्ट में मौजूद होगा. इसे PagingSourceDaoReturnTypeConverter कहा जाता है. वहीं, LiveData के लिए कनवर्टर, androidx.room3:room3-livedata में मौजूद है. इसे LiveDataDaoReturnTypeConverter कहा जाता है.
ज़्यादा जानकारी के लिए, Room 3.0 के रिलीज़ नोट में डीएओ रिटर्न टाइप कनवर्टर सेक्शन देखें.
Room 2.x का रखरखाव मोड
Room के डेवलपमेंट का फ़ोकस Room 3 पर होगा. इसलिए, Room 2.x का मौजूदा वर्शन, रखरखाव मोड में चला जाएगा. इसका मतलब है कि इसमें कोई नई सुविधा नहीं जोड़ी जाएगी.हालांकि, बग ठीक करने और डिपेंडेंसी अपडेट के साथ, पैच रिलीज़ (2.8.1, 2.8.2 वगैरह) अब भी जारी किए जाएंगे. टीम, Room 3 के स्टेबल होने तक इस काम को जारी रखेगी.
आखिर में कुछ ज़रूरी बातें
हम Room 3.0 की संभावनाओं और Kotlin के इकोसिस्टम के लिए इससे मिलने वाले अवसरों को लेकर बहुत उत्साहित हैं. इस सफ़र में हमारे साथ बने रहें. हम आपको नए अपडेट देते रहेंगे!
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
आज The Android Show के दौरान, यह एलान किया गया है कि Android, ऑपरेटिंग सिस्टम से इंटेलिजेंस सिस्टम में बदल रहा है. इससे आपके ऐप्लिकेशन के साथ लोगों की दिलचस्पी बढ़ाने के ज़्यादा मौके मिलेंगे.
Matthew McCullough • पढ़ने में 4 मिनट लगेंगे
-
प्रॉडक्ट से जुड़ी खबरें
मोबाइल इकोसिस्टम में हमेशा बदलाव होते रहते हैं. इससे नए अवसर और नए खतरे, दोनों मिलते हैं. इन बदलावों के ज़रिए, Android और Google Play यह पक्का करने के लिए प्रतिबद्ध हैं कि अरबों लोग, भरोसे के साथ अपने ऐप्लिकेशन का इस्तेमाल जारी रख सकें और डेवलपर के इनोवेशन को बढ़ावा मिल सके.
Vijaya Kaza • पढ़ने में 3 मिनट लगेंगे
-
प्रॉडक्ट से जुड़ी खबरें
Jetpack Compose का अप्रैल '26 वर्शन स्टेबल है. इस वर्शन में, Compose के मुख्य मॉड्यूल का वर्शन 1.11 (BOM मैपिंग देखें), शेयर किए गए एलिमेंट के डीबग टूल, ट्रैकपैड इवेंट वगैरह शामिल हैं.
Meghan Mehta • पढ़ने में 5 मिनट लगेंगे
अप-टू-डेट रहें
हर हफ़्ते, Android डेवलपमेंट से जुड़ी नई जानकारी अपने इनबॉक्स में पाएं.