"Olá, meu jovem amigo. Espero que você não tenha esquecido que eu sou um burocrata de 16ª geração. Se eu não tivesse sistematizado todo o meu conhecimento, eu nunca teria chegado aonde cheguei. Eu tenho muitas informações úteis. Eu vou ajudar você com algumas tarefas. Para começar, quero falar um pouco sobre um típico programa em Java."

"Estou ouvindo."

"Fato número um. Um programa em Java consiste em classes. Cada classe é armazenada em um arquivo individual, cujo nome coincide com o nome da classe. A extensão do arquivo é java."

"Então, um programa consiste em uma série de arquivos com a extensão 'java', e cada arquivo contém o código de apenas uma classe, não é?"

"Corretíssimo, Amigo." Se um arquivo se chamar MeuGato.java, deve conter a classe MeuGato."

"Fato número dois. Quando temos muitos arquivos de classes, agrupamos todos em pastas e subpastas. Além disso, as classes são agrupadas em pacotes e subpacotes. Os nomes dos pacotes e subpacotes devem ser indicados no código da classe e devem ser idênticos aos nomes das pastas e subpastas no disco."

"Dessa forma, temos de um lado os arquivos armazenados em pastas e, do outro, as classes armazenadas em pacotes. Um nome de classe também deve ter o mesmo nome do arquivo que descreve a classe. O nome do pacote é o mesmo nome da pasta onde a classe é armazenada."

"Você pode dar mais detalhes?"

"Os nomes dos pacotes aninhados são divididos por pontos, quase como URLs."

"Em outras palavras, suponha que você tenha uma classe chamada Gato, armazenada em um pacote animais.estimacao. Isso significa:

No disco rígido há uma pasta (que vamos chamar de src) onde todos os arquivos do projeto são armazenados.

Ela contém outra pasta chamada animais, que por sua vez tem uma subpasta estimacao.

A pasta estimacao contém um arquivo Gato.java, que por sua vez contém o código da classe Gato."

"Não tenho certeza se entendi."

"Veja. A estrutura de classes e pacotes é um espelho da estrutura de pastas e arquivos no disco. Se tivermos um arquivo chamado Casa.java armazenado na pasta src/com/casas, então haverá uma classe Casa armazenada no pacote com.casas."

"Entendi."

"Você parece estar aprendendo isso bem rápido. Olhe para a tela. Este código é de uma classe pequena. Eu destaquei as partes principais:"

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);}}                                                            ⎥
                                                                ⎦
}

"Ficou muito claro mesmo depois de só uma explicação."

"Que bom! É só o que precisamos. Tente entender só uma coisa. A compreensão completa virá com o tempo. Agora, eu vou fazer uns Zs. Outra pessoa vai continuar o seu treinamento."