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 API को बंद किया जा रहा है: Room 3.0, पूरी तरह से androidx.sqlite ड्राइवर एपीआई पर आधारित है. SQLiteDriver API, KMP के साथ काम करते हैं. साथ ही, Android के एपीआई पर Room की निर्भरता को हटाने से, Android के लिए एपीआई का इस्तेमाल करना आसान हो जाता है. ऐसा इसलिए, क्योंकि इसमें दो बैकएंड नहीं होते.
- अब Java कोड जनरेट नहीं होगा: Room 3.0 सिर्फ़ Kotlin कोड जनरेट करता है. यह Kotlin-first के बदलते पैराडाइम के साथ काम करता है. साथ ही, यह कोडबेस और डेवलपमेंट प्रोसेस को आसान बनाता है, जिससे तेज़ी से बदलाव किए जा सकते हैं.
- KSP पर फ़ोकस: हम Java Annotation Processing (AP) और KAPT के लिए भी सहायता बंद कर रहे हैं. Room 3.0 सिर्फ़ एक KSP (Kotlin Symbol Processing) प्रोसेसर है. इससे Java भाषा की सीमाओं के बिना, Kotlin कोडबेस को बेहतर तरीके से प्रोसेस किया जा सकता है.
- कोरूटीन पहले: Room 3.0 में Kotlin कोरूटीन का इस्तेमाल किया जाता है. इससे इसके एपीआई, कोरूटीन-फ़र्स्ट बन जाते हैं. कोरूटीन, KMP के साथ काम करने वाला एसिंक्रोनस फ़्रेमवर्क है. वेब प्लैटफ़ॉर्म के साथ काम करने के लिए, Room को एसिंक्रोनस बनाना ज़रूरी है.
नया पैकेज
Room 2.x के मौजूदा वर्शन के साथ काम न करने की समस्याओं को रोकने के लिए, Room 3.0 को एक नए पैकेज में रखा गया है. इसका मतलब है कि इसमें एक नया Maven ग्रुप और आर्टफ़ैक्ट आईडी भी है. ऐसा उन लाइब्रेरी के लिए किया गया है जिनमें Room की ट्रांज़िटिव डिपेंडेंसी होती हैं. उदाहरण के लिए, WorkManager. उदाहरण के लिए, androidx.room:room-runtime अब androidx.room3:room3-runtime हो गया है. साथ ही, androidx.room.RoomDatabase जैसी क्लास अब androidx.room3.RoomDatabase पर मौजूद होंगी.
Kotlin और कोरूटीन को प्राथमिकता देना
Room 3.0 में Java कोड जनरेट नहीं होता. इसलिए, अगर Room के साथ इंटरैक्ट करने वाला कोडबेस Java में है, तो भी Room 3.0 के लिए KSP और Kotlin कंपाइलर की ज़रूरत होती है. हमारा सुझाव है कि आपके पास एक मल्टी-मॉड्यूल प्रोजेक्ट हो, जिसमें Room का इस्तेमाल किया जाता हो. साथ ही, Kotlin Gradle प्लगिन और KSP को कोडबेस के बाकी हिस्से पर असर डाले बिना लागू किया जा सकता हो.
Room 3.0 के लिए भी कोरूटीन की ज़रूरत होती है. साथ ही, डीएओ फ़ंक्शन को सस्पेंड करना ज़रूरी होता है. हालांकि, अगर वे फ़्लो जैसे रिएक्टिव टाइप को वापस भेज रहे हैं, तो उन्हें सस्पेंड करने की ज़रूरत नहीं होती. Room 3.0 में, डीएओ फ़ंक्शन को ब्लॉक करने की अनुमति नहीं है. अपने ऐप्लिकेशन में कोरूटीन को इंटिग्रेट करने के बारे में जानने के लिए, Android पर कोरूटीन के बारे में जानकारी देने वाला दस्तावेज़ पढ़ें.
SQLiteDriver API पर माइग्रेट करना
SupportSQLite के बंद होने के बाद, ऐप्लिकेशन को SQLiteDriver एपीआई पर माइग्रेट करना होगा. Room 3.0 के सभी फ़ायदों का इस्तेमाल करने के लिए, यह माइग्रेशन ज़रूरी है. इनमें BundledSQLiteDriver के ज़रिए, बंडल की गई SQLite लाइब्रेरी का इस्तेमाल करने की अनुमति देना भी शामिल है. Room 2.7.0+ का इस्तेमाल करके, आज ही ड्राइवर एपीआई पर माइग्रेट किया जा सकता है. हमारा सुझाव है कि आप SupportSQLite का इस्तेमाल न करें. अगर Room इंटिग्रेशन को SQLiteDriver एपीआई पर माइग्रेट किया जाता है, तो Room 3.0 पर ट्रांज़िशन करना आसान हो जाता है. ऐसा इसलिए, क्योंकि पैकेज में बदलाव करने के लिए, ज़्यादातर सिंबल रेफ़रंस (इंपोर्ट) अपडेट करने होते हैं. साथ ही, कॉल-साइट में कम से कम बदलाव करने पड़ सकते हैं.
SQLiteDriver API के बारे में खास जानकारी पाने के लिए, SQLiteDriver API से जुड़ा दस्तावेज़ देखें.
SQLiteDriver API का इस्तेमाल करने के लिए, Room को माइग्रेट करने के बारे में ज़्यादा जानने के लिए, 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 के रिलीज़ नोट देखें.
कस्टम DAO के रिटर्न टाइप
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 के रिलीज़ नोट में DAO के रिटर्न टाइप कन्वर्टर सेक्शन देखें.
Room 2.x का रखरखाव मोड
Room 3 पर फ़ोकस किया जाएगा. इसलिए, Room 2.x का मौजूदा वर्शन रखरखाव मोड में चला जाएगा. इसका मतलब है कि कोई नई सुविधा नहीं जोड़ी जाएगी. हालांकि, गड़बड़ियों को ठीक करने और डिपेंडेंसी अपडेट के साथ पैच रिलीज़ (2.8.1, 2.8.2 वगैरह) अब भी जारी किए जाएंगे. Room 3 के स्टेबल होने तक, टीम इस काम को जारी रखेगी.
आखिर में कुछ ज़रूरी बातें
हम Room 3.0 की संभावनाओं और Kotlin के लिए उपलब्ध अवसरों को लेकर बेहद उत्साहित हैं. इस सफ़र में हमारे साथ बने रहें, ताकि आपको इस बारे में ज़्यादा अपडेट मिलते रहें!
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
हर साल, Google I/O में अलग-अलग ईकोसिस्टम और प्रॉडक्ट के बारे में नई घोषणाएं की जाती हैं और नए संसाधन उपलब्ध कराए जाते हैं. इनमें Android डेवलपमेंट भी शामिल है. डेवलपमेंट का काम एआई और एजेंट की मदद से काम करने वाले टूल की ओर बढ़ रहा है. इसलिए, हमने अपनी सेवाओं का दायरा बढ़ाया है, ताकि हम आपकी बेहतर तरीके से मदद कर सकें. हालांकि, Android के लिए ऐप्लिकेशन बनाने का फ़ैसला आपका होगा.
Simona Milanovic • दो मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O ‘26 में, हमने दिखाया कि Android के प्लैटफ़ॉर्म में हुए नए बदलावों से, आपको अपने ऐप्लिकेशन की क्वालिटी को बेहतर बनाने में कैसे मदद मिल सकती है. साथ ही, डेवलपमेंट की प्रोसेस को ज़्यादा से ज़्यादा बेहतर बनाया जा सकता है.
Ataul Munim • तीन मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
हमने Google I/O 2026 में, Android को ऑपरेटिंग सिस्टम से इंटेलिजेंस सिस्टम में बदलने के बारे में बताया. हमने यह भी दिखाया कि सिस्टम के साथ मिलकर, नेटिव तौर पर इंटेलिजेंट अनुभव कैसे बनाए जा सकते हैं. साथ ही, Google के एआई की सुविधाओं को अपने ऐप्लिकेशन में कैसे शामिल किया जा सकता है.
Jingyu Shi • दो मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.