কম্পিউটার টিউটোরিয়াল

জাভা এবং জাভাস্ক্রিপ্টের মধ্যে পার্থক্য কী?

২০০৯ সালে ওয়েব ডেভেলপার জেরেমি কিথ বলেছিলেন, "জাভা জাভাস্ক্রিপ্টের সাথে তেমনই সম্পর্কিত যেন হ্যাম হ্যামস্টারের সাথে।" এই উপমার সঠিকতা বিতর্কের বিষয় হতে পারে, কিন্তু এর পেছনের অভিপ্রায় স্পষ্ট: সাধারণ ভাষাগত মূল সाझা করার পরেও, জাভা এবং জাভাস্ক্রিপ্ট দুটি সম্পূর্ণ ভিন্ন প্রোগ্রামিং ভাষা। বছরের পর বছর ধরে তাদের মধ্যে কিছুটা ওভারল্যাপ হয়েছে, কিন্তু জাভাস্ক্রিপ্ট এখনও ওয়েবসাইটকে ইন্টারেক্টিভ बनाने वाली प्रमुख ফ্রন্ট-এন্ড ভাষা, যখন জাভা সার্ভার-সাইড এবং অ্যাপ্লিকেশন প্রোগ্রামিং-এ জনপ্রিয়। আপনি যদি ডেভেলপার নিয়োগ করতে চান, কোডিং শিখতে চান, বা সাইট/অ্যাপ্লিকেশন তৈরি করতে চান, তবে জাভা এবং জাভাস্ক্রিপ্টের পার্থক্য জানা অত্যন্ত গুরুত্বপূর্ণ।

ভিন্ন ইতিহাস

সংক্ষেপে: জাভা আগে এল। জাভাস্ক্রিপ্ট, যা জাভার সাথে মিলتی-जুলਤੀ কিন্তু টেকনিক্যালি उससे সংবদ্ধ নয়, তারপর একটি ভিন্ন চাহিদা পূরণের জন্য আয়ত্ত হয়।

জাভা সান মাইক্রোসিস্টেমের গবেষকদের একটি দলের সাথে জেমস গосле ιδѐ ১৯৯১ সালে শুরু করে চার বছর ধরে তৈরি করেছেন এবং ১৯৯৫ সালে প্রকাশ করেছেন। তারা একটি অবজেক্ট-ওরিয়েন্টেড ভাষা তৈরি করেছেন যা একাধিক অপারেটিং সিস্টেমে চলতে পারে। এটিfone থেকে নাসার রোভার পর্যন্ত وسیع শ্রেণির ডিভাইসে ব্যবহৃত হয়েছে, এবং ২০১৬ সালে জাভা অফিশিয়ালি সাপোর্ট টানদেওয়া পর্যন্ত জাভা অ্যাপলেটের মাধ্যমে ফ্ল্যাশ এবং জাভাস্ক্রিপ্টের মত একটি মাল্টিমিডিয়া ওয়েব টেকনোলজি হিসাবেও কাজ করেছিল।

জাভাস্ক্রিপ্টও ১৯৯৫ সালে প্রকাশিত হয়েছিল কিন্তু ব্রেডান ইচ নেটস্কেপে মাত্র ১০ দিনে তৈরি করেছিলেন ব্রাউজার লোড হওয়ার পর ওয়েব পেজকে ইন্টারেক্টিভ করার উপায় হিসেবে। ১৯৯৫ সালের মেয়ে এটি প্রাথমিকভাবে মোচা নামে ডাকা হতো কিন্তু সেপ্টেম্বরে নেটস্কেপ নেভিগেটরের সাথে লাইভস্ক্রিপ্ট নামে শিপ করা হয়েছিল এবং ডিসেম্বরে ১৯৯৫ সালের মধ্যে এর নাম জাভাস্ক্রিপ্ট করা হয়। যেহেতু এই ভাষাটি জাভার সাথে মিলتی-जুলতি একটি লাইটওয়েট স্ক্রিপ্টিং কাউন্টারপার্ট হিসেবে তৈরি করা হয়েছিল, তাই নামটিই বাস্তবে অর্থপূর্ণ — এবং এটি একটি চমৎকার মার্কেটিং কৌশলও ছিল। স власти থেকে এটি এইচটিএমএল এবং সিএসএস-এর পাশাপাশি আধুনিক ইন্টারনেটের তিনটি প্রধান উপাদানের একটি হয়ে উঠেছে।

