WebAssembly: অর্থ, সুবিধা, ব্যবহারের ক্ষেত্রে এবং আরও অনেক কিছু

WebAssembly hype মধ্যে ধরা, কিন্তু এটা কি ঠিক নিশ্চিত না? এখানে নিম্ন নিচে.

WebAssembly বা Wasm হল একটি বাইনারি-কোড ফরম্যাট যা প্রোগ্রাম তৈরি করার জন্য যা যেকোনো কম্পিউটার আর্কিটেকচারে চালানো যায়।

সিস্টেমটিতে একটি ভার্চুয়াল মেশিন এবং একটি কম্পাইলার রয়েছে যা প্রোগ্রামিং ভাষা থেকে কম্পিউটার কোড অনুবাদ করে, যেমন C বা C++ মানব-পাঠযোগ্য .wat এবং বাইনারি .wasm ফর্ম্যাটে।

WebAssembly-এর মূল লক্ষ্য ছিল একটি ব্রাউজারের অভ্যন্তরে কাছাকাছি-নেটিভ এক্সিকিউশন স্পীড সক্ষম করে ওয়েব পৃষ্ঠাগুলির জন্য উচ্চ-পারফরম্যান্স অ্যাপ্লিকেশন বিকাশ করতে প্রোগ্রামারদের সক্ষম করা। কিন্তু প্রযুক্তিটি এখন ব্রাউজার ছাড়িয়ে ক্লাউডে বিকশিত হচ্ছে বলে মনে হচ্ছে।

এই নির্দেশিকা আপনাকে এই বিকাশমান প্রযুক্তি, এর শক্তি এবং দুর্বলতাগুলির পাশাপাশি এর ভবিষ্যত সম্ভাবনা সম্পর্কে আপনার যা জানা দরকার তা দেখায়।

WebAssembly কি?

WebAssembly একটি বাইনারি-কোড বিন্যাস যা একটি ভার্চুয়াল মেশিনে চলে এবং বিভিন্ন ভাষা এতে কম্পাইল করতে পারে। এটি পোর্টেবল হতে ডিজাইন করা হয়েছে এবং এটি একটি ওয়েব ব্রাউজারে বা একটি সার্ভার অ্যাপ্লিকেশন হিসাবে চলতে পারে।

2017 সালে প্রথম প্রকাশিত, WebAssembly 3 সাল থেকে একটি W2019C সুপারিশ এবং Mozilla, Google, Microsoft, Red Hat এবং আরও অনেক সহ অসংখ্য অবদানকারী দ্বারা রক্ষণাবেক্ষণ করা হয়।

মূল লক্ষ্য ছিল কাছাকাছি-নেটিভ এক্সিকিউশন গতি বিকাশ করা যেমন আপনি ব্রাউজারের ভিতরে C/C++ অ্যাপ্লিকেশনগুলির সাথে পাবেন। এটি একটি নিরাপদ, ওপেন-স্ট্যান্ডার্ড, ডিবাগযোগ্য এবং সংস্করণ-হীন ওয়েব স্ট্যান্ডার্ড যা পশ্চাদগামী সামঞ্জস্যপূর্ণ এবং জাভাস্ক্রিপ্ট অনুগত।

কিভাবে WebAssembly কাজ করে?

WebAssembly একটি রানটাইম ইঞ্জিন হিসাবে ডিজাইন করা হয়েছে, যেমন জাভা বা জাভাস্ক্রিপ্ট, যা .wasm বাইনারি বা .wat টেক্সট ফর্ম্যাটে সংকলিত কম্পিউটার কোড চালানোর জন্য একটি ব্রাউজার বা সার্ভার পরিবেশে এমবেড করা যেতে পারে।

WebAssembly সম্পাদনের জন্য কোড লিখতে, বিকাশকারী অসংখ্য সমর্থিত ভাষার যেকোনো একটিতে প্রোগ্রামটি লেখেন। তারপরে এটি একটি WebAssembly কম্পাইলার ব্যবহার করে কম্পাইল করুন AOT (সময়ের আগে) বা JIT (শুধু সময়ে)।

এই কোডটি এক্সিকিউশন এনভায়রনমেন্টে বেশিরভাগ কাজ করতে পারে, কিন্তু এটি ব্রাউজারের DOM অবজেক্ট অ্যাক্সেস বা পরিবর্তন করতে পারে না। এই ধরনের কোনো মিথস্ক্রিয়া অবশ্যই জাভাস্ক্রিপ্টের মাধ্যমে যেতে হবে।

কীভাবে একটি নমুনা ওয়েব অ্যাসেম্বলি অ্যাপ্লিকেশন তৈরি করবেন

ওয়েব ব্রাউজারের জন্য একটি সাধারণ Wasm অ্যাপ্লিকেশন তৈরি করা মাত্র কয়েকটি ধাপে আপনি নীচে দেখতে পাচ্ছেন:

  1. ডাউনলোড এবং ইন্সটল Emscripten SDK.
  2. আপনার নমুনা লিখুন helloworld.c কোড করুন বা C++/Rust এ করুন যদি আপনি চান।
  3. চালান emcc helloworld.c -s WASM=1 -s helloworld.html Emscripten দিয়ে WebAssembly-এ কোড কম্পাইল করার জন্য একটি টার্মিনালে। এটি ওয়াসম বাইনারি, এইচটিএমএল এবং জাভাস্ক্রিপ্ট ফাইল তৈরি করবে যা আপনার প্রয়োজন (আঠা কোড)।
  4. আপনার ওয়েব ব্রাউজারের মাধ্যমে helloworld.html পৃষ্ঠাটি পরিবেশন করুন।

ওয়েব অ্যাসেম্বলির সুবিধা

WebAssembly এবং এর সম্পর্কিত প্রযুক্তিগুলি গ্রহণ করার অনেক কারণ রয়েছে, সেগুলির মধ্যে রয়েছে:

  • কাছাকাছি-নেটিভ কর্মক্ষমতা – WebAssembly এর এমন নিম্ন-স্তরের স্তরের নকশা রয়েছে যে এটি নিম্ন-স্তরের ভাষা যেমন C এবং C++ এর মতো পারফরম্যান্স সরবরাহ করে।
  • নিরাপত্তা - সিস্টেমটিকে সীমিত সিস্টেম অ্যাক্সেস সহ একটি ভার্চুয়াল পরিবেশে আলাদা করে সুরক্ষিত করার জন্য ডিজাইন করা হয়েছে।
  • স্ট্যান্ডার্ড খুলুন - অনেক সংস্থা এবং ব্যক্তি WebAssembly-এ অবদান রাখছে এবং এটি একটি অফিসিয়াল W3C সুপারিশ।
  • লাইটওয়েট - WebAssembly একটি ভার্চুয়াল মেশিনে চালানোর জন্য বাইনারি কোডে কম্পাইল করে। এই কোডটি পোর্টেবল এবং সিস্টেম ফাইলের প্রয়োজন বা সাথে আসে না।
  • বহু ভাষা সমর্থন - 50 টিরও বেশি ভাষা WebAssembly এ কম্পাইল করতে পারে।
  • স্বাধীন প্ল্যাটফর্ম - WebAssembly ভার্চুয়াল মেশিন প্রতিটি আর্কিটেকচারের জন্য একই রানটাইম পরিবেশ উপস্থাপনের জন্য ডিজাইন করা হয়েছে। একজন ডেভেলপারকে যা করতে হবে তা হল WebAssembly এর জন্য কোড লিখতে।

ওয়েব অ্যাসেম্বলির সীমাবদ্ধতা

  • কাজ চলছে - মানটি এখনও বিকাশের মধ্যে রয়েছে এবং তাই অনেক বৈশিষ্ট্য এবং উন্নতি এখনও আসেনি।
  • আবর্জনা সংগ্রহ নেই – WebAssembly এখনও আবর্জনা সংগ্রহের অভাব রয়েছে, যদিও এটি শীঘ্রই বাস্তবায়িত হতে পারে।
  • DOM অ্যাক্সেস নেই – আপনি WebAssembly থেকে সরাসরি একটি ওয়েব ব্রাউজারের DOM অ্যাক্সেস করতে পারবেন না, আপনাকে JavaScript এর মাধ্যমে যেতে হবে।

ওয়েব অ্যাসেম্বলি বনাম জাভা

জাভা হল WebAssembly-এর সর্বপ্রথম বাস্তবায়ন। এটি একবার লেখার, যেকোনও জায়গায় চালানোর ভাষা হিসাবে ডিজাইন করা হয়েছিল, কিন্তু পথে অনেক সমস্যা তৈরি করেছে।

জাভার মতই, WebAssembly তার কোড চালানোর জন্য একটি RE (Runtime Environment) ব্যবহার করে, কিন্তু Java এর বিপরীতে, আপনি আপনার পছন্দের ভাষায় WebAssembly লিখতে পারেন।

