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

জাভা এবং রুবির মধ্যে ৭টি মূল পার্থক্য: ডেভেলপারদের জন্য স্পষ্ট গাইড

আপনি জাভা থেকে রুবিতে কীভাবে যাবেন?

এই গাইডে, আপনি শিখবেন দুই ভাষার মধ্যে প্রধান পার্থক্য কী কী যাতে আপনি সঠিক সিদ্ধান্ত নিতে পারেন।

এটি জাভা/সি# থেকে রুবিতে যাওয়া খুঁজে পাওয়া অনেক মানুষের জন্য উপকারী।

কিন্তু…

আপনি যদি শুধু পার্থক্য জানতে কৌতূহলী হন, তবে এটি আপনার জন্যও।

চলুন শুরু করি!

স্ট্যাটিক টাইপিং বনাম ডাইনামিক টাইপিং

টাইপিং স্টাইল হলো কোড দেখার সময় দুটি ভাষার মধ্যে সবচেয়ে বড় এবং उल्लেখ্য পার্থক্য।

এখানে অবস্থান:

  • জাভা ব্যবহার করে স্ট্যাটিক টাইপিং
  • রুবি ব্যবহার করে ডাইনামিক টাইপিং

এটি সঠিকভাবে কী বোঝায়?

টাইপিং বলতে ভেরিয়েবল এবং মেথড আর্গুমেন্ট কীভাবে কাজ করে সেটাকে বোঝায়।

একটি স্ট্রংলি (বা স্ট্যাটিক্যালি) টাইপড ভাষায় প্রতিটি ভেরিয়েবল যেসব টাইপ (ক্লাস) গ্রহণ করতে পারে সেগুলো ডিক্লেয়ার করতে হয়।

এটি এইরকম দেখায়:

 int n = 1; 

যেখানে int হল টাইপ, এই কেসে Integer।

এটি কেন উপকারী?

কারণ আপনি যদি এই ভেরিয়েবলে অন্য কোনো টাইপের অবজেক্ট অ্যাসাইন করার চেষ্টা করেন, কম্পাইলার একটি এরর রেইজ করবে এবং আপনার প্রোগ্রাম চলেगा না।

এটি মানে আপনি সর্বদা জানবেন আপনি কী ধরনের অবজেক্টের সাথে কাজ করছেন।

নachte নachte কম ফ্লেক্সিবল হওয়ার ডিসঅ্যাডভান্টেজের সাথে।

বিপরীতভাবে…

ডাইনামিক টাইপিং হলো ফ্লেক্সিবিলিটির বিষয়, ভেরিয়েবলগুলো একটি নির্দিষ্ট টাইপের সাথে বাঁধা নয়, তাই টাইপ পরিবর্তন হতে পারে।

এখানে একটি উদাহরণ:

 n = 1 n = "abc" 

ডাউনসাইড হলো আপনি বেশি এরর করতে পারেন যদি আপনার কোড স্লপি হয় এবং কোড পড়ার সময় আপনি ততটুকুই পাবেন না।

এটি প্রধান পার্থক্যগুলোর একটি! আরও আগামি সেকশনে।

সিনট্যাক্স: সিম্পল জিনিস এবং বয়লারপ্লেট

জাভা হলো বয়লারপ্লেটের রাজা।

বয়লারপ্লেট হলো সেটা “সেটআপ” কোড যা আপনাকে যোগ করতে হয় শুধু আপনার কোড সিনট্যাক্টিক্যালি বৈধ করতে।

ফলস্বরূপ…

জাভা সিম্পল জিনিসগুলোকে জটিল করে তোলে!

জাভাতে Hello World:

 class Hello { static public void main() { System.out.println("Hello World"); } } 

তারপর আপনাকে এটি একটি ক্লাস ফাইলে কম্পাইল করতে হবে এবং রান করতে হবে।

দুই স্টেপ!

(IDE গুলো এটি সাহায্য করে।)

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

রুবিতে Hello World:

 puts "Hello World" 

হ্যাঁ।

তটুকুই।

লগতে হচ্ছে রুবি ক্লিনার কোডে ফলাফল দেয়। একমত?

এর উপরে…

আপনি এই কোডটি একটি টার্মিনাল থেকে একক কমান্ড দিয়ে রান করতে পারেন! কোনো কম্পাইলেশন স্টেপ দরকার নেই।

কোড নিয়ে খেলা: বিল্ট-ইন REPL

