Un progetto Java dispone di un generatore Java associato in grado di compilare in modo incrementale i file di origine Java man mano che questi vengono modificati. Ciascun progetto Java conserva informazioni aggiuntive riguardo alla gerarchia dei tipi, ai riferimenti e alle dichiarazioni di elementi Java. Tali informazioni vengono costantemente aggiornate quando l'utente modifica il codice sorgente Java e non dipendono dal generatore.
È possibile organizzare progetti Java in due modi diversi.
In questo modo, tutti i pacchetti Java vengono creati direttamente all'interno del progetto. Questa rappresenta l'organizzazione consigliata per progetti semplici. I file CLASS generati vengono memorizzati insieme ai file di origine JAVA.
In questa organizzazione, i pacchetti non vengono creati direttamente all'interno del progetto ma in cartelle di origine. È possibile creare cartelle di origine come elementi secondari del progetto e creare i propri pacchetti all'interno di tali cartelle.
Questa rappresenta l'organizzazione consigliata per progetti più complessi. Ciò perché consente di suddividere i pacchetti in gruppi.