Les fichiers sources contiennent une série d'instructions permettant de mettre en oeuvre un programme.

L'ensemble d'instructions se compose de la déclarations de paquetages, suivies des instructions d'importation et enfin des déclarations de classes et d'interfaces.

// fichier source : IdentificateurPrincipal.java
[package arborescence_paquetage;]

[import arborescence_paquetage.NomClasse;]
[...]
[import arborescence_paquetageN.NomClasseN;]

public modificateur class IdentificateurPrincipal {
  //Définition de la classe
}
[...]
[modificateur class IdentificateurN {
  //Définition de la classe N
}]
[modificateur interface IIdentificateur {
  //Définition de l'interface
}]
[...]
[modificateur interface IIdentificateurN {
  //Définition de l'interface N
}]

L'ordre de ces instructions doit obligatoirement suivre l'énumération précitée.

Toutefois, les instructions de paquetage et d'importation peuvent ne pas apparaître. Dans ce cas, cela signifie respectivement que Java s'occupera lui-même de déclarer un paquetage par défaut au fichier source et que ce dernier ne nécessite pas de classes importées pour être correctement compilé.

En ce qui concerne les déclarations de classes et d'interfaces, il est possible de ne définir au moins qu'une seule classe ou une seule interface dans le fichier source.

Une seule classe ou interface peut être déclarée à l'aide du modificateur d'accès public dans un fichier source.

De plus, le fichier source doit posséder exactement le même identificateur que la classe ou l'interface publique.
Par convention, le nom d'une interface commence par un I majuscule, le fichier source suivra la même direction.

Si d'autres classes évidemment non publiques sont déclarées dans un fichier source, elles ne pourront être utilisées que dans d'autres fichiers appartenant au même paquetage que leur propre fichier.

Par ailleurs, le nom du fichier source doit posséder l'extension .java. Après une compilation réussie, l'extension du nouveau fichier généré sera .class.

javac IdentificateurPrincipal.java
//La ligne de commande de compilation générera
//le fichier IdentificateurPrincipal.class