নোড জে এস জাভাস্ক্রিপ্ট এর উপর ভিত্তি করে গড়ে ওঠা খুবই শক্তিশালী একটি ফ্রেমওয়ার্ক বা প্লাটফর্ম যা গুগল ক্রোমের জাভাস্ক্রিপ্ট ভি এইট ইঞ্জিনে (V8 Engine) এ তৈরি করা হয়েছে।এই নোড জে এস ব্যবহার হয় বিভিন্ন ধরনের ওয়েব অ্যাপলিকেশন তৈরিতে যেমনঃ অনলাইনে ভিডিও দেখার সাইট তৈরিতে, এক পেইজের অ্যাপলিকেশন তৈরিতে বা অন্যান্য ওয়েব অ্যাপলিকেশন তৈরিতে।এই নোড জে এস একটি মুক্ত উৎস, সম্পূর্ণ ফ্রী এবং এটা সারা বিশ্বের হাজার হাজার ডেভেলপার এর ব্যবহারের একটি উৎস।
চলুন জেনেনিই নোড জেএস বিস্তারিত তথ্য ।
নোড জেএস কি ?
নোড জেএস হল একটি ওপেন সোর্স এবং ক্রস-প্ল্যাটফর্ম জাভাস্ক্রিপ্ট রানটাইম পরিবেশ।” – Nodejs.dev ডক্স এটি একটি শান্ত, সোজা উত্তর মত শোনাচ্ছে. কিন্তু একজন শিক্ষানবিশের জন্য, এই সংজ্ঞা আরও প্রশ্ন উত্থাপন করতে পারে। তাই নোড জেএস সম্পর্কে যে সকল প্রশ্ন গুলো মনে উত্থাপন করছে সে সম্পর্কে বিস্তারিত আর দেওয়া হল
- নোড জেএস হল ওপেন সোর্স: এর মানে হল যে নোড জেএস এর সোর্স কোড সর্বজনীনভাবে উপলব্ধ। এবং এটি সারা বিশ্ব থেকে অবদানকারীদের দ্বারা রক্ষণাবেক্ষণ করা হয়।নোড জেএস অবদান নির্দেশিকা আপনাকে দেখায় কিভাবে অবদান রাখতে হয়।
- নোড জেএস হল ক্রস-প্ল্যাটফর্ম: নোড জেএস কোন অপারেটিং সিস্টেম সফটওয়্যারের উপর নির্ভরশীল নয়। এটি Linux, macOS বা Windows এ কাজ করতে পারে।
- নোড জেএস হল একটি জাভাস্ক্রিপ্ট রানটাইম এনভায়রনমেন্ট: যখন আপনি আপনার টেক্সট এডিটরে জাভাস্ক্রিপ্ট কোড লেখেন, তখন সেই কোডটি কোন কাজ সম্পাদন করতে পারে না যদি না আপনি এটি চালান , এবং আপনার কোড চালানোর জন্য, আপনার একটি রানটাইম পরিবেশ প্রয়োজন।
ক্রোম এবং ফায়ারফক্সের মতো ব্রাউজারগুলিতে রানটাইম পরিবেশ রয়েছে। এজন্য তারা জাভাস্ক্রিপ্ট কোড চালাতে পারে। নোড জেএস তৈরি হওয়ার আগে, JavaScript শুধুমাত্র একটি ব্রাউজারে চালানো যেত। এবং এটি শুধুমাত্র ফ্রন্ট-এন্ড অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়েছিল।নোড জেএস ব্রাউজারের বাইরে রানটাইম পরিবেশ প্রদান করে। এটি Chrome V8 JavaScript ইঞ্জিনেও তৈরি। এটি একই জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষা ব্যবহার করে ব্যাক-এন্ড অ্যাপ্লিকেশন তৈরি করা সম্ভব করে তোলে যার সাথে আপনি পরিচিত হতে পারেন।
নোড জেএস প্রথম কে তৈরি করে ?
নোড জেএস প্রথম সার্ভার-সাইড জাভাস্ক্রিপ্ট পরিবেশ, নেটস্কেপের লাইভওয়্যার প্রো ওয়েব প্রবর্তনের প্রায় তেরো বছর পরে ২০০৯ সালে রায়ান ডাহল দ্বারা প্রাথমিকভাবে লেখা হয়েছিল। প্রাথমিক রিলিজটি শুধুমাত্র লিনাক্স এবং ম্যাক ওএস এক্স সমর্থন করে। এর উন্নয়ন এবং রক্ষণাবেক্ষণের নেতৃত্বে ছিলেন ডাহল এবং পরে জয়েন্ট দ্বারা স্পনসর করা হয়েছিল।
কিভাবে নোড জেএস কাজ করে?
একটি নোড অ্যাপ্লিকেশন একটি একক প্রক্রিয়ায় চলে। নোড প্রতিটি অনুরোধের জন্য একটি নতুন থ্রেড তৈরি করে না , যেমনটি প্রায়শই প্রচলিত সার্ভার-সাইড প্রোগ্রামগুলির ক্ষেত্রে হয়। এইভাবে, একটি নোড সার্ভার থ্রেড কনকারেন্সি সমস্যা বা ওভারহেড মাল্টিথ্রেডিং নিয়ে আসা ছাড়াই হাজার হাজার সমবর্তী সংযোগগুলি পরিচালনা করতে পারে।
নোড জেএস ইভেন্ট-চালিত এবং অ্যাসিঙ্ক্রোনাসভাবে চলে। নোড এনভায়রনমেন্টের জন্য লেখা কোড অন্যান্য সিস্টেমে পাওয়া, প্রসেস, সেন্ড, ওয়েট এবং রিসিভের প্রথাগত মডেল অনুসরণ করে না। পরিবর্তে, নোড একটি ইভেন্ট লুপ প্রয়োগ করে যা ইনকামিং অনুরোধগুলিকে প্রক্রিয়া করে যখন তারা ইভেন্ট সারিতে স্ট্যাক আপ হয়, প্রতিক্রিয়ার জন্য অপেক্ষা না করে একের পর এক ছোট অনুরোধগুলি পরিচালনা করে।এটি মূলধারার মডেলগুলি থেকে একটি স্থানান্তর যা বৃহত্তর, আরও জটিল ক্রিয়াকলাপ চালায় এবং একই সাথে একাধিক থ্রেড প্রক্রিয়া করে, প্রতিটি থ্রেড এগিয়ে যাওয়ার আগে তার উপযুক্ত প্রতিক্রিয়ার জন্য অপেক্ষা করে।
নোড জেএস নির্মাতা রায়ান ডাহলের মতে, নোড জেএস পদ্ধতি এই মডেলগুলির উপর একটি বড় সুবিধা প্রদান করে। নোড আরো ঐতিহ্যগত পদ্ধতির মত ইনপুট/আউটপুট ( I/O ) অপারেশনগুলিকে ব্লক করে না । এটি বড় অংশে কারণ নোড ফাংশনগুলি সরাসরি I/O সম্পাদন করে না, যা ব্লক করার সম্ভাবনা দূর করতে সাহায্য করে। স্ট্যান্ডার্ড নোড লাইব্রেরিতে সিঙ্ক্রোনাস পদ্ধতি ব্যবহার করার সময়ই ব্লক করা হয়, কিন্তু এটি নিয়মের পরিবর্তে ব্যতিক্রম, যা নোডকে ভারী সমসাময়িক কাজের চাপ সহ রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য উপযুক্ত করে তোলে।নোড এনপিএম কমান্ড-লাইন ইন্টারফেস ( সিএলআই ) সহ প্রেরণ করে । CLI হল npm প্যাকেজ ম্যানেজমেন্ট সিস্টেমের অংশ, যা জাভাস্ক্রিপ্ট সফ্টওয়্যার এবং এর মেটা তথ্যের একটি বিস্তৃত রেজিস্ট্রি অন্তর্ভুক্ত করে। CLI ব্যবহারকারীদের তাদের কনসোল থেকে সরাসরি রেজিস্ট্রিতে npm প্যাকেজের সাথে ইন্টারঅ্যাক্ট করতে দেয়। রেজিস্ট্রিটি বিশ্বের বৃহত্তম একক ভাষার কোড সংগ্রহস্থল।
জাভাস্ক্রিপ্টের মতো, নোডকে শেখা তুলনামূলকভাবে সহজ বলে মনে করা হয়। এটি ব্যাপকভাবে প্রয়োগ করা হয়েছে এবং এর পিছনে একটি বড়, সক্রিয় ব্যবহারকারী সম্প্রদায় রয়েছে। উপরন্তু, যেহেতু নোড অ্যাসিঙ্ক্রোনাস, ইভেন্ট-চালিত এবং নন-ব্লকিং, এটি আজকের অনেক ওয়েব অ্যাপ্লিকেশন এবং অনলাইন পরিষেবাগুলিতে প্রচলিত রিয়েল-টাইম কনকারেন্সির ধরন পরিচালনা করতে পারে। নোড রিয়েল-টাইম অ্যাপ্লিকেশন যেমন চ্যাট, স্ট্রিমিং পরিষেবা , ইন্টারনেট অফ থিংস ( IoT ) অফার বা একক-পৃষ্ঠা অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত ।যদিও নোড প্রতিটি ধরনের কাজের চাপের জন্য উপযুক্ত নয়। উদাহরণস্বরূপ, এর একক-থ্রেড প্রকৃতির কারণে, নোড কার্যকরভাবে একটি প্রসেসর-নিবিড় ওয়েব অ্যাপ্লিকেশন চালাতে সক্ষম নাও হতে পারে যার জন্য ভারী সার্ভার-সাইড কম্পিউটেশন প্রয়োজন। কম্পিউটেশনাল লোড আগত অনুরোধগুলিকে অবরুদ্ধ করে এবং সামগ্রিক কর্মক্ষমতা হ্রাস করতে পারে।
অন্যদিকে, যদি নোড অন্য সব ক্ষেত্রে আপনার চাহিদা পূরণ করতে দেখা যায় এবং গণনামূলক লোড খুব বেশি না হয়, তাহলে আপনি সেই লোডটিকে অন্য ভাষায় ব্যাকগ্রাউন্ড প্রসেস হিসাবে প্রয়োগ করতে সক্ষম হতে পারেন। নোড একটি মাইক্রোসার্ভিসেস আর্কিটেকচারের অংশ হিসাবেও ব্যবহার করা যেতে পারে যা অ্যাপ্লিকেশনটিকে ছোট অংশে বিভক্ত করে।