ওয়েব অ্যাসেম্বলি বনাম জাভাস্ক্রিপ্ট

WebAssembly ব্রাউজার বা অন্যান্য হোস্ট পরিবেশে সঞ্চালন করে, ঠিক যেমন জাভাস্ক্রিপ্ট. যাইহোক, যেখানে জাভাস্ক্রিপ্ট এক্সিকিউশন এনভায়রনমেন্টে টেক্সট ফরম্যাটে ডেলিভার করা হয় এবং ঠিক সময়ে কম্পাইল করা হয়, সেখানে WebAssembly-এ টেক্সট এবং বাইনারি উভয় ফর্ম্যাটই থাকে।

ওয়েব ব্রাউজারের অভ্যন্তরে, জাভাস্ক্রিপ্টের DOM-এ অ্যাক্সেস রয়েছে, যখন WebAssembly এর নেই। যাইহোক, যখন এক্সিকিউশন স্পিড আসে, WebAssembly জাভাস্ক্রিপ্টকে হারায়, এর কাছাকাছি-নেটিভ কোড এক্সিকিউশন স্পিড সহ।

গতি যেখানে WebAssembly চকচকে হয় এবং কারণ এটি অনেক ব্যবহারের জন্য আদর্শ। আপনি JavaScript ব্যবহার করে একটি ব্রাউজারে WebAssembly লোড করতে পারেন এবং দুটি কোড একসাথে চলতে পারে এবং সম্পদ ভাগ করতে পারে।

ওয়েব অ্যাসেম্বলি বনাম ডকার বনাম কুবারনেটস

ডকার এবং কুবারনেটস হল দুটি জনপ্রিয় প্রযুক্তি যা ক্লাউড কম্পিউটিংকে শক্তিশালী করে। ডকার হল একটি কন্টেইনার প্রযুক্তি যা ডেভেলপারদের একটি অ্যাপ্লিকেশনকে তার সমস্ত সিস্টেম নির্ভরতা সহ একটি একক প্যাকেজে প্যাকেজ করতে সক্ষম করে। এর ফলে যেকোনো ক্লাউড পরিবেশে এক সেকেন্ড বা তার কম সময়ের মধ্যে অ্যাপ্লিকেশনটি স্থাপন করা সহজ হয়।

অন্যদিকে, কুবারনেটস হল একটি ওপেন-সোর্স সিস্টেম যা ডকার, সিআরআই-ও, কন্টেইনারড এবং যেকোনো কুবারনেটস সিআরআই (কন্টেইনার রানটাইম ইন্টারফেস) বাস্তবায়নের মতো কন্টেইনারাইজড অ্যাপ্লিকেশন পরিচালনা এবং স্থাপন করার জন্য ব্যবহৃত হয়। কুবারনেটস একাধিক সার্ভার বা ভার্চুয়াল মেশিন জুড়ে ক্লাউড স্থাপনা স্কেল করা সহজ করে তোলে।

এই দৃষ্টিকোণ থেকে, WebAssembly ডকারের মতোই এবং কুবারনেটস ব্যবহার করে একটি কন্টেইনারাইজড ক্লাউড অ্যাপ্লিকেশন হিসাবে চালানোর জন্য তৈরি করা যেতে পারে। এটি ডকারের উপর অনেক সুবিধা প্রদান করে, তবে সম্ভবত এটি প্রতিস্থাপন করবে না।

ব্রাউজার ছাড়িয়ে

শুরুতে, ওয়েব সার্ভার ছিল। আপনাকে সার্ভার হিসাবে একটি সম্পূর্ণ মেশিন উৎসর্গ করতে হয়েছিল। তারপরে, ভার্চুয়াল মেশিন বা ভিএম ছিল, যা একটি সার্ভারকে শুধুমাত্র এক বা একাধিক CPU থ্রেডে চালানোর অনুমতি দেয়। তবুও, আপনার একটি ডেডিকেটেড ভিএম থাকতে হবে।

ক্লাউড কম্পিউটিং অ্যাপ্লিকেশনগুলিকে কনটেইনারাইজ করার মাধ্যমে শুধুমাত্র প্রয়োজন হলেই সার্ভার চালু করা এবং চালানো সম্ভব করে তোলে। এটি খরচ হ্রাসের দিকে পরিচালিত করেছিল, কারণ আপনি যা ব্যবহার করেন তার জন্য আপনাকে কেবল অর্থ প্রদান করতে হয়েছিল - আর কোনও উত্সর্গীকৃত মেশিন নেই। কিন্তু এখনও কিছু সমস্যা আছে.

