Runtime Environments কি?

Runtime Environments কি?
অনেক definition আছে; আপনি একটু Google করলেই দেখতে পারবেন অনেক রকম definition। এইগুলা থেকে একটু বের হয়ে একটা অন্য ভাবে বলার চেষ্টা করবো; Runtime Environments আসলে কিছুই না; এটা একটা software। অবাক হওয়ার কিছু নাই, একটু explain করি তাহলে ভালো হবে।

আপনি কি কখনো ভিডিও গান শুনেছেন? তখন আপনি কি করেন? আপনার phone, laptop অথবা PC-তে যদি play করতে চান; তাহলে অবশ্যই একটা software এর মাধ্যমে আপনাকে শুনতে এবং দেখতে হবে। ফোনের জন্য MX Player এবং PC-র জন্য VLC Player। আপনার ভিডিও ফাইলটা যখন MX বা VLC Player-এর মাধ্যমে যাবে, তখন আপনি ভিডিও গানটি play করে দেখতে ও শুনতে পারবেন। (অনেক software আছে মার্কেটে, আমি এই দুইটা দিয়ে বললাম)।

এখন মনে করেন, আপনার যে ভিডিও file টা আছে, সেটি কি আপনি অন্য কোনো software দিয়ে ভিডিও দেখতে পারবেন? নিশ্চয়ই না। আপনাকে এমন একটা software দিতে হবে যেটা ইতিমধ্যেই জানে যে এটি একটি ভিডিও ফাইল এবং এটি play করতে পারবে। আগে থেকেই software জানে যে ভিডিও ফাইল আসলে play করবে; না হলে তো করবে না। এইটা software কে বলে দেওয়া হয়েছে।

Runtime Environments: এটা কেমন Software এবং কোনগুলা কে Runtime Environments বলা হয়?

Browser, Node.js, Bun and Deno ect.

এইগুলা হলো Runtime Environments। এদের মাধ্যমে আমরা কি কি run করতে পারবো?

  1. Web Applications: আমরা browser-এ web applications run করতে পারি।

  2. Server-Side Applications : আমরা Node.js এবং Bun দিয়ে server-side applications run করতে পারি।

  3. Command-Line Tools : Node.js এবং Bun এর মাধ্যমে command-line tools এবং scripts তৈরি ও run করা যায়।

আরও অনেক কিছুই করা যায়। আপনার ইচ্ছা থাকলে আপনি একটু Google করে দেখতে পারেন।

বিঃদ্র: web applications এবং websites নিয়ে অনেক conflict আছে। আমি সেদিকে যাচ্ছি না; আমি আপাতত web applications বলছি।

Runtime Environments আমাদের কেন দরকার?

এই web applications গুলো তো কোনো programming language দিয়ে বানানো হয়। কিন্তু যেহেতু আমাদের PC, laptop এবং phone machine code ছাড়া কিছু বুঝে না, তাই এই applications গুলোকে machine code-এ রূপান্তর করতে হয়।

এছাড়াও Cross-Platform Compatibility-এর জন্য runtime environments আমাদের বিভিন্ন প্ল্যাটফর্মে কোড চালানোর সুযোগ দেয়, যেমন Windows, macOS, Linux, এবং mobile devices।

এ কারণেই Runtime Environments আমাদের জন্য প্রয়োজন।

কি কি দিয়ে Runtime Environments তৈরি করেছে?

Runtime Environments সাধারণত C++ দিয়ে তৈরি করা হয়, তবে Bun Rust দিয়ে তৈরি হয়েছে।

  1. JavaScript Engine: — V8: এটি Node.js এবং Google Chrome-এ ব্যবহৃত হয়। — SpiderMonkey: এটি Firefox-এর জন্য ব্যবহৃত হয়। — JavaScript Core: এটি Safari-এর জন্য ব্যবহৃত হয় এবং সাধারণত Nitro নামে ডাকা হয়। — মূলত, Runtime Environments-এর মধ্যে একটি JavaScript Engine থাকবে।

  2. Event Loop: — Asynchronous operations এবং event handling manage করার জন্য এটি ব্যবহৃত হয়।

  3. Callback Queue: — Callback functions কে manage করার জন্য ব্যবহৃত হয়, যেন functions গুলো correct order-এ execute হয় এর জন্য JavaScript Engine এর callstack এর সাথে collaborate করে।

    1. Web APIs: — এটি মূলত browser-এ থাকে এবং বিভিন্ন web functionalities যেমন Fetch API, Web Storage, Canvas API ইত্যাদি প্রদান করে। তবে Bun এবং Node.js এ built-in modules থাকে, যা file system manage করে এবং অন্যান্য functionalities প্রদান করে।

