Programmer adalah kumpulan terorganisir ketika datang untuk menulis kode. Mereka suka mengatur program mereka sehingga mereka mengalir dengan cara yang logis, memanggil blok kode yang terpisah yang masing-masing memiliki pekerjaan tertentu. Mengatur kelas yang mereka tulis dilakukan dengan membuat paket.
Paket memungkinkan pengembang untuk mengelompokkan kelas (dan antarmuka) bersama. Kelas-kelas ini semua akan terkait dalam beberapa cara - mereka semua mungkin harus dilakukan dengan aplikasi tertentu atau melakukan serangkaian tugas tertentu. Misalnya, Jawa API penuh dengan paket. Salah satunya adalah paket javax.xml. Itu dan sub paketnya berisi semua kelas di Java API yang harus dilakukan dengan penanganan XML.
Untuk mengelompokkan kelas ke dalam suatu paket, setiap kelas harus memiliki pernyataan paket yang ditentukan di bagian atas.file java. Ini membuat kompiler mengetahui paket milik kelas dan harus menjadi baris kode pertama. Misalnya, bayangkan Anda membuat game Battleships sederhana. Masuk akal untuk menempatkan semua kelas yang dibutuhkan dalam paket yang disebut kapal perang:
Di sinilah semua kelas milik paket itu disimpan. Misalnya, jika paket kapal perang berisi kelas GameBoard, Kapal, ClientGUI maka ada akan ada file yang disebut GameBoard.java, Ship.java dan ClientGUI.java yang disimpan dalam panggilan direktori kapal perang.
Misalnya, nama paket javax.xml menunjukkan bahwa XML adalah sub paket dari paket javax. Tidak berhenti di situ, di bawah XML ada 11 sub paket: bind, crypto, datatype, namespace, parser, soap, stream, transform, validation, ws, dan XPath.
Direktori pada sistem file harus sesuai dengan hierarki paket. Sebagai contoh, kelas-kelas dalam paket javax.xml.crypto akan hidup dalam struktur direktori.. \ javax \ xml \ crypto.
Namun, sejauh menyangkut kompiler, setiap paket adalah sekumpulan kelas yang berbeda. Itu tidak melihat kelas dalam subpackage sebagai bagian dari paket induknya. Perbedaan ini menjadi lebih jelas ketika menggunakan paket.
Di perusahaan perangkat lunak dan proyek besar, di mana paket mungkin diimpor ke kelas lain, nama harus berbeda. Jika dua paket berbeda berisi kelas dengan nama yang sama, penting bahwa tidak ada konflik penamaan. Ini dilakukan dengan memastikan nama paket berbeda dengan memulai nama paket dengan domain perusahaan, sebelum dipecah menjadi beberapa lapisan atau fitur: