Select Page

১.৩ সি++ বনাম জাভা

সি++ প্রোগ্রামিং ভাষা এবং জাভা এর মধ্যে অনেক পার্থক্য এবং মিল রয়েছে। সি++ এবং জাভার মধ্যে শীর্ষ পার্থক্য একটি তালিকা নিচে দেওয়া হল-

ইনডেক্স

সি++

জাভা

স্বাধীন প্ল্যাটফর্ম সি++ প্ল্যাটফর্ম নির্ভরশীল। জাভা প্ল্যাটফর্ম-স্বাধীন।
প্রধান ব্যবহৃত সি++ প্রধানত সিস্টেম প্রোগ্রামিং জন্য ব্যবহৃত হয়। জাভা মূলত অ্যাপ্লিকেশন প্রোগ্রামিং এর জন্য প্রধানত ব্যবহৃত হয়। এটা ব্যাপকভাবে উইন্ডো, ওয়েব ভিত্তিক, এন্টারপ্রাইজ এবং মোবাইল অ্যাপ্লিকেশনে ব্যবহার করা হয়।
ডিজাইন লক্ষ্য সি++ সিস্টেম এবং অ্যাপ্লিকেশন প্রোগ্রামিং এর জন্য ডিজাইন করা হয়েছে। এটি সি প্রোগ্রামিং ভাষা একটি বর্ধিত সংস্করণ ছিল। জাভা মুদ্রণ ব্যবস্থার জন্য একটি ইন্টারপ্রেটার হিসাবে ডিজাইন করা হয়েছিল তবে পরে একটি সমর্থিত নেটওয়ার্ক কম্পিউটিং হিসাবে প্রসারিত হয়েছিল। এটি  বৃহত্তর ইউজারদের কাছে ব্যবহারযোগ্য এবং অ্যাক্সেসযোগ্য হওয়ার লক্ষ্যে লক্ষ্য নিয়ে ডিজাইন করা হয়েছিল।
Goto স্টেটমেন্ট সি++ এ Goto স্টেটমেন্ট সাপোর্ট করে। জাভা Goto স্টেটমেন্ট সাপোর্ট করে না।
মাল্টিপল ইনহেরিটেন্স সি++ মাল্টিপল ইনহেরিটেন্স সমর্থন করে। জাভা মাল্টিপল ইনহেরিটেন্স সমর্থন করে না। তবে এটি জাভার ইন্টারফেস দ্বারা এক্সেস করা যেতে পারে।
অপারেটর ওভারলোডিং সি++ অপারেটর ওভারলোডিং সমর্থন করে। জাভা অপারেটর ওভারলোডিং সমর্থন করে না।
পয়েন্টার সি++ পয়েন্টার সমর্থন করে। আপনি  সি++ মধ্যে পয়েন্টার প্রোগ্রাম লিখতে পারেন। জাভাতে অভ্যন্তরীণ পয়েন্টার সমর্থন করে। আপনি জাভাতে পয়েন্টার প্রোগ্রাম লিখতে পারবেন না।
কম্পাইলার এবং ইন্টারপ্রেটার সি++ শুধুমাত্র কম্পাইলার ব্যবহার করে। সি++ কম্পাইলার ব্যবহার করে রান করে যা সোর্স কোডকে মেশিন কোডে রূপান্তর করে, তাই সি++ প্ল্যাটফর্ম নির্ভরশীল। জাভা কম্পাইলার এবং ইন্টারপ্রেটার উভয় ব্যবহার করে। জাভার সোর্স কোড কম্পাইলেশন এর সময় বাইটকোড-এ রূপান্তরিত করা হয়। ইন্টারপ্রেটার রানটাইম-এ এই বাইটকোডকে সঞ্চালিত করে এবং আউটপুট প্রদান করে। জাভা ইন্টারপ্রেটেড কারণ এটি প্ল্যাটফর্ম স্বাধীন।
ভেলু দ্বারা কল এবং রেফারেন্স দ্বারা কল সি++ ভেলু দ্বারা কল এবং রেফারেন্স দ্বারা কল উভয় সাপোর্ট করে। জাভা শুধুমাত্র ভেলু দ্বারা কল সাপোর্ট করে। জাভায় রেফারেন্স দ্বারা কল করার অপশন নেই।
ষ্ট্রাকচার এবং ইউনিয়ন সি++ ষ্ট্রাকচার এবং ইউনিয়ন সাপোর্ট করে। জাভা ষ্ট্রাকচার এবং ইউনিয়ন সাপোর্ট করে না।
থ্রেড সাপোর্ট সি++ এ বিল্ট-ইন কোন থ্রেড সমর্থন নেই। থ্রেড সমর্থনের জন্য তৃতীয় পক্ষের লাইব্রেরি এর সাহায্য নিতে হয়। জাভায় বিল্ট-ইন থ্রেড সমর্থন রয়েছে।
ডকুমেন্টেশন কমেন্ট সি++ ডকুমেন্টেশন কমেন্ট সমর্থন করে না। জাভা সোর্স কোডের জন্য ডকুমেন্টেশন তৈরি করতে ডকুমেন্টেশন মন্তব্য (/ ** … * /) সমর্থন করে।
ভার্চুয়াল কীওয়ার্ড সি++ ভার্চুয়াল কীওয়ার্ডকে সমর্থন করে যাতে আমরা কোন ফাংশনকে ওভাররাইড করতে পারি তা নির্ধারণ করতে পারি। জাভার কোন ভার্চুয়াল কীওয়ার্ড নেই। আমরা ডিফল্টভাবে সমস্ত নন-স্ট্যাটিক মেথডকে ওভাররাইড করতে পারি। অন্য কথায়, নন-স্ট্যাটিক মেথডগুলো ডিফল্টভাবে ভার্চুয়াল।
আনসাইন্ড রাইট শিফট সি++ >>> অপারেটর সমর্থন করে না । জাভা আনসাইন্ড রাইট শিফট >>> অপারেটর সমর্থন করে।
ইনহেরিটেন্স ট্রি সি++ সর্বদা একটি নতুন ইনহেরিটেন্স ট্রি তৈরি করে। জাভা সবসময় একক ইনহেরিটেন্স ট্রি ব্যবহার করে কারণ সব ক্লাস জাভাতে অবজেক্ট ক্লাসের চাইল্ড ক্লাস। অবজেক্ট ক্লাসটি জাভাতে ইনহেরিটেন্স ট্রির রুট।
হার্ডওয়্যার সি++ হার্ডওয়্যার এর কাছাকাছি। জাভা হার্ডওয়্যার সাথে ইন্টারেক্টিভ হয় না।
অবজেক্ট ওরিয়েন্টেড সি++ একটি অবজেক্ট ওরিয়েন্টেড ভাষা। সি ভাষায়, একক রুট শ্রেণীক্রম সম্ভব নয়। জাভা একটি অবজেক্ট ওরিয়েন্টেড ভাষা। সবকিছু (মৌলিক ধরনের বাদে) জাভায় একটি অবজেক্ট। এটি একটি একক মূল শ্রেণীক্রম যা সবকিছু java.lang.Object থেকে পেয়ে থাকে।

নোটঃ

  • জাভা সি++ মত ডিফল্ট আর্গুমেন্ট সমর্থন করে না।
  • জাভা সি++ মত হেডার ফাইল সমর্থন করে না। জাভা বিভিন্ন ক্লাস এবং মেথড অন্তর্ভুক্ত করার জন্য import শব্দ ব্যবহার করে।

সি++ উদাহরণঃ

জাভা উদাহরণঃ