Room 3.0 का पहला ऐल्फ़ा वर्शन रिलीज़ कर दिया गया है! Room 3.0, लाइब्रेरी का एक मुख्य वर्शन है. इसमें Kotlin Multiplatform (KMP) पर फ़ोकस किया गया है. साथ ही, इसमें Android, iOS, और JVM डेस्कटॉप के लिए पहले से मौजूद सहायता के अलावा, JavaScript और WebAssembly (WASM) के लिए सहायता जोड़ी गई है.
इस ब्लॉग में, हमने 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 कोरूटीन का इस्तेमाल किया जाता है. इससे इसके एपीआई, कोरूटीन को प्राथमिकता देते हैं. Coroutines, 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 3.0 के लिए KSP और Kotlin कंपाइलर की ज़रूरत होती है. भले ही, Room के साथ इंटरैक्ट करने वाला कोडबेस Java में हो. हमारा सुझाव है कि आपके पास एक से ज़्यादा मॉड्यूल वाला प्रोजेक्ट हो, जिसमें Room का इस्तेमाल किया गया हो. साथ ही, Kotlin Gradle Plugin और KSP को बाकी कोडबेस पर असर डाले बिना लागू किया जा सकता हो.
Room 3.0 के लिए भी कोरूटीन की ज़रूरत होती है. साथ ही, खास तौर पर डीएओ फ़ंक्शन को सस्पेंड करना ज़रूरी होता है. ऐसा तब तक करना होता है, जब तक वे फ़्लो जैसे रिएक्टिव टाइप को वापस नहीं कर देते. Room 3.0 में, डीएओ फ़ंक्शन को ब्लॉक करने की अनुमति नहीं है. अपने ऐप्लिकेशन में कोरूटीन को इंटिग्रेट करने के बारे में जानने के लिए, Android पर कोरूटीन के बारे में जानकारी देने वाला दस्तावेज़ पढ़ें.
SQLiteDriver API पर माइग्रेट करना
SupportSQLite का इस्तेमाल बंद होने के बाद, ऐप्लिकेशन को SQLiteDriver API पर माइग्रेट करना होगा. Room 3.0 के सभी फ़ायदों का इस्तेमाल करने के लिए, माइग्रेट करना ज़रूरी है. इनमें BundledSQLiteDriver के ज़रिए, बंडल की गई SQLite लाइब्रेरी का इस्तेमाल करने की अनुमति देना भी शामिल है. Room 2.7.0+ का इस्तेमाल करके, आज ही ड्राइवर एपीआई पर माइग्रेट किया जा सकता है. हमारा सुझाव है कि आप SupportSQLite का इस्तेमाल न करें. अगर Room इंटिग्रेशन को SQLiteDriver API पर माइग्रेट किया जाता है, तो 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 API बंद कर दिए गए हों, क्योंकि 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 API को भी अपडेट किया गया है, ताकि वे वेब के साथ काम कर सकें. साथ ही, androidx.sqlite:sqlite-web में एक नया वेब एसिंक्रोनस ड्राइवर उपलब्ध है. यह वेब वर्कर पर आधारित ड्राइवर है. इससे डेटाबेस को ऑरिजिन प्राइवेट फ़ाइल सिस्टम (ओपीएफ़एस) में सेव किया जा सकता है.
वेब के लिए Room सेट अप करने के तरीके के बारे में ज़्यादा जानने के लिए, Room 3.0 के रिलीज़ नोट देखें.
कस्टम DAO के रिटर्न टाइप
Room 3.0 में, Room में कस्टम इंटिग्रेशन जोड़ने की सुविधा मिलती है. यह सुविधा RxJava और Paging जैसी है. @DaoReturnTypeConverter नाम के नए एनोटेशन एपीआई की मदद से, अपना इंटिग्रेशन बनाया जा सकता है. इससे रूम का जनरेट किया गया कोड, रनटाइम में ऐक्सेस किया जा सकता है. इससे @Dao फ़ंक्शन के कस्टम रिटर्न टाइप को चालू किया जा सकता है. इसके लिए, रूम टीम के सपोर्ट जोड़ने का इंतज़ार नहीं करना पड़ता. मौजूदा इंटिग्रेशन को इस सुविधा का इस्तेमाल करने के लिए माइग्रेट किया जाता है. इसलिए, अब इस सुविधा पर भरोसा करने वाले लोगों को, @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 2026 में, Android को ऑपरेटिंग सिस्टम से इंटेलिजेंस सिस्टम में बदलने के बारे में बताया था. हमने यह भी दिखाया कि सिस्टम के साथ नेटिव तौर पर, बेहतर अनुभव कैसे बनाए जा सकते हैं. साथ ही, Google के एआई की सुविधाओं को अपने ऐप्लिकेशन में कैसे शामिल किया जा सकता है.
Jingyu Shi • दो मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
हमें यह बताते हुए खुशी हो रही है कि Android XR के लिए, Unreal Engine और Godot के साथ काम करने की सुविधा उपलब्ध हो गई है. हम आपकी प्रॉडक्टिविटी बढ़ाने और नई XR सुविधाएं चालू करने के लिए, नए टूल भी लॉन्च कर रहे हैं: Android XR Engine Hub और Android XR Interaction Framework.
Luke Hopkins, Ryan Bartley • 4 मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Android 17 के रिलीज़ होने के साथ ही, हम अडैप्टिव फ़र्स्ट डेवलपमेंट स्टैंडर्ड पर माइग्रेट कर रहे हैं. आपके उपयोगकर्ता अब सिर्फ़ एक तरह के डिवाइस का इस्तेमाल नहीं करते. वे दिन भर में फ़ोन, फ़ोल्ड किए जा सकने वाले डिवाइस, टैबलेट, लैपटॉप, कार में लगे डिसप्ले, और इमर्सिव XR एनवायरमेंट के बीच स्विच करते रहते हैं.
Fahd Imtiaz • 4 मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.