Javassa voidaan joukko luokkia kerätä eli paketoida loogisiksi kokonaisuuksiksi. Pakettiin voidaan koota mielivaltainen määrä luokkia joko loogisen yhteenkuuluvuuden tai periytyvyyden tai näkyvyyden takia. Näkyvyydellä tarkoitetaan, että luokan jäsenmuuttujat tai metodit ovat toisen luokan käytössä. Pakettien avulla luokkien näkyvyyttä muille luokille voidaan rajoittaa. Täydennyksenä, mitä on mainittu muodostinten yhteydessä, todetaan että oletuksena ilman muodostinta luokat näkyvät vain kaikille samaan pakettiin kuuluville luokille. Public sallii luokkaa käytettävän myös paketin ulkopuolella. Eri paketeissa saa olla saman nimisiä luokkia ilman että nimet menevät sekaisin. Esimerkiksi paketissa A voi olla luokka omena ja paketissa B luokka omena. Oletuksena luokkia haetaan samasta kansiosta, missä main -metodi sijaitsee. Muut paketit on tuotava import -komennolla.
Paketit voivat sisältää paketteja itsessään. Suuria pakkettileegiota sanotaan myös lyhykäisyydessään paketiksi. Tälläisiä ovat java -kirjastot itsessään. Ylin pakettitaso on java, sitten tulee taso io, net, util ja awt jne.. ja sitten alimman tason pakettia kuvaava nimi. Voit tarkistaa itse java -paketin rakenteen. Kansiossa .../src on paketit java, sun ja sunw. Kansiossa java on mm. edellä olevat paketit ja esim. paketissa io löytyy BufferedOutputStream.java, jossa ensimmäisellä suorittavalla rivillä lukee package java.io; Tämä ilmoittaa, mihin pakettiin luokka BufferedOutputStream kuuluu.
Paketteja käytetään viittaamalla metodikutsussa koko luokan nimeen (Esim Math.abs() ) java.lang -paketti on aina käytössä ilman erillistä mainintaa. Tätä käytetään erityisesti luokkametodien yhteydessä (metodi, jonka edessä on static -muunnin. Tällöin luokan nimi kirjoitetaan isolla). Toinen tapa on tuoda paketti ohjelmaan import -kutsulla. Siinä nimi voidaan kirjoittaa kokonaisuudessaan (esim. import java.util.Vector) tai korvata viimeinen nimi tähdellä (esim. import java.util.*). Tuotaessa paketteja ohjelmaan, tulee pitää huoli, etteivät ne sisällä samannimisiä luokkia. Katso pakettien sisällöt tarpeen mukaan Sun -yhtiön www - sivulta.
Paketin luominen tapahtuu seuraavasti
classpath = .;c:\jdk1.2\lib;c:\javapaketit;\c:\apuOhjelmat\matematiikka
piste on sen takia, että paketteja etsitään aluksi samasta hakemistosta, missä käännettävä tiedosto on. Javan kääntäjän optioilla voi oletuksia muuttaa.