스크립트
00:00:00क्रॉस-प्लेटफ़ॉर्म डेस्कटॉप ऐप बनाने का मतलब पहले इलेक्ट्रॉन का इस्तेमाल करना होता था, लेकिन आजकल हमारे पास
00:00:04कई विकल्प मौजूद हैं। इसलिए, किसी भी तरह के भ्रम को दूर करने के लिए, आज हम तीन बेहतरीन विकल्पों की तुलना कर रहे हैं
00:00:09क्रॉस-प्लेटफ़ॉर्म डेस्कटॉप ऐप बनाने के लिए। हम रस्ट (Rust) में लिखे गए Tauri, Bun टीम के Electro Bun,
00:00:14और Deno की नई पेशकश Deno Desktop को देखेंगे। हम Electron को एक बेसलाइन के तौर पर भी इस्तेमाल करेंगे। और अगर आप
00:00:20इस चैनल पर किसी और टूल को कवर होते देखना चाहते हैं, तो मुझे कमेंट्स में ज़रूर बताएं।
00:00:23हम चार चीज़ों की तुलना करेंगे: बंडल साइज़, स्टार्टअप परफ़ॉर्मेंस, रनटाइम परफ़ॉर्मेंस और डेवलपर
00:00:29एक्सपीरियंस। मैंने एक ही ऐप चार बार बनाया है, एक स्क्रीन रिकॉर्डिंग टूल जो आपको परिणामों को
00:00:35टाइमलाइन पर एडिट करने और MP4 में आउटपुट देने की सुविधा देता है। मैंने विशेष रूप से इस तरह के ऐप को चुना है क्योंकि वीडियो प्रोसेसिंग
00:00:40इन तरह के टूल्स को उनकी सीमा तक ले जा सकती है। अब बेशक, सब कुछ परफ़ॉर्मेंस पर निर्भर नहीं करता,
00:00:44आपकी टीम का कौशल और आप किस तरह का प्रोडक्ट बना रहे हैं, यह सब उस फ्रेमवर्क को प्रभावित करेगा
00:00:49जिसे आप चुनते हैं, लेकिन उम्मीद है कि इससे आपको क्या उम्मीद रखनी चाहिए, इस पर कुछ मार्गदर्शन मिलेगा।
00:00:58तो चलिए, हमने जो एप्लिकेशन बनाया है, उसके डेमो को जल्दी से देखते हैं। हम शुरुआत अपने ऐप को लॉन्च करके करते हैं,
00:01:03हम चुन सकते हैं कि कौन सी स्क्रीन रिकॉर्ड करनी है, फिर रिकॉर्ड बटन दबाएं। अब हम स्क्रीन की एक छोटी सी रिकॉर्डिंग कर सकते हैं।
00:01:08एक बार जब हम पूरा कर लेते हैं, तो हम स्टॉप दबा सकते हैं, फिर एक विंडो दिखाई देगी जिसमें हमारी रिकॉर्डिंग
00:01:12टाइमलाइन पर होगी। फिर हम डेड स्पेस को हटाने के लिए इसे क्लिप कर सकते हैं और MP4 के रूप में आउटपुट करने के लिए एक्सपोर्ट दबा सकते हैं। यह ऐप
00:01:18वास्तव में बहुत सरल है, लेकिन क्योंकि हम कई API का उपयोग कर रहे हैं, जैसे कि वीडियो रिकॉर्ड करना, प्रोसेस करना और
00:01:24UI रेंडर करना, इसलिए यह वास्तव में एक अच्छा टेस्ट होना चाहिए। तो पहली चीज़ जो हम चेक करने जा रहे हैं वह है
00:01:28बंडल साइज़, और याद रखें कि ये सभी ऐप्स एक समान कार्यक्षमता प्रदान करते हैं। बेसलाइन के रूप में Electron 323
00:01:35मेगाबाइट का है, Tauri सिर्फ 57 मेगाबाइट का है, Electro Bun 418 मेगाबाइट का है, और Deno 111 मेगाबाइट का है।
00:01:44उन सभी में MP4 में एक्सपोर्ट के लिए FFmpeg एम्बेडेड है और वह अकेले ही 45 मेगाबाइट का है। और Electro Bun इतना
00:01:52बड़ा है क्योंकि मुझे इसके साथ Chromium शिप करना पड़ा। मैंने बहुत कोशिश की, लेकिन मैं सचमुच
00:01:56नेटिव सिस्टम वेबव्यू के साथ स्क्रीन रिकॉर्ड को काम करने में सफल नहीं हो पाया, खास तौर पर JavaScript से रिकॉर्ड करने के लिए।
00:02:01आपको स्क्रीन कैप्चर API और getDisplayMedia फ़ंक्शन की ज़रूरत होती है। आप ब्राउज़र से स्क्रीन मांगते हैं,
00:02:06यह आपको एक स्ट्रीम देता है, मीडिया रिकॉर्डर इसे एनकोड करता है, और इसी तरह Electron और Deno काम करते हैं। Electro Bun
00:02:12में वह API शामिल ही नहीं है, इसलिए इसका एकमात्र तरीका Chromium को फिर से शामिल करना है, और वह
00:02:17अतिरिक्त 200 मेगाबाइट का ब्लोट (बेवजह का डेटा) लेकर आता है। Deno के API ने इसे लागू किया था, तो यह सब वही कोड है,
00:02:24लेकिन बिना Chromium के, और इसीलिए Deno का बंडल साइज़ 100 मेगाबाइट के आसपास हो जाता है, और Electro
00:02:30Bun का 400 के करीब हो जाता है। और Rust को इन सबकी ज़रूरत नहीं पड़ी क्योंकि Tauri वेबव्यू से
00:02:35बिल्कुल भी रिकॉर्ड नहीं करता है। यह सब कुछ बैकएंड के ज़रिए, नेटिव स्क्रीन कैप्चर किट के ज़रिए करता है। यह
00:02:40वही macOS फ्रेमवर्क है जो QuickTime उपयोग करता है, और यह सब सीधे बैकएंड से रिकॉर्ड होता है। आप इसे
00:02:46एक डिस्प्ले, एक कोडेक और एक फ़ाइल पाथ देते हैं और यह खुद फ़ाइल लिखता है। वेबव्यू सिर्फ UI है, यह कभी भी
00:02:52एक भी फ्रेम को टच नहीं करता है। और आपको ऐसी चीज़ें भी मुफ्त में मिलती हैं जिन्हें JavaScript बिल्ड को संभालना पड़ता है।
00:02:56स्क्रीन कैप्चर किट आपके माइक और सिस्टम ऑडियो को खुद मिक्स करता है और यह एक सही MP4 को अंतिम रूप देता है। मैंने
00:03:02FFmpeg को भी Tauri ऐप के अंदर छोड़ा था ताकि हम अलग-अलग फॉर्मेट में एक्सपोर्ट कर सकें, लेकिन तकनीकी रूप से वह
00:03:07वैकल्पिक है। ठीक है, अब हम स्टार्टअप समय का पता लगाने के लिए इन ऐप्स को लॉन्च कर सकते हैं। मैंने एक स्क्रिप्ट लिखी है
00:03:13जो इसे 10 बार करती है, ताकि मैं मीडियन (औसत) निकाल सकूं। बेसलाइन के रूप में Electron 273 मिलीसेकंड था, Tauri
00:03:19वास्तव में 311 मिलीसेकंड का था, Electro Bun 773 मिलीसेकंड का था और Deno 242 मिलीसेकंड का था।
00:03:29और यहाँ मेरे लिए हैरानी की बात यह थी कि Tauri सबसे तेज़ नहीं था, यह Electron से बस थोड़ा पीछे है, और फिर Deno
00:03:34ने वास्तव में सबको पीछे छोड़ दिया। धारणा यह होगी कि Rust प्लस सिस्टम वेबव्यू का मतलब होगा तुरंत
00:03:39स्टार्ट, लेकिन चूंकि रेंडरिंग इंजन को अभी भी बूट होना है, चाहे कुछ भी हो, शायद यही कारण है
00:03:44थोड़ी धीमी स्टार्टअप गति का। Electro Bun एक अलग मामला है, Electron से लगभग तीन गुना, यह
00:03:50एक लॉन्चर को बूट करता है जो Bun को बूट करता है, जो Chromium को बूट करता है, एक चेन में तीन रनटाइम, और आप इसे वास्तव में महसूस कर सकते हैं।
00:03:56अब लॉन्च के बाद मेमोरी को देखते हैं। एक बार जब ऐप वास्तव में चालू हो जाता है, तो Electron फिर से बेसलाइन है
00:04:01और यह 128 मेगाबाइट था। Tauri 109 मेगाबाइट, Electro Bun 208 मेगाबाइट और Deno 98
00:04:10मेगाबाइट का था। तो Deno और Tauri मूल रूप से बराबर थे और फिर Electro Bun बाकी सब से लगभग दोगुना था।
00:04:15Tauri के लिए, यह मार्केटिंग द्वारा निहित 10 गुना सुधार के कहीं भी करीब नहीं है। डिस्क पर, हाँ, यह बहुत
00:04:21छोटा है, लेकिन एप्लिकेशन चलते समय वास्तविक मेमोरी फ़ुटप्रिंट अन्य
00:04:26टूल्स के बहुत अधिक समान है। और जब आप खुद ये चेक कर रहे हों तो एक चीज़ पर नज़र रखें, Tauri
00:04:31सिस्टम वेबव्यू का उपयोग करता है और वे प्रक्रियाएं आपके ऐप की चाइल्ड (बच्चे) नहीं होती हैं। macOS उन्हें अलग से शुरू करता है, इसलिए
00:04:36Activity Monitor Tauri को लगभग 36 मेगाबाइट पर दिखाता है और ऐसा लगता है कि यह Electron को तीन बार मात देता है
00:04:42लेकिन ऐसा नहीं है, तो जब आप उन सभी प्रक्रियाओं को जोड़ते हैं, तो 36 मेगाबाइट 109 मेगाबाइट के करीब हो जाता है
00:04:48जो हमने टेस्ट में रिकॉर्ड किया था। स्क्रीन रिकॉर्ड की बात करें तो, मैंने Tauri ऐप से बहुत बेहतर
00:04:53परफ़ॉर्मेंस देखी, और यह शायद इसलिए है क्योंकि हम वेब में डेटा रिकॉर्ड नहीं कर रहे हैं
00:04:58व्यू में और फिर उसे ब्रिज पर ट्रांसफर नहीं कर रहे हैं। इसके बजाय, यह सब उस नेटिव SDK के साथ रिकॉर्ड किया जाता है जो
00:05:04सिस्टम के साथ आता है। अगर आप 60 FPS रिकॉर्ड के करीब पहुंचना चाहते हैं, तो Rust और Tauri ही
00:05:10सही रास्ता होगा। अब डेवलपर एक्सपीरियंस को देखते हैं, और प्रत्येक प्लेटफ़ॉर्म के अंतर के कारण, यह सरल
00:05:15ऐप वास्तव में बनाना बिल्कुल भी आसान नहीं था। कुल मिलाकर, Electron और Tauri को लागू करना सबसे आसान
00:05:20था, लेकिन Deno और Electro Bun में वास्तव में बहुत सारी समस्याएँ और सिस्टम क्रैश हुए। Deno में जब
00:05:26हम रिकॉर्डिंग शुरू करते थे और फिर ऐप को छिपा देते थे, तो पूरी एप्लिकेशन बंद हो जाती थी। मुझे लगता है कि ऐसा इसलिए है क्योंकि
00:05:30जब कोई स्क्रीन दिखाई नहीं देती, तो Deno बस यह मान लेता है कि एप्लिकेशन का काम पूरा हो गया है और इसलिए यह
00:05:36पूरी प्रक्रिया को समाप्त कर देता था। तो इसका जुगाड़ वाला समाधान यह था कि व्यू को स्क्रीन के बाहर छिपा दिया जाए।
00:05:41Electro Bun को स्क्रीन रिकॉर्ड के लिए Chromium को बंडल करने की ज़रूरत थी, और इसके साथ और भी कई समस्याएँ थीं। और कुछ
00:05:46कारणों से, पैकेज वास्तव में 3JS और Babylon JS पर निर्भर करता है जो 3D रेंडरिंग के लिए हैं, जिसने
00:05:53ब्लोटेड बंडल साइज़ में योगदान दिया। तो कुल मिलाकर, व्यक्तिगत रूप से मैं Tauri चुनूंगा, लेकिन अगर आप वास्तव में Rust में प्रोग्राम नहीं करना चाहते हैं,
00:05:58तो Electron अभी भी TypeScript डेवलपर्स के लिए परिपक्व प्लेटफ़ॉर्म है। Deno ठीक लग रहा है, लेकिन मुझे लगता है कि
00:06:04प्लेटफ़ॉर्म को अभी भी परिपक्व होने में कुछ समय की ज़रूरत है। और फिर मेरे लिए Electro Bun उन सब में सबसे खराब था।
00:06:09तो उम्मीद है, आप खुद के लिए निर्णय ले सकते हैं। मुझे कमेंट्स में बताएं कि आप क्या सोचते हैं। और हमने
00:06:13पूरी तरह से Deno Desktop पर एक वीडियो बनाया है, तो अगर आप इसके बारे में अधिक जानना चाहते हैं, तो आप इस पर क्लिक कर सकते हैं
00:06:18वीडियो यहाँ। अन्यथा, मैं Betterstack से वारेन हूँ, देखने के लिए धन्यवाद, और मैं आपसे अगली बार मिलूँगा।