«Hola, mi joven amigo. Espero que no hayas olvidado que soy un burócrata de 16.ª generación. Si no hubiera sistematizado todos mis conocimientos, nunca hubiera logrado lo que tengo. Estoy lleno de información útil. Voy a ayudarte con algunas tareas. Para empezar, déjame hablarte de un típico programa de Java».

«Te escucho».

«Dato número uno. Un programa Java se compone de clases. Cada clase se almacena en un archivo independiente, cuyo nombre coincide con el de la clase. La extensión del archivo es java».

«Entonces, un programa consta de una serie de archivos con la extensión “java”, cada uno de los cuales contiene el código de una sola clase, ¿cierto?».

«Totalmente cierto, Amigo. Si un archivo se llama MiGato.java, contiene la clase MiGato».

«Dato número dos. Cuando tenemos muchos archivos de clases, los agrupamos en carpetas y subcarpetas. Además, las clases se agrupan en paquetes y subpaquetes. Los nombres de los paquetes y subpaquetes deben indicarse en el código de las clases y, además, deben ser idénticos a los nombres de las carpetas y subcarpetas que hay en el disco».

«Por lo tanto, por una parte, tenemos archivos almacenados en carpetas y, por otra, clases almacenadas en paquetes. Un nombre de clase también debe coincidir con el nombre del archivo que describe esa clase. El nombre del paquete coincide con el de la carpeta donde se almacena la clase».

«¿Puedes contarme algo más sobre esto?».

«Los nombres de los paquetes anidados se dividen mediante puntos, de forma similar a las URL».

«En otras palabras, supón que tienes una clase llamada Gato, almacenada en un paquete animales.mascotas ¿Qué significa eso?

El disco duro tiene alguna carpeta (la llamaremos src) donde se almacenan todos los archivos del proyecto.

Contiene una carpeta llamada animales, que a su vez contiene una subcarpeta mascotas.

La carpeta mascotas contiene un archivo Gato.java, que a su vez contiene el código de la clase Gato».

«No estoy muy seguro de entenderlo».

«Mira. La estructura de las clases y los paquetes refleja la estructura de carpetas y archivos en el disco. Si tenemos un archivo llamado Hogar.java, almacenado en la carpeta src/com/hogares, entonces hay una clase llamada Hogar almacenada en el paquete com.hogares».

«Ya lo entiendo».

«Parece que lo estás cogiendo bastante rápido. Mira la pantalla. Este es el código de una clase pequeña. He marcado las partes clave».

        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 COMMENT      
      System.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 DECLARATION                                      
      String s = "Ho-ho-ho!";                                   
      METHOD CALL                                               
      printTextMoreTimes(s, 3);                                 
   }                                                            
                                                                
                                          METHOD PARAMETERS   
   public static void printTextMoreTimes(String s, int count) ⎥ METHOD SIGNATURE
                                                            
                                                                
   {                                                            
      LOOP                                                      
      for (int i = 0; i < count; i++)                           
      LOOP BODY                                                 ⎥ METHOD BODY/CODE
      {                                                         
         System.out.println(s);                                 
      }                                                         
   }                                                            

}

«Bueno, está todo lo claro que cabría esperar después de una sola explicación».

«¡Vale! No necesitamos más. Intenta solo entender alguna cosa. Ya lo comprenderás por completo con el tiempo. Ahora voy a descansar un rato. Otra persona seguirá con tu formación».