ওয়েব ডেভেলপার জেরেমি কিথ যেমন 2009 সালে বলেছিলেন, "জাভা হল জাভাস্ক্রিপ্ট যেমন হ্যাম টু হ্যামস্টার।" এই সাদৃশ্যটির সঠিক নির্ভুলতা বিতর্কযোগ্য, কিন্তু এর পিছনের স্পিরিট শক্ত:জাভা এবং জাভাস্ক্রিপ্ট, একটি সাধারণ ভাষাগত মূল ভাগ করা সত্ত্বেও, দুটি সম্পূর্ণ ভিন্ন প্রোগ্রামিং ভাষা। বছরের পর বছর ধরে, তারা আরও কিছুটা ওভারল্যাপ করতে এসেছে, তবে জাভাস্ক্রিপ্ট প্রভাবশালী ফ্রন্ট-এন্ড ভাষা যা ওয়েবসাইটগুলিকে ইন্টারেক্টিভ করে তোলে, যখন জাভা সার্ভার-সাইড এবং অ্যাপ্লিকেশন প্রোগ্রামিংয়ের জন্য জনপ্রিয় হয়ে চলেছে। আপনি যদি একজন ডেভেলপার নিয়োগ করার চেষ্টা করছেন, কীভাবে কোড করবেন বা সাইট/অ্যাপ্লিকেশন তৈরি করবেন তা শিখুন, জাভা এবং জাভাস্ক্রিপ্টের মধ্যে পার্থক্য জানা গুরুত্বপূর্ণ।
বিভিন্ন ইতিহাস
TLDR:জাভা প্রথম এসেছে। জাভাস্ক্রিপ্ট, যা জাভা-এর মতই ছিল কিন্তু প্রযুক্তিগতভাবে জাভার সাথে যুক্ত ছিল না, তারপর একটি ভিন্ন প্রয়োজন পূরণ করতে পপ আপ করে।
জাভা চার বছরের মধ্যে জেমস গসলিং এবং সান মাইক্রোসিস্টেমের গবেষকদের একটি দল 1991 সালে শুরু করে এবং 1995 সালে প্রকাশিত হয়েছিল। তারা একটি অবজেক্ট-ভিত্তিক ভাষা তৈরি করেছে যা একাধিক অপারেটিং সিস্টেমে চলতে পারে। এটি তখন থেকে ফোন থেকে শুরু করে NASA রোভার পর্যন্ত বিস্তৃত ডিভাইসে ব্যবহার করা হয়েছে এবং এটি জাভা অ্যাপলেটের মাধ্যমে 2016 পর্যন্ত একটি মাল্টিমিডিয়া ওয়েব প্রযুক্তি (যেমন ফ্ল্যাশ ছিল এবং জাভাস্ক্রিপ্ট এখনও আছে) ছিল, যখন জাভা আনুষ্ঠানিকভাবে সমর্থন টেনেছিল।
জাভাস্ক্রিপ্টও 1995 সালে প্রকাশিত হয়েছিল কিন্তু ব্রাউজার লোড করার পরে ওয়েব পেজগুলিকে ইন্টারেক্টিভ করার উপায় হিসাবে নেটস্কেপে ব্রেন্ডন ইচ 10 দিনের মধ্যে তৈরি করেছিলেন। এটিকে প্রাথমিকভাবে মে 1995 সালে মোচা বলা হয়েছিল কিন্তু সেপ্টেম্বরে লাইভস্ক্রিপ্ট হিসাবে নেটস্কেপ নেভিগেটর দিয়ে পাঠানো হয়েছিল এবং 1995 সালের ডিসেম্বরের মধ্যে জাভাস্ক্রিপ্টে পরিবর্তিত হয়েছিল। প্রদত্ত যে ভাষাটি জাভা এর মতো একটি হালকা স্ক্রিপ্টিং প্রতিরূপ হিসাবে তৈরি করা হয়েছিল, এই নামটি আসলে তৈরি করে। অর্থ - এবং এটি একটি চমত্কার ভাল মার্কেটিং খেলা ছিল. তারপর থেকে, এটি HTML এবং CSS এর পাশাপাশি আধুনিক ইন্টারনেটের তিনটি প্রধান উপাদানের একটিতে পরিণত হয়েছে৷
প্রযুক্তিগত পার্থক্য
জাভা এবং জাভাস্ক্রিপ্ট উভয়ই অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ, যার মানে প্রোগ্রামাররা তথ্যের খণ্ড তৈরি করে এবং তথ্যের অন্যান্য অংশের সাথে সংযুক্ত করে জিনিসগুলিকে কাজ করতে পারে। একটি "বিড়াল" অবজেক্ট, উদাহরণস্বরূপ, একটি বিড়ালের নাম, রঙ এবং বয়স সম্পর্কে তথ্য, সেইসাথে বিড়াল যা করতে পারে তার একটি তালিকা অন্তর্ভুক্ত করতে পারে, যেমন মায়াউ, খাওয়া এবং ঘুম। সেই বস্তুর তথ্য তখন প্রোগ্রামারের কাছে উপলব্ধ হয়, যিনি বিড়াল সম্পর্কে তথ্য প্রিন্ট আউট করতে পারেন বা এটিকে কিছু করতে বাধ্য করতে পারেন৷
এটাই সবচেয়ে বড় মিল। যদিও সেখান থেকেই পার্থক্যগুলো জমে ওঠে।
1. জাভা সংকলিত, জাভাস্ক্রিপ্ট ব্যাখ্যা করা হয়
জাভা একটি "একবার লিখুন, যে কোনো জায়গায় চালান" সিস্টেম আছে. এটা এই মত কাজ করে:
- কোডটি জাভাতে লিখুন।
- কম্পিউটার-পঠনযোগ্য বাইটকোডে কোড কম্পাইল করুন।
- জাভা ভার্চুয়াল মেশিনে কোডটি চালান, এটি একটি ভার্চুয়াল কম্পিউটার যা ডিভাইসগুলিতে জাভা বাইটকোড চালায়।
এর মানে হল যে আপনি যখনই প্রোগ্রামটি পরিবর্তন করতে চান, আপনাকে জাভা কোডে পরিবর্তন করতে হবে এবং পুরো প্রোগ্রামটিকে আবার বাইটকোডে অনুবাদ করতে হবে।
জাভাস্ক্রিপ্ট, যাইহোক, ওয়েব ব্রাউজারগুলি যেমন লেখা আছে ঠিক তেমনই পড়তে পারে। ব্রাউজার শুধু প্রতিটি লাইন চেক করে এবং চালায়। এটি এটিকে আরও নমনীয় এবং পরিবর্তন করা সহজ করে তোলে, যদিও এটি পারফরম্যান্সে সংকলিত কোড থেকে পিছিয়ে আছে, কারণ এটি সরাসরি মেশিন-পঠনযোগ্য ভাষায় চলছে না।
2. স্ট্যাটিক টাইপিং (জাভা) বনাম ডাইনামিক টাইপিং (জাভাস্ক্রিপ্ট)
প্রোগ্রামিং ভাষার একটি বড় অংশ হল ভেরিয়েবলে মান সংরক্ষণ করা। জাভা স্ট্যাটিকালি-টাইপ করা হয়, যার অর্থ আপনাকে বলতে হবে প্রতিটি ভেরিয়েবলের কী ধরনের মান রয়েছে এবং তারপরে এটি ঠিক করা হয়েছে। যেমন:
int a_number = 42; char a_letter = ‘z’;
"int" একটি সংখ্যা এবং "char" একটি অক্ষর হতে হবে।
জাভাস্ক্রিপ্ট, যাইহোক, গতিশীল-টাইপ করা হয়, তাই যে কোনও ভেরিয়েবল যে কোনও ডেটা টাইপ ধরে রাখতে পারে এবং তারা কোনও সমস্যা ছাড়াই পরিবর্তন করতে পারে। নিচের কোডটি ঠিকঠাক চলে:
let number = 42; let a_letter = “z”;
জাভা এখানে একটি গতি এবং ডিবাগিং সুবিধা রয়েছে:পরিবর্তনশীল প্রকারগুলি ঘোষণা করলে সমস্যাগুলি দ্রুত খুঁজে পাওয়া যায় এবং কোডটিকে আরও দ্রুত চলতে দেয়। যাইহোক, বেশিরভাগ ডেভেলপারদের সাথে কাজ করার জন্য জাভাস্ক্রিপ্ট দ্রুত।
3. সঙ্গতি
জাভা একই সময়ে বিভিন্ন থ্রেড চালাতে পারে, যার অর্থ এটি একসাথে বেশ কিছু কাজ করতে পারে।
JavaScript পরিবর্তে একটি ইভেন্ট লুপ ব্যবহার করে, মূলত এটি শেষ না হওয়া পর্যন্ত কাজ করার জন্য একটি স্ট্যাকের মাধ্যমে কাজ করে। আবার, জাভা এখানে একটি কর্মক্ষমতা সুবিধা আছে।
4. জাভাতে ক্লাস আছে, জাভাস্ক্রিপ্টের প্রোটোটাইপ আছে
মনে রাখবেন, জাভা এবং জাভাস্ক্রিপ্ট তথ্য সঞ্চয় করতে অবজেক্ট ব্যবহার করে। তারা উভয়ই "উত্তরাধিকার" ব্যবহার করে যা বস্তুগুলিকে অন্য কোথাও থেকে তাদের বৈশিষ্ট্যগুলি পেতে দেয়। জাভাতে, তারা ক্লাস থেকে বৈশিষ্ট্যগুলি পায়, যা মূলত কীভাবে অবজেক্ট তৈরি করতে হয় তার নির্দেশাবলী সহ ব্লুপ্রিন্ট। জাভাস্ক্রিপ্টে, প্রোটোটাইপ বা বস্তু ব্যবহার করে নতুন বস্তু তৈরি করা হয় যা একটি নতুন বস্তু তৈরি করতে কপি করা যায়।
মূলত, এর মানে হল যে জাভাস্ক্রিপ্টের যেকোনো বস্তু একটি প্রোটোটাইপ হয়ে উঠতে পারে, যখন জাভা আপনাকে এমন একটি ক্লাস তৈরি করতে হবে যা বস্তুগুলি তৈরি করতে পারে। একটি আগের উদাহরণ উল্লেখ করার জন্য, জাভা কীভাবে একটি বিড়াল তৈরি করতে হয় তার নির্দেশনা প্রদান করে, যখন জাভাস্ক্রিপ্ট কেবল এটিকে ক্লোন করে।
আমার কোনটা দরকার?
প্রযুক্তিগত বিবরণ যদি আপনার চোখকে উজ্জ্বল করে তোলে, আপনি এখন আবার মনোযোগ দেওয়া শুরু করতে পারেন! আপনি যদি জাভা এবং জাভাস্ক্রিপ্টের মধ্যে সিদ্ধান্ত নেওয়ার চেষ্টা করেন তবে এটি সত্যিই খুব কঠিন নয়।
আপনি সাধারণত এর জন্য জাভাস্ক্রিপ্ট চাইবেন:
- ওয়েবসাইট, ওয়েব অ্যাপস এবং অন্যান্য ফ্রন্ট-এন্ড ইন্টারফেস
- সাধারণ ওয়েব সার্ভার/ব্যাক-এন্ড কাজ (Node.js সহ)
- ব্রাউজার-ভিত্তিক গেম এবং অ্যানিমেশন তৈরি করা
- ইলেক্ট্রন বা অন্য ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্কের উপর নির্মিত অ্যাপস/গেমস/প্রোগ্রামগুলি
যাইহোক, আপনি সম্ভবত এর জন্য Java ব্যবহার করতে চাইবেন:
- Android অ্যাপস
- ডেস্কটপ অ্যাপ্লিকেশন
- সার্ভার-সাইড অ্যাপ্লিকেশন
- ফোন, IoT ডিভাইস এবং অন্যান্য হার্ডওয়্যারের জন্য কোড লেখা
আপনি যদি শেখার জন্য একটি ভাষা বেছে নিতে চান তবে এটি আপনার লক্ষ্যের উপর নির্ভর করে। আপনি যদি একটি প্রোগ্রামিং ক্যারিয়ার গড়তে চান এবং প্রোগ্রামিং মৌলিক বিষয়গুলির একটি শক্ত উপলব্ধি পেতে চান, বা আপনি যদি নন-ওয়েব অ্যাপ্লিকেশনগুলিতে কাজ করতে চান তবে জাভাকে আরও প্রযুক্তিগতভাবে কঠোর ভাষা হিসাবে বিবেচনা করা হয়। এটি বিশ্বে সবচেয়ে বেশি ব্যবহৃত হয়৷
৷যাইহোক, আপনি যদি ওয়েব ডেভেলপমেন্টে যেতে চান বা বেশিরভাগ ওয়েবসাইট এবং ওয়েব অ্যাপে কাজ করার পরিকল্পনা করছেন, জাভাস্ক্রিপ্ট সম্ভবত একটি "অবশ্যই" দক্ষতা। দীর্ঘমেয়াদে, উভয়ই শিখতে ক্ষতি করতে পারে না, কারণ তারা উভয়ই ধারণাগুলিকে অন্তর্ভুক্ত করে যা আপনাকে আরও ভাল (এবং আরও বিপণনযোগ্য!) প্রোগ্রামার করে তুলতে পারে৷
আপনি যদি গেম ডেভেলপমেন্ট করতে চান, এই প্রোগ্রামিং ভাষাগুলি আপনার জন্য আরও উপযুক্ত হবে৷
৷