WebAssembly: अर्थ, लाभ, उपयोग के मामले और बहुत कुछ

WebAssembly प्रचार में पकड़ा गया, लेकिन निश्चित नहीं है कि यह क्या है? यहाँ नीचे है।

WebAssembly या Wasm प्रोग्राम बनाने के लिए एक बाइनरी-कोड प्रारूप है जो किसी भी कंप्यूटर आर्किटेक्चर पर निष्पादित हो सकता है।

सिस्टम में एक वर्चुअल मशीन और एक कंपाइलर शामिल होता है जो कंप्यूटर कोड को प्रोग्रामिंग भाषाओं, जैसे C या C++ से मानव-पठनीय .wat और बाइनरी .wasm स्वरूपों में अनुवाद करता है।

WebAssembly का मूल लक्ष्य प्रोग्रामर को ब्राउज़र के अंदर लगभग देशी निष्पादन गति को सक्षम करके वेब पेजों के लिए उच्च-प्रदर्शन अनुप्रयोगों को विकसित करने में सक्षम बनाना था। लेकिन ऐसा लगता है कि तकनीक अब ब्राउज़रों और क्लाउड में विकसित हो रही है।

यह मार्गदर्शिका आपको वह सब कुछ दिखाती है जो आपको इस विकसित हो रही तकनीक, इसकी ताकत और कमजोरियों के साथ-साथ इसकी भविष्य की संभावनाओं के बारे में जानने की जरूरत है।

WebAssembly क्या है?

WebAssembly एक बाइनरी-कोड प्रारूप है जो वर्चुअल मशीन पर चलता है और जिसे विभिन्न भाषाएं संकलित कर सकती हैं। इसे पोर्टेबल होने के लिए डिज़ाइन किया गया है और इसे वेब ब्राउज़र या सर्वर एप्लिकेशन के रूप में चलाया जा सकता है।

पहली बार 2017 में जारी किया गया, WebAssembly 3 से W2019C की सिफारिश है और कई योगदानकर्ताओं द्वारा बनाए रखा जाता है, जिसमें Mozilla, Google, Microsoft, Red Hat, और कई अन्य शामिल हैं।

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

WebAssembly कैसे काम करता है?

WebAssembly को जावा या जावास्क्रिप्ट जैसे रनटाइम इंजन के रूप में डिज़ाइन किया गया है, जिसे .wasm बाइनरी या .wat टेक्स्ट प्रारूपों में संकलित कंप्यूटर कोड चलाने के लिए ब्राउज़र या सर्वर वातावरण में एम्बेड किया जा सकता है।

WebAssembly निष्पादन के लिए कोड लिखने के लिए, डेवलपर कई समर्थित भाषाओं में से किसी एक में प्रोग्राम लिखता है। फिर इसे WebAssembly कंपाइलर या तो AOT (समय से पहले) या JIT (बस समय में) का उपयोग करके संकलित करें।

यह कोड निष्पादन परिवेश में अधिकांश कार्य कर सकता है, लेकिन यह ब्राउज़र के DOM ऑब्जेक्ट तक पहुंच या संशोधन नहीं कर सकता है। ऐसी कोई भी बातचीत जावास्क्रिप्ट से होकर गुजरनी चाहिए।

एक नमूना WebAssembly एप्लिकेशन कैसे बनाएं

वेब ब्राउज़र के लिए एक साधारण Wasm एप्लिकेशन बनाना कुछ ही चरणों के साथ संभव है जैसा कि आप नीचे देख सकते हैं:

  1. डाउनलोड करो और इंस्टॉल करो एम्सस्क्रिप्टन एसडीके.
  2. अपना नमूना लिखें हैलोवर्ल्ड.सी कोड या यदि आप चाहें तो इसे C++/रस्ट में करें।
  3. रन emcc helloworld.c -s WASM=1 -s helloworld.html एक टर्मिनल में Emscripten के साथ WebAssembly को कोड संकलित करने के लिए। यह वासम बाइनरी, एचटीएमएल और जावास्क्रिप्ट फाइलें बनाएगा जिनकी आपको जरूरत है (गोंद कोड)।
  4. अपने वेब ब्राउज़र के माध्यम से helloworld.html पृष्ठ परोसें।

WebAssembly के लाभ

WebAssembly और उससे संबंधित तकनीकों को अपनाने के कई कारण हैं, उनमें शामिल हैं:

  • निकट-मूल प्रदर्शन - WebAssembly में इतना निम्न-स्तरीय डिज़ाइन है कि यह निम्न-स्तरीय भाषाओं जैसे C और C ++ के समान प्रदर्शन प्रदान करता है।
  • सुरक्षा - सिस्टम को सीमित सिस्टम एक्सेस के साथ वर्चुअल वातावरण में अलग करके सुरक्षित होने के लिए डिज़ाइन किया गया है।
  • खुला मानक - कई संगठन और व्यक्ति WebAssembly में योगदान दे रहे हैं और यह एक आधिकारिक W3C अनुशंसा है।
  • लाइटवेट - WebAssembly वर्चुअल मशीन में निष्पादित होने के लिए बाइनरी कोड में संकलित करता है। यह कोड पोर्टेबल है और इसकी जरूरत नहीं है या सिस्टम फाइलों के साथ नहीं आता है।
  • बहु भाषा समर्थन - 50 से अधिक भाषाओं को WebAssembly में संकलित किया जा सकता है।
  • स्वतंत्र मंच - WebAssembly वर्चुअल मशीन को प्रत्येक आर्किटेक्चर के लिए समान रनटाइम वातावरण प्रस्तुत करने के लिए डिज़ाइन किया गया है। एक डेवलपर को केवल WebAssembly के लिए कोड लिखना होता है।