প্রথমত, ডকার ফাইলগুলি বেশ কয়েক গিগাবাইট বড় হতে পারে, এবং এর অর্থ হল স্টার্টআপে সামান্য বিলম্ব এবং অন্যান্য ব্যবস্থাপনা সমস্যা। তবে, অনুরূপ Wasm ফাইলটি মাত্র কয়েক মেগাবাইট বড় হতে পারে কারণ এটি একটি প্রাক-সংকলিত বাইনারি। এটি এটিকে ডকারের তুলনায় অনেক দ্রুত স্টার্টআপ সময় দেয়, যা নির্দিষ্ট সময়-সমালোচনামূলক অ্যাপ্লিকেশনের জন্য উপযুক্ত।

দ্বিতীয়ত, WebAssembly এর ডিজাইন মানে ডেভেলপারকে সিস্টেম রিসোর্স পরিচালনা এবং বরাদ্দ করতে হবে না, সে কেবল তার পছন্দের প্রোগ্রামিং ভাষা ব্যবহার করে পয়েন্টে পৌঁছাতে পারে।

এই বৈশিষ্ট্যগুলি WebAssembly কে ক্লাউড মাইক্রো-সার্ভিসগুলি চালানোর জন্য আদর্শ করে তোলে, যদিও ডকার অ্যাপ্লিকেশনগুলি এখনও সেই অ্যাপ্লিকেশনগুলির জন্য পছন্দনীয় যেগুলি অপারেটিং পরিবেশ এবং ফাইল সিস্টেমের উপর আরও নিয়ন্ত্রণের প্রয়োজন৷

আরো তথ্যের জন্য, যেমন প্রকল্প ওয়াসমক্লাউড এবং WasmEdge WebAssembly কে একটি কার্যকর হতে পারে কম্পিউটিং প্ল্যাটফর্ম হিসাবে বিকাশ করছে।

Wasm ব্যবহার ক্ষেত্রে

WebAssembly এর অদ্ভুত প্রকৃতির জন্য অনেকগুলি ব্যবহারের ক্ষেত্রে রয়েছে। তাদের তিনটি প্রধান দলে ভাগ করা যায়; ইন-ব্রাউজার, ব্রাউজারের বাইরে, এবং হাইব্রিড সেটআপ।

ইন-ব্রাউজার প্রকারটি স্ব-ব্যাখ্যামূলক এবং ব্রাউজার-এর বাইরে বেশিরভাগ সার্ভার, আইওটি, এবং ক্লাউড স্থাপনাকে বোঝায়, যখন হাইব্রিড দুটির মিশ্রণকে বোঝায়।

নিম্নে ওয়াসম এক্সেল করতে পারে এমন ব্যবহারের ক্ষেত্রে এক নজর দেওয়া হল:

  • ইতিমধ্যেই বিদ্যমান উচ্চ-কর্মক্ষমতা কোড - পুরানো কিন্তু চমৎকার কোড যা আপনি শুধু WebAssembly-এ পোর্ট করতে পারবেন।
  • নতুন উচ্চ-কর্মক্ষমতা কোড - যেগুলি আপনাকে স্ক্র্যাচ থেকে ডিজাইন এবং প্রয়োগ করতে হবে।
  • ওয়েবে ডেস্কটপ অ্যাপ্লিকেশন পোর্টিং - এটি ওয়েব-ভিত্তিক ডেস্কটপ সমাধানগুলির একটি নতুন জাত খুলতে পারে, যেমন ওয়েব-ভিত্তিক ভিডিও সম্পাদনা.
  • ক্লাউড কম্পিউটিং - নতুন সুযোগের জন্য ডকার এবং কুবারনেটসের পাশাপাশি দৌড়ানো।