টেকনিক্যাল পার্থক্য

জাভা এবং জাভাস্ক্রিপ্ট উভয়ই অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা, অর্থাৎ প্রোগ্রামাররা তথ্যের টুকরো তৈরি করে এবং সেগুলোকে অন্য টুকরোর সাথে সংযুক্ত করে প্রোগ্রাম চালাতে পারেন। উদাহরণস্বরূপ, একটি "বিড়াল" অবজেক্টে বিড়ালের নাম, রঙ, বয়সের তথ্য থাকতে পারে, সেইসাথে বিড়াল যা করতে পারে তার তালিকা — যেন মিউং মিউং করা, খাওয়া, ঘুমানো। সেই অবজেক্টের তথ্য প্রোগ্রামারকে উপলব্ধ থাকে, যারা বিড়ালের তথ্য প্রিন্ট করতে বা তাকে কিছু করাতে পারে।

এটিই সবচেয়ে বড় সাদৃশ্য। কিন্তু সেখান থেকে পার্থক্যগুলো জমা হতে শুরু হয়।

১. জাভা কম্পাইল্ড, জাভাস্ক্রিপ্ট ইন্টারপ্রেটেড

জাভার একটি "রাইট ワনস, রান 애니ওয়ার" সিস্টেম আছে। এটি এভাবে কাজ করে:

  1. জাভাতে কোড লিখুন।
  2. কোডকে কম্পিউটার-পাঠযোগ্য বাইটকোডে কম্পাইল করুন।
  3. জাভা ভার্চুয়াল মেশিনে কোড চালান, যা একটি ভার্চুয়াল কম্পিউটার যা ডিভাইসে জাভা বাইটকোড রান করে।

এর মানে হলো আপনি যখনই প্রোগ্রাম পরিবর্তন করতে চাবেন, জাভা কোডে পরিবর্তন আনতে হবে এবং পুরো প্রোগ্রামকে আবার বাইটকোডে ট্রান্সলেট করতে হবে।

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

২. স্ট্যাটিক টাইপিং (জাভা) বনাম ডাইনামিক টাইপিং (জাভাস্ক্রিপ্ট)

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

int a_number = 42; char a_letter = 'z';

"int" হতে হবে সংখ্যা এবং "char" হতে হবে অক্ষর।

জাভাস্ক্রিপ্ট তবে ডাইনামিক্যালি-টাইপড, তাই যেকোনো ভেরিয়েবল যেকোনো ডেটা টাইপ ধারণ করতে পারে, এবং সেগুলো বিনা কোনো সমস্যায় পরিবর্তন হতে পারে। নিচের কোড বিনা সমস্যায় চলে:

let number = 42; let a_letter = "z";

এখানে জাভার গতি এবং ডিবাগিং সুবিধা আছে: ভেরিয়েবল টাইপ ঘোষণা করলে সমস্যা দ্রুত খুঁজে বের করা যায় এবং কোডও দ্রুত চলে। কিন্তু অধিকাংশ ডেভেলপারের জন্য জাভাস্ক্রিপ্ট দ্রুত কাজ করার সুবিধা দেয়।

৩. কনকারেন্সি

জাভা একসাথে একাধিক থ্রেড চালাতে পারে, অর্থাৎ এটি একবারে একাধিক কাজ করতে পারে।

জাভাস্ক্রিপ্ট পরিবর্তে ইভেন্ট লুপ ব্যবহার করে, মূলত কাজের একটি স্ট্যাকের মাধ্যমে কাজ করে যতক্ষণ না শেষ হয়। এখানেও জাভার পারফরম্যান্স সুবিধা রয়েছে।

৪. জাভাতে ক্লাস, জাভাস্ক্রিপ্টে প্রোটোটাইপ

মনে রাখবেন, জাভা এবং জাভাস্ক্রিপ্ট তথ্য সংরক্ষণের জন্য অবজেক্ট ব্যবহার করে। তারা "ইনহেরিটেন্স"ও ব্যবহার করে, যা অবজেক্টগুলোর প্রোপার্টি অন্য কোথাও থেকে পাওয়ার অনুমতি দেয়। জাভাতে, সেগুলো ক্লাস থেকে প্রোপার্টি পায়, যেন ব্লুপ্রিন্ট যেখানে অবজেক্ট তৈরির নির্দেশনা থাকে। জাভাস্ক্রিপ্টে, নতুন অবজেক্ট প্রোটোটাইপ বা অন্য অবজেক্ট কপি করে তৈরি হয়।

মূলত এর মানে হলো জাভাস্ক্রিপ্টে যেকোনো অবজেক্ট প্রোটোটাইপ হতে পারে, যখন জাভাতে আপনাকে অবজেক্ট তৈরি করার জন্য একটি ক্লাস তৈরি করতে হয়। আগের উদাহরনকে দিয়ে বললে, জাভা বিড়াল তৈরির নির্দেশনা দেয়, জাভাস্ক্রিপ্ট সেটি ক্লোন করে।

আপনার কোনটি দরকার?

যদি টেকনিক্যাল ডিটেল পড়ে আপনার চোখে ঘাম আসে, এখন থেকে আবার মনোযোগ দিতে পারেন! আপনি যদি জাভা এবং জাভাস্ক্রিপ্টের মধ্যে নির্বাচন করতে চান, তবে এটা খুব কঠিন নয়।

সাধারণত আপনার জাভাস্ক্রিপ্ট দরকার হবে:

  • ওয়েবসাইট, ওয়েব অ্যাপ, এবং অন্যান্য ফ্রন্ট-এন্ড ইন্টারফেস
  • সিম্পল ওয়েব সার্ভার/ব্যাক-এন্ড টাস্ক (Node.js সহ)
  • ব্রাউজার-ভিত্তিক গেম এবং অ্যানিমেশন তৈরি
  • ইলেকট্রন বা অন্য ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্কের উপর ভিত্তি করে অ্যাপ/গেম/প্রোগ্রাম

আপনার সম্ভবত জাভা দরকার হবে:

  • অ্যান্ড্রয়েড অ্যাপ
  • ডেস্কটপ অ্যাপ্লিকেশন
  • সার্ভার-সাইড অ্যাপ্লিকেশন
  • ফোন, আইওটি ডিভাইস, এবং অন্যান্য হার্ডওয়্যারের জন্য কোড লিখা

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

তবে আপনি যদি ওয়েব ডেভেলপমেন্টে যেতে চান বা অধিকাংশ সময় ওয়েবসাইট এবং ওয়েব অ্যাপে কাজ করার পরিকল্পনা করেন, তবে জাভাস্ক্রিপ্ট সম্ভবত একটি "মাস্ট-হ্যাভ" দক্ষতা। দীর্ঘদিনে, উভয়ই শিখলে কোনো ক্ষতি নয়, কারণ উভয়টিই এমন কনসেপ্ট সমাবেশ করে যা আপको একজন ভালো (এবং বেশি মার্কেটেবল!) প্রোগ্রামার বানাতে সাহায্য করতে পারে।

যদি আপনি গেম ডেভেলপমেন্টে যেতে চান, তবে এই প্রোগ্রামিং ভাষাগুলো আপনার জন্য বেশি উপযুক্ত হবে।

  1. DirectX 11 এবং DirectX 12-এর পার্থক্য কী?

  2. জাভাস্ক্রিপ্টে ফাংশন ও মেথডের পার্থক্য

  3. JRE এবং JDK-এর পার্থক্য

  4. জাভাস্ক্রিপ্ট এবং পাইথনে সেমিকোলনের পার্থক্য