রুবি irb-এর সাথে আসে, যা কোডের একটু টেস্ট করা খুব দ্রুত করে দেয়।

আপনাকে ফাইল সংরক্ষণ করতে হয় না।

অথবা একটি এডিটর খুলতে হয় না!

জাভাতে এটি বিল্ট-ইন নেই, কমপক্ষে জাভা ৯ পর্যন্ত ছিল না।

ফাইল নাম এবং ফাইল অর্গানাইজেশন

জাভা একটি স্পেসিফিক ফাইল নেমিং স্ট্রাকচার এবং অর্গানাইজেশন ফোর্স করে।

উদাহরণস্বরূপ:

আপনার কাছে একটি (পাবলিক) ক্লাস আছে Hello নামের, ফাইলনাম অবশ্যই Hello.java হতে হবে।

রুবিতে এটি সত্য নয়।

আমাদের রুবিতে প্রাইভেট ক্লাসের কনসেপ্টও নেই।

এক্সেপশন হ্যান্ডলিং

জাভাতে দুটি ধরণের এক্সেপশন আছে:

  • চেকড এক্সেপশন
  • আনচেকড এক্সেপশন

পার্থক্য?

আপনাকে চেকড এক্সেপশন হ্যান্ডল করতে হবে!

অথবা আপনার প্রোগ্রাম চলেगा না।

এখন:

রুবিতে শুধু একটি ধরণের এক্সেপশন আছে।

আপনি এটি হ্যান্ডল করতে পারেন আপনি চাইলে, ইন্টারপ্রেটার এর নিয়ে কমপ্লেইন করবে না, কিন্তু এটি আপনার প্রোগ্রাম ক্র্যাশ করতে পারে।

কম্পাইলার এবং ল্যাঙ্গুয়েজ লাইসেন্সিং

শেষে, লাইসেন্সিং সম্পর্কে কথা বলি।

এটি সাধারণত প্রোগ্রামিং ল্যাঙ্গুয়েজের সাথে একটি সমস্যা নয়।

কেন?

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

জাভা এখানে ভিন্ন।

এটি একটি বড় কর্পোরেশন (Oracle)-এর অধীনে এবং এর লাইসেন্সিং-এ ইমপ্লিকেশন রয়েছে।

বস্তুতঃ:

জাভা রানটাইমের দুটি ভার্সন আছে, “Oracle JDK”, যা (যদি আমি সঠিক বুঝি) ভার্সন ৯ থেকে একটি কমার্শিয়াল প্রোডাক্ট।

তারপর আছে “Open JDK”, যা Oracle-এর অ 끝나।

কিন্তু এর একটি ওপেন-সোর্স লাইসেন্স আছে।

লাইব্রেরি এবং কোড ডিস্ট্রিবিউশন

একটি আর MAJOR পার্থক্য, আমার পছন্দের একটি (Matz-রও পছন্দের) রুবি সম্পর্কে হলো RubyGems।

এটি লাইব্রেরি ডিস্ট্রিবিউট করা (যেমন HTTP ক্লায়েন্ট) অনেক সহজ করে দেয়।

কারণ:

  • একটি সেন্ট্রাল রিপোজিটরি আছে
  • এটি ল্যাঙ্গুয়েজের সাথে ইন্টিগ্রেটেড
  • অনেক ওপেন-সোর্স জেম উপলব্ধ এবং খুঁজে বের করা সহজ

যে আমার জানা পর্যন্ত, জাভাতে এভাবে কিছু নেই, তাই এটি রুবির জন্য একটি মেজর উইন।

সারাংশ

আপনি জাভা এবং রুবির মধ্যে প্রধান পার্থক্য সম্পর্কে শিখেছেন। স্ট্যাটিক টাইপিং, বয়লারপ্লেট, এবং ফাইল নেমিং সহ।

এখন আপনি রুবি বুঝতে আরও ভালো প্রস্তুত যাতে আপনি আপনার জন্য সঠিক সিদ্ধান্ত নিতে পারেন।

পড়ার জন্য ধন্যবাদ! 🙂


  1. জাভাতে Abstract Class এবং Interface-এর পার্থক্য

  2. org.simple.json এবং org.json লাইব্রেরির পার্থক্য

  3. জাভাতে Collection এবং Collections-এর পার্থক্য

  4. জাভাতে wait() এবং sleep() মেথডের পার্থক্য