নিম্নলিখিত নির্দিষ্ট অ্যাপ্লিকেশন এবং পরিস্থিতিতে যেখানে Wasm এক্সেল করতে পারে তার একটি নজর দেওয়া হল:

  • ভিডিও এবং ইমেজ এডিটিং
  • খেলার নকশা
  • এআই অ্যাপ্লিকেশন
  • ভার্চুয়াল এবং অগমেন্টেড রিয়েলিটি অ্যাপ্লিকেশন
  • সঙ্গীত অ্যাপ্লিকেশন
  • P2P অ্যাপ্লিকেশন
  • সার্ভার-সাইড অ্যাপ্লিকেশন
  • ক্লাউড/ক্লাস্টার গণনা
  • কম্পিউটার এর সাহায্যে নকশা
  • ওএস প্ল্যাটফর্ম সিমুলেশন
  • এনক্রিপশন
  • স্থানীয় ওয়েব সার্ভার
  • দূরবর্তী ডেস্কটপ অ্যাপ্লিকেশন
  • বৈজ্ঞানিক ভিজ্যুয়ালাইজেশন
  • স্মার্টফোনে হাইব্রিড নেটিভ অ্যাপ
  • IoT ডিভাইসে

সমর্থিত ভাষা ও ফ্রেমওয়ার্কের তালিকা

WebAssembly তে 50 টিরও বেশি ভাষা কম্পাইল করা হয়েছে এবং এখানে সবচেয়ে জনপ্রিয় কিছু রয়েছে:

  • C
  • সি ++
  • R
  • চুনি
  • সত্বর
  • Go
  • Kotlin
  • জং
  • পিএইচপি
  • ব্লেজার - .NET বিকাশকারীদের জন্য একটি কাঠামো।
  • JwebAssembly - জাভা বাইটকোড এবং JRuby, Jython, Groovy, Scala এবং Kotlin এর মতো সম্পর্কিত ভাষার জন্য কম্পাইলার।
  • ইউ কাষ্ঠ - WebAssembly ব্যবহার করে মাল্টি-থ্রেডেড ওয়েব অ্যাপ তৈরি করার জন্য একটি মরিচা কাঠামো।
  • সমাবেশ স্ক্রিপ্ট - একটি ভাষা বিশেষভাবে WebAssembly কোড তৈরি করার জন্য ডিজাইন করা হয়েছে।
  • শস্য - একটি দৃঢ়ভাবে টাইপ করা কার্যকরী ভাষা।
  • মোটোকো

আপনি আরো ভাষা খুঁজে পেতে পারেন এখানে.

WebAssembly রানটাইম ও টুলের তালিকা

  • সমস্ত প্রধান ব্রাউজারে Wasm সমর্থন রয়েছে
  • পাইওডাইড – Python বৈজ্ঞানিক স্ট্যাকের সাথে ব্রাউজারে Python রানটাইম, পান্ডাস, NumPy, SciPy সহ।
  • ওয়ামর
  • ওজন - মাইক্রো-পরিষেবা এবং ওয়েব অ্যাপের জন্য
  • Wasi থেকে - মডুলার সিস্টেম ইন্টারফেস
  • ওয়াসমটাইম - দ্রুত এবং নিরাপদ ওয়েব অ্যাসেম্বলি রানটাইম।
  • ওয়াসমার
  • লুসেট
  • wasmCloud - মেঘের পরিবেশ
  • ক্রাস্টলেট – Wasm চালানোর জন্য Kubernetes kublete, মরিচায় লেখা।
  • WasmEdge - ক্লাউড এবং এজ রানটাইম পরিবেশ

উপসংহার

আমরা WebAssembly এবং এটি কম্পিউটিং এর জন্য আমাদের যাত্রার শেষে এসেছি। এবং আপনি দেখতে পাচ্ছেন, এটি প্রচুর প্রতিশ্রুতি রাখে।

যদিও এটি এখনও একটি কাজ চলছে তবে ক্রমাগত উন্নয়নে রয়েছে। এবং আপনি আগ্রহী হলে, আপনি আরও তথ্য পেতে পারেন এখানে, এখানে, এবং এখানে.

নামদি ওকেকে

নামদি ওকেকে

Nnamdi Okeke একজন কম্পিউটার উত্সাহী যিনি বিস্তৃত বই পড়তে ভালবাসেন। তিনি উইন্ডোজ/ম্যাকের চেয়ে লিনাক্সের জন্য পছন্দ করেছেন এবং ব্যবহার করছেন
উবুন্টু তার প্রথম দিন থেকেই। আপনি তাকে টুইটারের মাধ্যমে ধরতে পারেন bongotrax

প্রবন্ধ: 297

প্রযুক্তিগত জিনিসপত্র গ্রহণ

টেক ট্রেন্ড, স্টার্টআপ ট্রেন্ড, রিভিউ, অনলাইন ইনকাম, ওয়েব টুলস এবং মার্কেটিং মাসে একবার বা দুবার