Ohjelmoijat ovat järjestetty joukko koodin kirjoittamisessa. He haluavat järjestää ohjelmansa siten, että ne kulkevat loogisesti, kutsuen erillisiä koodilohkoja, joista jokaisella on tietty työ. Heidän kirjoittamansa luokat järjestetään luomalla paketteja.
Paketin avulla kehittäjä voi ryhmitellä luokkia (ja rajapintoja) yhdessä. Nämä luokat liittyvät kaikki jollain tavalla - ne voivat kaikki liittyä tiettyyn sovellukseen tai suorittaa tietyt tehtävät. Esimerkiksi Jaava API on täynnä paketteja. Yksi niistä on javax.xml-paketti. Se ja sen osapaketit sisältävät kaikki Java API -sovelluksen käsittelyyn liittyvät luokat XML.
Luokkien ryhmittelemiseksi paketiksi jokaisella luokalla on oltava paketin käsky, joka on määritelty sen yläosassa.Java-tiedosto. Se antaa kääntäjälle tietää, mihin pakettiin luokka kuuluu, ja sen on oltava ensimmäinen koodirivi. Kuvittele esimerkiksi, että teet yksinkertaisen taistelulaivapelin. On järkevää laittaa kaikki tarvittavat luokat taistelulaivoihin:
Siellä kaikki pakettiin kuuluvat luokat tallennetaan. Esimerkiksi, jos taistelulaivapaketti sisältää luokkia GameBoard, Ship, ClientGUI, siellä ovat tiedostot nimeltä GameBoard.java, Ship.java ja ClientGUI.java, jotka tallennetaan hakemistopuheluun sotalaivoja.
Esimerkiksi javax.xml-paketin nimi osoittaa, että XML on javax-paketin osapaketti. Se ei lopu tähän, XML: ssä on 11 osapakettia: sidonta, salaus, tietotyyppi, nimitila, jäsentäjät, saippua, suoratoisto, muuntaminen, validointi, ws ja XPath.
Tiedostojärjestelmän hakemistojen on vastattava pakettihierarkiaa. Esimerkiksi javax.xml.crypto-paketin luokat elävät hakemistorakenteessa.. \ javax \ xml \ crypto.
Mutta kääntäjän kannalta jokainen paketti on erillinen luokka. Se ei näe alapakkauksen luokkaa osana sen emopakettia. Tämä ero tulee selvemmäksi pakettien käytön yhteydessä.
Ohjelmistoyrityksissä ja suurissa projekteissa, joissa paketit voidaan tuoda muihin luokkiin, nimien on oltava erottamiskykyisiä. Jos kaksi erilaista pakettia sisältää luokan samalla nimellä, on tärkeää, että nimeämisristiriitoja ei voi olla. Tämä tehdään varmistamalla, että pakettien nimet eroavat toisistaan, aloittamalla paketin nimi yrityksen toimialueella ennen jakamista tasoiksi tai ominaisuuksiksi: