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

জাভা ৯-এ মডিউলে Module Descriptor-এর গুরুত্ব কী?

একটি মডিউল হলো প্যাকেজ-এ অর্গানাইজড ক্লাসের কোড কালেকশন এবং স্ট্যাটিক রিসোর্স যেমন প্রপার্টি ফাইল বা অন্যগুলো। এটি বাহ্যিক পরিবেশকে সে সকল তথ্য দেয় যা সেই মডিউল ব্যবহার করার জন্য দরকার। মডিউল ডেসক্রিপ্টর মডিউল সিস্টেমের কী সোর্স, এবং এটি module-info.java ফাইলে স্পেসিফাইড মডিউল ডিক্লেরেশনের কম্পাইলড ভার্সন যা মডিউলের ডিরেক্টরি হায়ারার্কির রুটে থাকে।

মডিউল ডিক্লেরেশন উদাহরণ

module com.myproject.module1 {
    requires com.myproject.module2;
    exports com.myproject.project1;
    exports com.myproject.project2;
}

প্রধান মডিউল ডেসক্রিপ্টরগুলো

  • module module.name: module.name নামে একটি মডিউল ডিক্লেয়ার করে।
  • requires module.name: নির্দেশ করে যে আমাদের মডিউল module.name-এ ডিপেন্ডেন্ট, এই মডিউলকে টার্গেট মডিউলের এক্সপোর্টেড পাবলিক টাইপ অ্যাক্সেস করতে দেয়।
  • requires transitive module.name: এই মডিউল যেসব মডিউল ডিপেন্ড করে, সেগুলো আটোমেটিক্যালি module.name-এ ডিপেন্ড করবে।
  • exports pkg.name: আমাদের মডিউল pkg.name প্যাকেজের পাবলিক মেম্বার এক্সপোর্ট করে যেসব মডিউল এটি রিকোয়ার করে।
  • exports pkg.name to module.name: উপরের মতোই, কিন্তু কোন মডিউল pkg.name প্যাকেজের পাবলিক মেম্বার ইউজ করতে পারবে সেটি লিমিট করে।
  • uses class.name: কারেন্ট মডিউলকে class.name সার্ভিসের কনসিউমার বানায়।
  • provides class.name with class.name.impl: class.name.impl ক্লাসকে রেজিস্টার করে যা class.name সার্ভিসের ইমপ্লিমেন্টেশন প্রদান করে।
  • opens pkg.name: অন্য মডিউলগুলো রিফ্লেকশন ব্যবহার করে pkg.name প্যাকেজের প্রাইভেট মেম্বার অ্যাক্সেস করতে পারবে।
  • opens pkg.name to module.name: একই কাজ করে, কিন্তু কোন মডিউল রিফ্লেকশন অ্যাক্সেস পাবে সেটি লিমিট করে।
  1. জাভাতে প্রিডিফাইনড ক্লাস নাম ক্লাস বা ভেরিয়েবল নাম হিসেবে ব্যবহার

  2. জাভাতে HashSet-এর গুরুত্ব

  3. জাভা ৯-এ destroyForcibly() মেথডের গুরুত্ব

  4. জাভাতে clone() মেথডের গুরুত্ব