Runtime Environments কিভাবে কাজ করে?

Browser এর মধ্যে যখন কোনো web application রান হয়, তখন HTML, CSS, এবং JavaScript ফাইলগুলি ব্রাউজারে আসে।

  1. HTML Parsing : HTML ফাইল আসার সাথে সাথে DOM (Document Object Model) এবং CSSOM (CSS Object Model) তৈরি হয়; এইগুলা যদিও Runtime Environments-এর পার্ট। তবে এই প্রক্রিয়াটি Web APIs-এর মাধ্যমে machine code-এ রূপান্তরিত হয়।

  2. JavaScript Execution : JavaScript ফাইলগুলি V8 engine এ চলে যায়। V8 engine JS ফাইলগুলোকে নিজের ভিতরে নিয়ে machine code generate করে।

  3. Network Calls : যদি JS ফাইলগুলিতে কোনো network call থাকে, তবে সেগুলো Web APIs-এর কাছে পাঠানো হয়। যখন network call সম্পন্ন হয়, callback function গুলো callback queue-এ চলে আসে।

  4. Event Loop : Event loop call stack-এর অবস্থা যাচাই করতে থাকে এবং যখন call stack খালি হয়, তখন callback queue থেকে functions execute করে। মনে রাখতে হবে, call stack হলো V8 engine-এর একটি অংশ।

  5. Error Handling: Runtime environments error handling-এর জন্য exception handling mechanisms ব্যবহার করে।

বিঃদ্র: V8 engine এবং Web APIs নিয়ে আমি next post করব, যেখানে বিস্তারিত আলোচনা করব যে কিভাবে একটি JavaScript ফাইল machine code-এ রূপান্তরিত হয়। এইটুকু বললাম যে Runtime Environments কিভাবে কাজ করে।

Conclusions

Runtime Environments আমাদের জন্য অত্যন্ত গুরুত্বপূর্ণ একটি software/Tool/Container আপনি যেইটাই বলেন। এগুলো বিভিন্ন programming languages-এর কোডকে machine code-এ রূপান্তর করে, যাতে আমরা বিভিন্ন প্ল্যাটফর্মে কার্যকরভাবে application তৈরি ও চালাতে পারি।

Browser এবং Node.js-এর মতো Runtime Environments-এর মাধ্যমে আমরা web applications, server-side applications, এবং command-line tools তৈরি করতে পারি। এরা আমাদের asynchronous programming, error handling, এবং API ব্যবহারের সুবিধা দেয়।

আশা করি, এই আলোচনা থেকে আপনি Runtime Environments সম্পর্কে একটি পরিষ্কার ধারণা পেয়েছেন এবং এগুলোর কাজ করার প্রক্রিয়া কিভাবে ঘটে সেটি বুঝতে পেরেছেন।

আমারও ভুল হতে পারে; ভুল হলে comments করে জানাবেন, আমি ঠিক করব ইনশাআল্লাহ!

6 Likes

এত সুন্দর করে সহজভাবে বুঝিয়ে দেওয়ার জন্য অসংখ্য ধন্যবাদ ভাই

1 Like

আমি এইখানে post করি নাই, ভাবলাম একটা post করি, আর অনেক post লিখা আছে সেগুলা post করবো ইনশাআল্লাহ্‌

নতুন কিছু শিখলাম, ধন্যবাদ ভাই আপনাকে।

2 Likes

Thanks Bhai
I have learned new things !!

1 Like