WebAssembly की सीमाएं

  • कार्य प्रगति पर है - मानक अभी भी विकास में है और इसलिए कई विशेषताएं और सुधार अभी बाकी हैं।
  • कचरा संग्रहण नहीं - WebAssembly में अभी भी कचरा संग्रहण की कमी है, हालाँकि इसे जल्द ही लागू किया जा सकता है।
  • कोई डोम एक्सेस नहीं - आप वेब ब्राउज़र के DOM को सीधे WebAssembly से एक्सेस नहीं कर सकते, आपको जावास्क्रिप्ट से गुजरना होगा।

वेबअसेंबली बनाम जावा

जावा WebAssembly का सबसे पहला कार्यान्वयन है। इसे राइट-वन्स, रन-एनीवेयर भाषा के रूप में डिज़ाइन किया गया था, लेकिन रास्ते में बहुत सारे मुद्दे विकसित हुए।

जावा की तरह, WebAssembly अपने कोड को निष्पादित करने के लिए एक RE (रनटाइम एनवायरनमेंट) का उपयोग करता है, लेकिन जावा के विपरीत, आप अपनी पसंद की भाषा में WebAssembly लिख सकते हैं।

वेबअसेंबली बनाम जावास्क्रिप्ट

WebAssembly ब्राउज़र या अन्य होस्ट वातावरण में निष्पादित होता है, जैसे जावास्क्रिप्ट. हालाँकि, जहाँ जावास्क्रिप्ट को टेक्स्ट फॉर्मेट में निष्पादन वातावरण में पहुँचाया जाता है और समय पर संकलित किया जाता है, WebAssembly में टेक्स्ट और बाइनरी दोनों प्रारूप होते हैं।

वेब ब्राउज़र के अंदर, जावास्क्रिप्ट की DOM तक पहुँच है, जबकि WebAssembly की नहीं है। हालाँकि, जब निष्पादन की गति की बात आती है, तो WebAssembly अपने मूल कोड निष्पादन गति के साथ जावास्क्रिप्ट को पीछे छोड़ देता है।

स्पीड वह जगह है जहां WebAssembly चमकता है और यही कारण है कि यह इतने सारे उपयोगों के लिए आदर्श है। आप JavaScript का उपयोग करके WebAssembly को ब्राउज़र में लोड कर सकते हैं और दो कोड एक साथ चल सकते हैं और संसाधन साझा कर सकते हैं।

वेबविधानसभा बनाम डॉकर बनाम कुबेरनेट्स

Docker and Kubernetes are two of the popular technologies that power cloud कंप्यूटिंग. Docker is a container technology that enables developers to package an application with all of its system dependencies into a single package. This makes it easy to deploy the application in any cloud environment in a second or less.

Kubernetes, on the other hand, is an खुले स्रोत system to manage and deploy containerized applications such as Docker, CRI-O, containerd, and any Kubernetes CRI (Container Runtime Interface) implementation. Kubernetes also makes it easy to scale cloud deployments across multiple servers or virtual machines.

इस दृष्टिकोण से, WebAssembly Docker के समान है और इसे Kubernetes का उपयोग करके एक कंटेनरीकृत क्लाउड एप्लिकेशन के रूप में चलाने के लिए बनाया जा सकता है। यह डॉकर पर कई फायदे भी प्रदान करता है, लेकिन शायद इसे प्रतिस्थापित नहीं करेगा।

ब्राउज़र से परे

शुरुआत में, वेब सर्वर थे। आपको एक सर्वर के रूप में एक पूरी मशीन समर्पित करनी थी। फिर, वर्चुअल मशीन या VMs थे, जो एक सर्वर को सिर्फ एक या अधिक CPU थ्रेड्स पर चलने की अनुमति देते थे। फिर भी, आपके पास एक समर्पित VM होना चाहिए।

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

First, docker files can be several Gigabytes large, and this means a small delay in स्टार्टअप and other management issues. A similar Wasm file, however, can be only a few MB large because it is a pre-compiled binary. This gives it a much faster startup time than Docker, perfect for certain time-critical applications.

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

ये सुविधाएँ WebAssembly को क्लाउड माइक्रो-सर्विसेज चलाने के लिए आदर्श बनाती हैं, हालाँकि Docker एप्लिकेशन अभी भी उन अनुप्रयोगों के लिए बेहतर हैं जिन्हें ऑपरेटिंग वातावरण और फाइल सिस्टम पर अधिक नियंत्रण की आवश्यकता होती है।

अधिक जानकारी के लिए, जैसे प्रोजेक्ट वासमक्लाउड और वास्मएज WebAssembly को एक व्यवहार्य कंप्यूटिंग प्लेटफॉर्म के रूप में विकसित कर रहे हैं।

वासम उपयोग के मामले

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

इन-ब्राउज़र प्रकार स्व-व्याख्यात्मक है और ब्राउज़र के बाहर ज्यादातर सर्वर, IoT और क्लाउड परिनियोजन को संदर्भित करता है, जबकि हाइब्रिड दो के मिश्रण को संदर्भित करता है।

निम्नलिखित उपयोग के मामलों पर एक नज़र है जहां वासम उत्कृष्टता प्राप्त कर सकता है:

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

निम्नलिखित विशिष्ट अनुप्रयोगों और परिदृश्यों पर एक नज़र है जहाँ Wasm उत्कृष्ट प्रदर्शन कर सकता है:

  • वीडियो और छवि संपादन
  • खेल का प्रारूप
  • AI अनुप्रयोगों
  • आभासी और संवर्धित वास्तविकता अनुप्रयोग
  • संगीत अनुप्रयोगों
  • पी 2 पी अनुप्रयोगों
  • सर्वर-साइड अनुप्रयोग
  • क्लाउड/क्लस्टर संगणना
  • कंप्यूटर एडेड डिजाइन
  • ओएस प्लेटफॉर्म सिमुलेशन
  • कूटलेखन
  • स्थानीय वेब सर्वर
  • दूरस्थ डेस्कटॉप अनुप्रयोग
  • वैज्ञानिक दृश्य
  • स्मार्टफ़ोन पर हाइब्रिड नेटिव ऐप्स
  • IoT उपकरणों पर

समर्थित भाषाओं और रूपरेखाओं की सूची

50 से अधिक भाषाएँ WebAssembly में संकलित हैं, और यहाँ कुछ सबसे लोकप्रिय भाषाएँ हैं:

  • C
  • सी + +
  • R
  • माणिक
  • तीव्र
  • Go
  • Kotlin
  • जंग
  • PHP
  • Blazor - .NET डेवलपर्स के लिए एक ढांचा।
  • Jwebविधानसभा - जावा बाइटकोड और संबंधित भाषाओं जैसे JRuby, Jython, Groovy, Scala और Kotlin के लिए कंपाइलर।
  • यू - WebAssembly का उपयोग करके मल्टी-थ्रेडेड वेब ऐप बनाने के लिए एक रस्ट फ्रेमवर्क।
  • असेंबली स्क्रिप्ट - विशेष रूप से WebAssembly कोड बनाने के लिए डिज़ाइन की गई भाषा।
  • अनाज - एक जोरदार टाइप की गई कार्यात्मक भाषा।
  • Motoko

आपको और भाषाएं मिल सकती हैं यहाँ उत्पन्न करें.

WebAssembly रनटाइम और टूल्स की सूची

  • सभी प्रमुख ब्राउज़रों में Wasm सपोर्ट है
  • पायोडाइड - पंडों, न्यूमपी, साइपी सहित पायथन वैज्ञानिक स्टैक के साथ ब्राउज़र पर पायथन रनटाइम।
  • वामरी
  • भार - सूक्ष्म सेवाओं और वेब ऐप्स के लिए
  • क्या मै था - मॉड्यूलर सिस्टम इंटरफ़ेस
  • वास्मटाइम - तेज और सुरक्षित WebAssembly रनटाइम।
  • WASMER
  • लुसेटा
  • वासमक्लाउड - बादल पर्यावरण
  • क्रस्टलेट - कुबेरनेट्स कुबलेट रनिंग वासम के लिए, रस्ट में लिखा हुआ।
  • वास्मएज - क्लाउड और एज रनटाइम एनवायरनमेंट

निष्कर्ष

हम WebAssembly में अपनी यात्रा के अंत में आ गए हैं और यह कंप्यूटिंग के लिए क्या रखता है। और जैसा कि आप देख सकते हैं, इसमें बहुत सारे वादे हैं।

हालांकि यह अभी भी प्रगति पर है लेकिन निरंतर विकास में है। और यदि आप रुचि रखते हैं, तो आप अधिक जानकारी प्राप्त कर सकते हैं यहाँ उत्पन्न करें, यहाँ उत्पन्न करें, तथा यहाँ उत्पन्न करें.

ननमदी ओकेके

ननमदी ओकेके

ननमदी ओकेके एक कंप्यूटर उत्साही हैं जो पुस्तकों की एक विस्तृत श्रृंखला को पढ़ना पसंद करते हैं। उसे विंडोज़/मैक पर लिनक्स के लिए प्राथमिकता है और वह उपयोग कर रहा है
अपने शुरुआती दिनों से उबंटू। आप उसे ट्विटर पर पकड़ सकते हैं बोंगोट्रैक्स

लेख: 278

तकनीकी सामान प्राप्त करें

तकनीकी रुझान, स्टार्टअप रुझान, समीक्षाएं, ऑनलाइन आय, वेब टूल और मार्केटिंग एक या दो बार मासिक

एक जवाब लिखें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड इस तरह चिह्नित हैं *