प्रोग्रामर एक संगठित गुच्छा है जब यह लिखने के कोड की बात आती है। वे अपने कार्यक्रमों को व्यवस्थित करना पसंद करते हैं ताकि वे तार्किक तरीके से प्रवाहित हों, कोड के अलग-अलग ब्लॉकों को बुलाते हुए कि प्रत्येक का एक विशेष काम है। उनके द्वारा लिखी जाने वाली कक्षाओं का आयोजन पैकेज बनाकर किया जाता है।
एक पैकेज एक डेवलपर को समूह कक्षाओं (और इंटरफेस) को एक साथ अनुमति देता है। ये कक्षाएं सभी किसी न किसी तरह से संबंधित होंगी - वे सभी एक विशिष्ट आवेदन के साथ कर सकते हैं या कार्यों का एक विशिष्ट सेट कर सकते हैं। उदाहरण के लिए, जावा एपीआई संकुल से भरा है। उनमें से एक javax.xml पैकेज है। यह और इसके उप पैकेजों में जावा एपीआई में सभी वर्गों को संभालना होता है एक्सएमएल.
कक्षाओं को एक पैकेज में समूहित करने के लिए, प्रत्येक कक्षा के पास उसके शीर्ष पर एक पैकेज स्टेटमेंट होना चाहिए।जावा फ़ाइल. यह संकलक को यह जानने देता है कि कक्षा किस पैकेज की है और कोड की पहली पंक्ति होनी चाहिए। उदाहरण के लिए, कल्पना कीजिए कि आप एक साधारण युद्धपोट खेल बना रहे हैं। युद्धपोत नामक पैकेज में आवश्यक सभी वर्गों को रखना समझदारी है:
यह वह जगह है जहां उस पैकेज से संबंधित सभी कक्षाएं संग्रहीत हैं। उदाहरण के लिए, यदि युद्धपोतों के पैकेज में गेमबर्ड, शिप, क्लाइंटजीयूआई शामिल हैं, तो वहां GameBoard.java, Ship.java और ClientGUI.java नामक फाइलें एक डायरेक्ट्री कॉल में संग्रहीत की जाएंगी युद्धपोतों।
उदाहरण के लिए, javax.xml पैकेज के नाम से पता चलता है कि XML javax पैकेज का एक उप पैकेज है। यह वहाँ नहीं रुकता है, एक्सएमएल के तहत 11 उप पैकेज हैं: बाइंड, क्रिप्टो, डेटाटाइप, नेमस्पेस, पार्सर्स, साबुन, स्ट्रीम, ट्रांसफ़ॉर्म, वेरिएशन, डब्ल्यूएस, और एक्सपीथ।
फ़ाइल सिस्टम पर निर्देशिकाओं को पैकेज पदानुक्रम से मेल खाना चाहिए। उदाहरण के लिए, javax.xml.crypto पैकेज में कक्षाएं.. javax \ xml \ crypto की निर्देशिका संरचना में रहेंगी।
लेकिन, जहां तक संकलक का सवाल है, प्रत्येक पैकेज कक्षाओं का एक अलग सेट है। यह अपने मूल पैकेज का हिस्सा होने के नाते किसी वर्ग में एक उप-पैकेज में नहीं दिखता है। जब यह पैकेज का उपयोग करने की बात आती है तो यह अंतर अधिक स्पष्ट हो जाता है।
सॉफ्टवेयर कंपनियों और बड़ी परियोजनाओं में, जहाँ पैकेजों को अन्य वर्गों में आयात किया जा सकता है, नामों को विशिष्ट बनाने की आवश्यकता होती है। यदि दो अलग-अलग पैकेजों में एक ही नाम वाला एक वर्ग होता है तो यह महत्वपूर्ण है कि कोई भी नामकरण संघर्ष नहीं हो सकता है। यह परतों या विशेषताओं में विभाजित होने से पहले, पैकेज का नाम कंपनी डोमेन के साथ पैकेज के नाम को शुरू करने से अलग करके सुनिश्चित किया जाता है: