Select Page

১.৭ জাভার বৈশিষ্ট্য

জাভা প্রোগ্রামিং ভাষার প্রাথমিক উদ্দেশ্য ছিল এটি পোর্টেবল, সহজ এবং নিরাপদ প্রোগ্রামিং ভাষা তৈরি করা। এ ছাড়াও, কিছু চমৎকার বৈশিষ্ট্য রয়েছে যা এই ভাষা জনপ্রিয়তার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। জাভা বৈশিষ্ট্যগুলি Java Buzzwords নামেও পরিচিত।

জাভা ভাষার সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলির একটি তালিকা নীচে দেওয়া হয়েছেঃ

  • সহজ / সিম্পল (Simple)
  • অবজেক্ট ওরিয়েন্টেড (Object-Oriented)
  • হালকা / পোর্টেবল (Portable)
  • স্বাধীন প্ল্যাটফর্ম / প্লাটফর্ম ইনডিপেন্ডেন্ট (Platform independent)
  • সুরক্ষিত / সিকিউর্ড (Secured)
  • শক্তসমর্থ / রোবাষ্ট (Robust)
  • স্থাপত্য নিরপেক্ষ / আর্কিটেকচার নিউট্রাল (Architecture neutral)
  • ব্যাখ্যা করা / ইন্টারপ্রেটেড (Interpreted)
  • উচ্চ পারদর্শিতা / হাই পারফর্মেন্স (High Performance)
  • মাল্টিথ্রেডেড (Multithreaded)
  • বণ্টিত / ডিস্ট্রিবিউটেড (Distributed)
  • গতিশীল / ডায়নামিক (Dynamic)

সিম্পলঃ

জাভা শিখতে খুব সহজ, এবং এর সিনট্যাক্স সাধারণ, পরিষ্কার এবং বুঝতে সহজ। সান মাইক্রো সিষ্টেম এর মতে, জাভা ভাষাটি একটি সহজ প্রোগ্রামিং ভাষা কারণ:

  • জাভা সিনট্যাক্স সি ++ উপর ভিত্তি করে তৈরি (তাই প্রোগ্রামাররা C ++ এর পরে এটি সহজেই শিখতে পারে) ।
  • জাভা অনেক জটিল এবং কদাচিৎ ব্যবহৃত বৈশিষ্ট্য মুছে ফেলেছে, উদাহরণস্বরূপ এক্সপ্লিসিট পয়েন্টারস, অপারেটর ওভারলোডিং ইত্যাদি।
  • অপরিচিত বস্তু (অবজেক্টস) অপসারণ করার কোন প্রয়োজন নেই কারণ জাভাতে একটি স্বয়ংক্রিয় গার্বেজ সংগ্রহ রয়েছে।

অবজেক্ট ওরিয়েন্টেডঃ

জাভা একটি অবজেক্ট ওরিয়েন্টেড (বস্তু ভিত্তিক) প্রোগ্রামিং ভাষা। জাভা সবকিছুই একটি অবজেক্ট/বস্তু। অবজেক্ট ভিত্তিক মানে আমরা আমাদের সফ্টওয়্যারকে বিভিন্ন ধরণের অবজেক্ট এর সমন্বয় হিসাবে সংগঠিত করি যা তথ্য ও আচরণ উভয়কে অন্তর্ভুক্ত করে।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) একটি পদ্ধতি যা কিছু নিয়ম সরবরাহ করে সফ্টওয়্যার উন্নয়ন এবং রক্ষণাবেক্ষণকে সহজ করে।

অবজেক্ট ওরিয়েন্টেড নিয়ে কিছু সাধারণ ধারণাঃ

  • অবজেক্ট
  • ক্লাস
  • ইনহেরিটেন্স
  • পলিমরফিজম
  • এবস্ট্রাকশন
  • এনক্যাপসুলেশন

প্লাটফর্ম ইনডিপেন্ডেন্টঃ

জাভা প্ল্যাটফর্ম স্বাধীন কারণ এটি সি, সি ++ ইত্যাদি অন্যান্য ভাষার থেকে আলাদা । যেখানে এই ভাষাগুলো প্ল্যাটফর্ম নির্দিষ্ট মেশিনগুলিতে কম্পাইল করা হয় সেখানে জাভা একবার লিখুন, আর সব প্লাটফর্মে রান করুন। একটি প্ল্যাটফর্ম হার্ডওয়্যার বা সফ্টওয়্যার পরিবেশ যেখানে একটি প্রোগ্রাম চালানো হয়।

সফ্টওয়্যার ভিত্তিক এবং হার্ডওয়্যার ভিত্তিক দুটি ধরণের প্ল্যাটফর্ম রয়েছে। জাভা সফটওয়্যার ভিত্তিক প্ল্যাটফর্ম সরবরাহ করে।

জাভা প্ল্যাটফর্মটি বেশিরভাগ অন্যান্য প্ল্যাটফর্মের থেকে আলাদা, এটি একটি সফ্টওয়্যার-ভিত্তিক প্ল্যাটফর্ম যা অন্যান্য হার্ডওয়্যার ভিত্তিক প্ল্যাটফর্মের উপর ভিত্তি চলে। এটি দুটি উপাদান আছে:

  • রানটাইম এনভাইরনমেন্ট
  • এপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API)

জাভা কোডটি একাধিক প্ল্যাটফর্মগুলিতে চালানো যেতে পারে, উদাহরণস্বরূপ, উইন্ডোজ, লিনাক্স, সান সোলারিস, ম্যাক / ওএস ইত্যাদি। জাভা কোড কম্পাইলার দ্বারা সংকলিত এবং বাইটেডকোডে রূপান্তরিত হয়। এই বাইটকোড একটি প্ল্যাটফর্ম-স্বাধীন কোড কারণ এটি একাধিক প্ল্যাটফর্মগুলিতে চালানো যেতে পারে, অর্থাত একবার লিখুন এবং যেকোনো স্থানে রান করুন (Write Once and Run Averywhere – WORA)।

সিকিউর্ডঃ

জাভা তার নিরাপত্তা জন্য সবচেয়ে পরিচিত। জাভা দিয়ে আমরা ভাইরাস মুক্ত সিস্টেম বিকাশ করতে পারি। জাভা নিরাপদ কারণ-

  • কোন এক্সপ্লিসিট পয়েন্টার নেই।
  • জাভা প্রোগ্রাম একটি ভার্চুয়াল মেশিন স্যান্ডবক্স এর ভিতরে চলে।
  • ক্লাসলোডারঃ জাভা ক্লাসলোডার জাভা রানটাইম এনভায়রনমেন্ট (JRE) এর একটি অংশ যা জাভা ভার্চুয়াল মেশিনে গতিশীলভাবে জাভা ক্লাসগুলি লোড করতে ব্যবহার করে। এটি লোকাল ফাইল সিস্টেমের ক্লাসগুলির জন্য নেটওয়ার্ক উৎস থেকে আমদানি করা প্যাকেজগুলিকে পৃথক করে সুরক্ষা যোগ করে।
  • বাইটকোড ভেরিফায়ারঃ এটি অবৈধ কোডের জন্য কোড আলাদা ভাবে পরীক্ষা করে যা বস্তুর অধিকার অ্যাক্সেস লঙ্ঘন করতে পারে।
  • সিকিউরিটি ম্যানেজারঃ লোকাল ডিস্ক এর রিডিং এবং রাইটিং এর মতো কোন ক্লাস কোন সংস্থান অ্যাক্সেস করতে পারে তা নির্ধারণ করে।

জাভা ভাষা ডিফল্টরূপে এইসব সিকিউরিটি প্রদান করে। এছাড়াও SSL, JAAS, Cryptography ইত্যাদি মাধ্যমে স্পষ্টভাবে একটি অ্যাপ্লিকেশন ডেভেলপার দ্বারা কিছু সুরক্ষা সরবরাহ করা যেতে পারে।

রোবাষ্টঃ

