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

জাভা ৯-এ module-info ফাইলে requires ক্লজের ব্যবহার

এক মডিউল হলো জাভা ৯-এ পরিচয় করানো একটি গুরুত্বপূর্ণ কনসেপ্ট। এই কনসেপ্ট ব্যবহার করে আমরা কোডকে ছোট ছোট কম্পোনেন্ট যাকে মডিউল বলে, এগুলোতে ভাগ করতে পারি। তাই প্রতিটি মডিউলের নিজস্ব দায়িত্ব থাকে এবং অন্য মডিউলগুলোর ওপর ডিপেন্ডেন্সি ডিক্লেয়ার করে যাতে সেগুলো সঠিকভাবে কাজ করতে পারে। একটি মডিউল ডিক্লেয়ার করার জন্য, আমাদের রুট সোর্স কোডে "module-info.java" ফাইল অন্তর্ভুক্ত করতে হবে।

"module-info" ফাইলে "requires" ক্লজের কিছু ধরন রয়েছে:

১) requires <module>: ডিফল্টভাবে, একটি মডিউল মডিউল-পাথ-এ থাকা অন্য মডিউলগুলো জানে না। তাই, আমাদের module-info.java-এ: "requires" লাইন যোগ করতে হয় প্রতিবার যখন আমরা অন্য মডিউল অ্যাক্সেস করতে চাই।

module com.tutorialspoint.gui {
    requires com.tutorialspoint.model;
    requires java.desktop;
}

২) requires transitive <module>: আমাদের মডিউল "com.tutorialspoint.model"-এর কেসে: এটি মডিউল "com.core"-এর এক্সপোর্টেড ইন্টারফেস টাইপ রিটার্ন করে। তাই, যে কোনো মডিউল এটি ব্যবহার করতে চাইলে সেটি "com.core" রিকোয়ার করবে এই দ্বিতীয় মডিউলের ক্লাসগুলো কম্পাইলেশন এরর ছাড়া অ্যাক্সেস করতে। জাভা ৯ "transitive" কীওয়ার্ড অনুমতি দেয় যাতে ট্রানজিটিভিটি ইন্ডিকেট করা যায়। ইউজাররা "com.tutorialspoint.model" "com.core" অ্যাক্সেস করতে পারবে যা ইমপ্লিমেন্টেশন পরিবর্তন সহজ করে দেয়।

module com.tutorialspoint.model {
    requires transitive com.core;
}

৩) requires static <module>: "requires static" কীওয়ার্ড অপশনাল ডিপেন্ডেন্সির কনসেপ্ট রিপ্রেজেন্ট করে এমন একটি মডিউল যা:

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

উদাহরণস্বরূপ, আমরা একটি অ্যাপ্লিকেশনের ডেটা পারসিস্টেন্স প্রপোজ করতে চাই, যাতে ওরাকল ডেটাবেস অথবা h2database-এ থাকে।

module com.tutorialspoint.model {
    requires static ojdbc
    requires static h2daabase.h2;
}
  1. জাভাতে Thread.sleep() মেথডের ব্যবহার

  2. জাভাতে অবজেক্ট ক্লোনিংয়ের ব্যবহার

  3. জাভাতে StrictMath ক্লাসের ব্যবহার

  4. জাভাতে setBounds() মেথডের ব্যবহার কী?