Programmētāji ir organizēta grupa, kad runa ir par koda rakstīšanu. Viņiem patīk sakārtot savas programmas tā, lai tās plūst loģiski, izsaucot atsevišķus koda blokus, kuriem katram ir noteikts darbs. Viņu rakstīto nodarbību organizēšana tiek veikta, izveidojot paketes.
Komplekts ļauj izstrādātājam grupēt klases (un saskarnes) kopā. Visas šīs klases kaut kādā veidā būs saistītas - tās visas varētu būt saistītas ar konkrētu lietojumprogrammu vai noteiktu uzdevumu kopumu. Piemēram, Java API ir pilns ar pakotnēm. Viens no tiem ir javax.xml pakotne. Tajā un tā apakšpaketēs ir visas Java API klases, kas saistītas ar apstrādi XML.
Lai klases sagrupētu paketē, katrai klasei ir jābūt paketes paziņojumam, kas definēts tā augšpusē.java fails. Tas ļauj kompilatoram zināt, kurai pakai klase pieder, un tai jābūt pirmās koda rindiņai. Piemēram, iedomājieties, ka veidojat vienkāršu Battleships spēli. Ir jēga visas nepieciešamās klases ievietot paketē ar nosaukumu kaujas kuģi:
Tur tiek glabātas visas klases, kas pieder šim pakotnei. Piemēram, ja kaujas kuģu komplektā ir klases GameBoard, Ship, ClientGUI, tad tur būs faili ar nosaukumu GameBoard.java, Ship.java un ClientGUI.java, kas tiek saglabāti direktorija zvanā kaujas kuģi.
Piemēram, pakotnes javax.xml nosaukums parāda, ka XML ir javax pakotnes apakšpakete. Ar to neapstājas, zem XML ir 11 apakšpaketes: saistīšana, šifrēšana, datu tips, nosaukumvieta, parsētāji, ziepes, straume, transformēšana, validācija, ws un XPath.
Failu sistēmas direktorijiem jāatbilst pakotnes hierarhijai. Piemēram, javax.xml.crypto pakotnes klases dzīvos direktorija struktūrā.. \ javax \ xml \ kriptonauda.
Bet, ciktāl tas attiecas uz kompilatoru, katrs iepakojums ir atšķirīgs klašu kopums. Tā neuzskata, ka apakšpakas klase ir daļa no vecāku paketes. Šī atšķirība kļūst redzamāka, kad runa ir par pakešu izmantošanu.
Programmatūras uzņēmumos un lielos projektos, kur paketes var importēt citās klasēs, nosaukumiem jābūt atšķirīgiem. Ja divās dažādās paketēs ir klase ar vienādu nosaukumu, ir svarīgi, lai nebūtu nosaukšanas konfliktu. Tas tiek darīts, pārliecinoties, ka pakotņu nosaukumi ir atšķirīgi, pirms to sadalīšanas slāņos vai funkcijās, paketes nosaukumu sākot ar uzņēmuma domēnu.