রোবাষ্ট মানে শক্তিশালী। জাভা শক্তিশালী কারণ-

  • এটি শক্তিশালী মেমরি ব্যবস্থাপনা ব্যবহার করে।
  • পয়েন্টারগুলির অভাব রয়েছে যা নিরাপত্তা সমস্যাগুলি এড়িয়ে চলছে।
  • জাভাতে স্বয়ংক্রিয় গার্বেজ সংগ্রহ রয়েছে যা জাভা ভার্চুয়াল মেশিনে চালিত হয় যা জাভা অ্যাপ্লিকেশন দ্বারা আর কখনো ব্যবহার করা হবে না।
  • এক্সেপশন হ্যান্ডলিং এবং টাইপ পরীক্ষণ প্রক্রিয়া জাভাতে আছে। এই সব ফিচার জাভাকে শক্তিশালি করে তোলে।

আর্কিটেকচার নিউট্রালঃ

জাভা স্থাপত্য নিরপেক্ষ কারণ কোন বাস্তবায়ন নির্ভরশীল বৈশিষ্ট্য নেই, উদাহরণস্বরূপ, প্রিমিটিভ ধরনের সাইজকে স্থির করা হয়েছে।

সি প্রোগ্রামিংতে int ডাটা টাইপটি 32-বিট আর্কিটেকচারের জন্য 2 বাইট মেমরি এবং 64-বিট আর্কিটেকচারের জন্য 4 বাইট মেমরি ধারণ করে। যাইহোক, এটি জাভাতে 32 এবং 64-বিট স্থাপত্যের জন্য 4 বাইট মেমরি ধারণ করে।

পোর্টেবলঃ

জাভা পোর্টেবল কারণ এটি আপনাকে যেকোন প্ল্যাটফর্মে জাভা বাইটকোড রান করতে সহায়তা করে। এটা কোনো বাস্তবায়ন প্রয়োজন হয় না।

ইন্টারপ্রেটেডঃ

জাভা বাইটকোড ব্যবহার করে জাভা ক্রস প্ল্যাটফর্ম কোড সমর্থন করে। বাইটকোডটি JVM দ্বারা যেকোনও প্ল্যাটফর্মে চালানো যেতে পারে।

হাই পারফর্মেন্সঃ

জাভা অন্যান্য প্রথাগত প্রোগ্রামিং ভাষাগুলির চেয়ে দ্রুততর কারণ জাভা বাইটকোডটি ন্যাটিভ কোডের “কাছাকাছি”। এটি এখনও একটি কম্পাইল করা ভাষা (উদাহরণস্বরূপ- C ++) তুলনায় একটু ধীর। জাভা একটি সংজ্ঞায়িত ভাষা যা এটি কম্পাইলযুক্ত ভাষার তুলনায় ধীর, উদাঃ সি, সি ++ ইত্যাদি।

ডিস্ট্রিবিউটেডঃ

জাভা ডিষ্ট্রিবিউটেড কারণ এটি ব্যবহারকারীদের জাভাতে ডিষ্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। RMI এবং EJB ডিষ্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহার করা হয়। জাভা এই বৈশিষ্ট্য ইন্টারনেটে আমাদের কোন মেশিন থেকে পদ্ধতি কল করে ফাইল অ্যাক্সেস করতে সক্ষম করে তোলে।

মাল্টিথ্রেডেডঃ

একটি থ্রেড একযোগে নির্বাহ, একটি পৃথক প্রোগ্রাম এর মত। একাধিক থ্রেড সংজ্ঞায়িত করে একাধিক কাজকে মোকাবেলা করে আমরা জাভা প্রোগ্রামগুলি লিখতে পারি। মাল্টি-থ্রেডিং এর প্রধান সুবিধা হল এটি প্রতিটি থ্রেডের জন্য মেমরি দখল করে না। এটি একটি মেমরি এলাকাকে সবার সাথে শেয়ার করে। মাল্টি মিডিয়া, ওয়েব অ্যাপ্লিকেশন ইত্যাদি জন্য থ্রেড গুরুত্বপূর্ণ।

ডায়নামিকঃ

জাভা একটি গতিশীল ভাষা। এটি ক্লাস এর গতিশীল লোডকে সমর্থন করে। এটা ক্লাস চাহিদার লোড হয় মানে। এটি তার ন্যাটিভ ভাষা যেমন সি এবং সি ++ থেকেও ফাংশনগুলিকে সমর্থন করে।

জাভা গতিশীল সংকলন এবং স্বয়ংক্রিয় মেমরি ব্যবস্থাপনা (গার্বেজ সংগ্রহ) সমর্থন করে।