আমরা কম্পিউটারে নানা ধরনের ফাইল বিভিন্ন ফোল্ডারে সাজিয়ে রাখি। যেমন- মুভি ফোল্ডারে হয়তো আমরা শুধুই মুভি রাখি, সেখানে অন্য কোনো ফাইল রাখি না। আবার মুভি ফোল্ডারে এর মধ্যে সাব-ফোল্ডার তৈরি করি আরও আলাদা করার জন্য, যেমন – বাংলা মুভি, ইংরেজি মুভি ইত্যাদি। জাভাতে প্যাকেজ বলতে এই ধারণাটিকেই বোঝায়। একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফ্টওয়্যারে শত শত বা হাজার হাজার পৃথক ক্লাস থাকতে পারে। এজন্য প্যাকেজ ডিক্লেয়ারেশনের মাধ্যমে একই রকম ক্লাসগুলো একাধিক প্যাকেজের মধ্যে আলাদা করে রাখা হয়। এছাড়াও অনেক সময় একই নামের একাধিক ক্লাস লেখার প্রয়োজন হতে পারে যা পরম্পরবিরোধী। এক্ষেত্রে একই নামের ক্লাস বিভিন্ন প্যাকেজে রাখা যেতে পারে।
প্যাকেজ তৈরি করতে হলে একটি নাম বাছায় করতে হয় এবং তা ফাইলের শুরুতে প্যাকেজে স্ট্যাটমেন্ট হিসেবে লিখতে হয়। উদাহরণ-
package pub.dimik.qa;
public class Question {
private String text;
private String subText;
public void validate() {
}
}
ওপরের Question ক্লাসটি pub.dimik.qa প্যাকেজে রাখা হয়েছে।
প্যাকেজের নাম বাছায় করার জন্য কতগুলো নিয়মকানুন রয়েছে। এগুলোকে naming convention বলা হয়। যেমন-
১. প্যাকেজের নামগুলো ছোট হাতের অক্ষরে (lowercase) লিখতে হয় যাতে করে একই নামে ছোট হাতের বা বড় হাতের নামের সমস্যা এড়ানো যায়।
২. সাধারণত বিভিন্ন কোম্পানি বা সফটওয়্যার ডেভেলপমেন্ট হাউজ তাদের ডোমেইনের নাম ব্যবহার করে প্যাকেজ নির্ধারন করে। এক্ষেত্রে শুরুতে টপ লেভেল ডোমেইন (TLD) আগে বসে এবং এরপর ডট (.) দিয়ে পরবর্তীতে ডোমেইনের নাম, এবং আরও একাধিক গ্রুপিং থাকলে তাদের নাম ডট দিয়ে যুক্ত করা হয়। যেমন- কোনো কোম্পানির নাম যদি example.com হয় তাহলে প্যাকেজের নাম হবে, com.example.qa
৩. তবে প্যাকেজের নামে কোন সংখ্যা দিয়ে শুরু বা কোনো জাভা কিওয়ার্ড বা বৈধ নয় এমন কোনো অক্ষর ব্যবহার করা যায় না
একটি প্যাকেজের কোনো ক্লাস অন্য একটি প্যাকেজের ক্লাসে যুক্ত বা ইম্পোর্ট করতে হলে জাভা ফাইলটিতে ইম্পোর্ট স্ট্যাটমেন্ট ব্যবহার করতে হয়। উদাহরণ –
package pub.dimik.qa;
import java.util.ArrayList;
import java.util.List;
public class QuestionBank {
private List<Question> questions = new ArrayList<>();
}
ওপরের QuestionBank জাভা ক্লাসটিতে প্যাকেজ স্ট্যাটমেন্টের পর কতগুলো import স্ট্যাটমেন্ট ব্যবহার করা হয়েছে। এতে প্রথমে import কিওয়ার্ড ব্যবহার করে যে যে ক্লাসটি ইম্পোর্ট করতে হয় সেই ক্লাসের fully qualified name লিখতে হয় এবং শেষে সেমিকোন ব্যবহার করে স্ট্যাটমেন্ট শেষ করতে হয়।
কোনো ক্লাসের প্যাকেজ নাম সহ নামকে fully qualified name বলা হয়। উপরের QuestionBank ক্লাসটির fully qualified name হচ্ছে – pub.dimik.qa.QuestionBank