Embora Example.java seja bem curto, ele inclui vários recursos-chave que são co- muns a todos os programas Java. Examinemos com detalhes cada parte do programa.
O programa começa com as linhas a seguir:
/*
Esse é um programa Java simples.
Chame esse arquivo de Example.java. */
Isso é um comentário. Como a maioria das outras linguagens de programação, Java permite a inserção de uma observação no arquivo-fonte de um programa. O con- teúdo de um comentário é ignorado pelo compilador. Em vez disso, o comentário descreve ou explica a operação do programa para quem estiver lendo seu arquivo- -fonte. Nesse caso, ele está descrevendo o programa e lembrando que o arquivo- -fonte deve se chamar Example. java. É claro que, em aplicativos reais, geralmente os comentários explicam como alguma parte do programa funciona ou o que um recurso específico faz.
O comentário mostrado no início do programa se chama comentário de várias
linhas. Esse tipo de comentário começa com /* e termina com */. Qualquer coisa que
estiver entre esses dois símbolos de comentário será ignorada pelo compilador. Como o nome sugere, um comentário de várias linhas pode ter muitas linhas.
A próxima linha de código do programa é mostrada aqui:
class Example {
Essa linha usa a palavra-chave class para declarar que uma nova classe está sendo definida. Como mencionado, a classe é a unidade básica de encapsulamento de Java. Example é o nome da classe. A definição da classe começa com a chave de abertura ({) e termina com a chave de fechamento (}). Os elementos existentes entre as duas chaves são membros da classe. Por enquanto, não se preocupe tanto com os detalhes de uma classe; é preciso saber apenas que em Java toda a atividade do programa ocor- re dentro de uma. Essa é uma das razões por que todos os programas Java são (pelo menos um pouco) orientados a objetos.
A linha seguinte do programa é o comentário de linha única, mostrado aqui:
// Um programa Java começa com uma chamada a main().
Esse é o segundo tipo de comentário suportado por Java. Um comentário de linha única começa com // e termina no fim da linha. Como regra geral, os programadores usam comentários de várias linhas para observações mais longas e comentários de linha única para descrições breves, linha a linha.
A próxima linha de código é a mostrada abaixo:
public static void main (String[] args) {
Essa linha começa o método main( ). Como mencionado anteriormente, em Java, uma sub-rotina é chamada de método. Como o comentário que a precede sugere, essa é a linha em que o programa começará a ser executado. Todos os aplicativos Java começam a execução chamando main( ). O significado exato de cada parte dessa linha não pode ser fornecido agora, já que envolve uma compreensão deta- lhada de vários outros recursos da linguagem Java. No entanto, como muitos dos exemplos deste livro usarão essa linha de código, um resumo lhe dará uma ideia geral do que ela significa.
A linha começa com a palavra-chave public. Ela é um modificador de acesso. Um modificador de acesso determina como outras partes do programa podem acessar os membros da classe. Quando o membro de uma classe é precedido por public, ele pode ser acessado por um código de fora da classe em que foi declarado. (O oposto de public é private, que impede que um membro seja usado por um código defini- do fora de sua classe.) O método main( ) deve ser declarado como public porque é executado por um código de fora da classe Example. (Nesse caso, é o iniciador de aplicativos java que chama main( ).)
A palavra-chave static permite que main( ) seja executado independentemente de qualquer objeto. Isso é necessário porque main( ) é executado pela JVM antes de qualquer objeto ser criado. A palavra-chave void simplesmente informa ao compila- dor que main( ) não retorna um valor. (Como você verá, os métodos também podem retornar valores.) Se tudo isso parece um pouco confuso, não se preocupe. Todos esses conceitos serão discutidos com detalhes em capítulos subsequentes.
Como mencionado, main( ) é o método chamado quando um aplicativo Java começa a ser executado. Qualquer informação que você tiver que passar para um método será recebida por variáveis especificadas dentro do conjunto de parênteses que seguem o nome do método. Essas variáveis são chamadas de parâmetros. (Mesmo se nenhum parâmetro for necessário em um determinado método, você terá que incluir os parênteses vazios.) O método main( ) requer que haja um parâ- metro. Isso é especificado no programa Example com String args[ ], que declara um parâmetro chamado args. Ele é um array de objetos de tipo String. (Arrays são conjuntos de objetos semelhantes.) Os objetos de tipo String armazenam se- quências de caracteres. (Tanto os arrays quanto o tipo String serão discutidos com detalhes em capítulos subsequentes.) Nesse caso, args recebe qualquer argumen- to de linha de comando presente quando o programa é executado. O programa Example não usa argumentos de linha de comando, mas outros programas mos- trados posteriormente neste livro usarão.
O último caractere da linha é {. Ele sinaliza o início do corpo de main( ). Todo o código incluído em um método ocorrerá entre a chave de abertura do método e sua chave de fechamento.
A próxima linha de código é mostrada a seguir. Observe que ela ocorre dentro de main( ).
System.out.println("Java drives the Web.");
Essa linha exibe o string “Java drives the Web.” seguida por uma nova linha na tela. Na verdade, a saída é exibida pelo método interno println( ). Nesse caso, println( ) exibe o string que é passado para ele. Como você verá, println( ) também pode ser usado para exibir outros tipos de informações. A linha começa com System.out. Em- bora seja muito complicada para explicarmos com detalhes nesse momento, System, em resumo, é uma classe predefinida que dá acesso ao sistema, e out é o fluxo de saída que está conectado ao console. Portanto, System.out é um objeto que encapsula a saída do console. O fato de Java usar um objeto para definir a saída do console é mais uma evidência de sua natureza orientada a objetos.
Como você deve ter notado, a saída (e a entrada) do console não é usada com frequência em aplicativos Java do mundo real. Já que a maioria dos ambientes de computação modernos tem janelas e é gráfica, o I/O do console é mais usado para
programas utilitários simples, programas de demonstração (como os deste livro) e código do lado do servidor. Posteriormente, você aprenderá a criar interfaces gráficas de usuário (GUIs), mas, por enquanto, continuaremos a usar os métodos de I/O do console. Observe que a instrução println( ) termina com um ponto e vírgula. Todas as instruções em Java terminam com um ponto e vírgula. As outras linhas do programa não terminam em um ponto e vírgula porque, tecnicamente, não são instruções.
O primeiro símbolo } do programa termina main( ) e o último termina a defini- ção da classe Example.
Um último ponto: Java diferencia maiúsculas de minúsculas. Esquecer disso pode causar problemas graves. Por exemplo, se você digitar acidentalmente Main em vez de main, ou PrintLn em vez de println, o programa anterior estará incorreto. Além disso, embora o compilador Java compile classes que não contêm um método main( ), ele não tem como executá-las. Logo, se você digitasse errado main, o com- pilador compilaria seu programa. No entanto, o programa java relataria um erro por não conseguir encontrar o método main( ).
Verificação do progresso
1. Onde um programa Java começa a ser executado? 2. O que System.out.println( ) faz?
3. Qual é o nome do compilador Java? O que você deve usar para executar um programa Java?