"Hallo jonge vriend", zei Rishi. "Hopelijk ben je niet vergeten dat ik een 16e generatie Bureaucraat ben, met een hoofdletter B. Als ik geen systeem had aangebracht in alle kennis die ik heb verworven, had ik nooit kunnen bereiken wat ik allemaal bereikt heb. Ik zit tjokvol belangwekkende informatie, allemaal heel systematisch ingedeeld. Ik ga je nu helpen met een paar taken. Laat ik je om te beginnen iets meer vertellen over een typisch Java-programma."

"Ik luister."

"Feit nummer één. Een Java-programma bestaat uit klassen. Elke klasse wordt opgeslagen in zijn eigen bestand. Dat bestand heeft dezelfde naam als de klasse die erin is opgeslagen. De bestandsextensie is java."

"Dus een programma bestaat uit een aantal bestanden met de extensie 'java', en elk bestand bevat alleen maar de code voor één klasse. Klopt dat?"

"Helemaal goed, Amigo. Als een bestand MyCat.java heet, bevat het de klasse MyCat.

Feit nummer twee. Als er veel klassebestanden zijn, groeperen we die in mappen en submappen. Verder is het zo dat klassen worden gegroepeerd in pakketten en subpakketten. De namen van de pakketten en subpakketten moeten worden vermeld in de programmacode van de klasse, en ze moeten gelijk zijn aan de namen van de mappen en submappen op de harde schijf.

Dus we hebben aan de ene kant bestanden die in mappen worden opgeslagen, en aan de andere kant klassen die worden opgeslagen in pakketten. De naam van een klasse moet hetzelfde zijn als de naam van het bestand waarin de klasse wordt gedefinieerd. En de naam van het pakket waar een klasse uit afkomstig is, moet hetzelfde zijn als de naam van de map waarin de klassebestand is opgeslagen."

"Kun je daar nog iets meer over vertellen?"

"De namen van geneste pakketten, dat zijn de subpakketten die deel uitmaken van andere pakketten, worden van elkaar gescheiden door punten – een beetje zoals bij de URL van een website.

Dus stel dat je een klasse hebt die Kat heet en deel uitmaakt van het pakket dieren.huisdieren. Dan komt het hier op neer:

Er is een basismap op de harde schijf (die map noemen we src) waarin alle bestanden van het Java-project worden opgeslagen.

De src-map bevat een map die dieren heet, en in die map zit weer een submap met de naam huisdieren.

In de map huisdieren zit het bestand Kat.java, dat de code bevat voor de klasse Kat."

"Ik geloof niet dat ik het helemaal begrijp..."

"Kijk. De structuur van de klassen en de pakketten is hetzelfde als de structuur van de bestanden en de mappen op de harde schijf. Als we een bestand genaamd Huis.java hebben in de map src/com/huizen, dan is er een klasse die huis heet en deel uitmaakt van het pakket com.huizen."

"Nou snap ik het."

"Je pakt het allemaal lekker snel op, merk ik. Kijk eens naar het scherm. Dit is code voor een kleine klasse. Ik heb de belangrijkste onderdelen aangegeven.

PACKAGE NAME
package com.futujava.lesson2;
import java.io.IOException;
/**
 * User: General
 * Date: 12/21/12
 * Time: 11:59
 */
             CLASS NAME
public class Task1
{private static String TEXT = "Kiss my metal rear actuator";CLASS VARIABLE
                                                              ⎦
                                                                ⎤
   public static void main(String[] args) throws IOException{SCREEN OUTPUT                    SINGLE-LINE COMMENTSystem.out.println(TEXT); //Display a single string       ⎥
        MULTILINE COMMENT/*                                                        ⎥
        This is a multiline comment.                            ⎥
        The code below will display three identical strings.    ⎥ main() METHOD
       */VARIABLE DECLARATIONString s = "Ho-ho-ho!";METHOD CALLprintTextMoreTimes(s, 3);}                                                            ⎥
                                                                ⎦
                                          METHOD PARAMETERSpublic static void printTextMoreTimes(String s, int count)METHOD SIGNATURE
                                                              ⎦
                                                                ⎤
   {LOOPfor (int i = 0; i < count; i++)LOOP BODYMETHOD BODY/CODE
      {System.out.println(s);}}                                                            ⎥
                                                                ⎦
}

"Nou, het is me zo duidelijk als het maar kan zijn, na één keer uitleggen."

"Goed zo! Dat is voorlopig al genoeg. Probeer eerst maar de algeme structuur een beetje te begrijpen, zonder op alle details te letten. De details worden na verloop van tijd vanzelf duidelijk. Nou, het is tijd voor mijn middagdutje. Iemand anders komt zometeen om je de volgende les te geven."