O básico de Java

O berço da linguagem Java é também um projeto da Sun Microsystems, de 1991, chamado de Projeto Green que era um projeto sobre software para produtos eletrônicos de consumo. Objetivava-se que os eletrônicos tivessem um software embarcado que possibilitasse o seu controle via rede de computadores e uma maior interatividade com o usuário.

A linguagem de programação utilizada neste aparelhos deveria proporcionar uma série de benefícios, entre eles a portabilidade, ou seja, um mesmo programa deveria poder ser executado em várias plataformas diferentes de hardware, a eficiência e a perspectiva de vida longa, o que, em outras palavras, pode significar compatibilidade retroativa, ou melhor, os velhos programas deveriam funcionar em plataformas novas.

Assim nasceu Java, uma linguagem sem nome de início e que foi chamada pelo apelido de café que os desenvolvedores da Sun habituavam-se a beber enquanto trabalhavam em projetos para este fim.

Java foi lançada oficialmente pela Sun em 1996 que disponibilizou interpretadores e compiladores de bytecode, um código intermediário entre o código fonte e o código executável. Veremos este conceito de bytecode mais a frente.

Características de Java

  • Write onde, run everywhere
    Escreva uma vez e execute em qualquer lugar. Este é o motor de Java, o que impulsionou a linguagem, a característica de compatibilidade do código Java com qualquer hardware. A promessa que navegadores web, telefones, PDAs e outros aparelhos eletrônicos pudessem executar um mesmo código fonte Java ajudou a popularizar a linguagem e atrair novos programadores;
  • Web programming
    A Sun fez um prognóstico arrojado para a época afirmando que a web era um computador logo, deveriam existir ferramentas para `programar' este novo dispositivo, a rede. A arquitetura cliente/servidor é algo quase que natural em Java;
  • Segurança
    Permite que usuários utilizem softwares seguros que foram copiados da web;
  • Programação dinâmica e extensível
    A programação Java é baseada integralmente em POO, ou seja, é baseada na descrição de classes. Para conceitos novos, tarefas novas, cria-se uma nova classe ou, faz-se a manutenção ou incrementa-se classes antigas;
  • Eficiência na codificação
    Com a utilização de classes a programação pode tornar-se mais eficiente já as chances de rescrever software inédito torna-se menor, ou seja, sempre existirá uma classe que faz aquilo que o programador deveria implementar.
  • Outras características

    Compilada ou interpretada

    As linguagens de programação, na sua maioria, ou são compiladas ou interpretadas. Com Java acontecem as duas transformações: o código fonte Java é inicialmente compilado produzindo um código intermediário chamado Java bytecode conhecido por aquivos com a terminação .class; só então um interpretador faz um parse (tradução) e executa o Java bytecode. Veja um diagrama na Figura abaixo:

    Todo interpretador Java, independentemente da plataforma ou do software em que se insere, é conhecido como uma Java Virtual Machine, JVM. Veja a Figura abaixo que ilustra este processo de compilação e interpretação.

    Isto garante que todo hardware que executa uma JVM pode execuxtar um mesmo código fonte escrito em Java. A Figura abaixo ilustra esta situação.

    Plataforma

    Mas enfim, o que é plataforma?
    Uma plataforma é o hardware ou o software em que um sistema, um programa, é executado. Atualmente este termo é mais utilizado para o conjunto de hardware e software.

    A realidade da plataforma Java, no entanto, é um pouco diferente pois é entendida como uma plataforma só de software, composta pela JVM e pela Java API, Java Application Programming Interface. A Java API é um conjunto de componentes de software prontos para serem usados. Em Java existem APIs para uma variedade de aplicações, desde tratamento de recursos gráficos, a métodos para comunicação em redes, funções matemáticas, enfim, existem muitas APIs.
    Aliás, uma das idéias fundamentais da linguagem é incrementar este conjunto a medida que for necessário. Veja a Figura abaixo:

    Tecnologias Java

    Quem visita o site da Sun percebe que existem várias tecnologias Java disponíveis. São estas as principais:

    A linguagem também permite a criação de diferentes tipos de programas, entre eles:

    A Figura abaixo resume algumas das características e potencialidades de Java. Para SDK entende-se como Standard Developement Kit que é todo o conjunto de APIs, o compilador, o interpretador, o depurador, o gerador de documentação javadoc, entre outros, enfim, um conjunto de ferramentas para trabalhar na linguagem para a construção de um ambiente de software. Por JRE entende-se a JVM.

    Um primeiro código Java

    /** 
     * A classe OlaMundo implementa um codigo que
     * escreve "Hello world!" no terminal.
     */
    class OlaMundo 
    {
        public static void main(String[] args) 
        {
            //Mostra a string
            System.out.println("Hello world!"); 
        }
    }
    

    Agora vamos dissecar este código Java:

    Convenções

    Usaremos algumas convenções para escrever códigos fonte Java. São elas:

    Tabulação e colchetes

    Podemos também seguir a convenção abaixo para tabulação e colchetes que é um pouco diferente da preconizada pela litaratura mas talvez seja mais adequada aos iniciantes na linguagem.

    /** 
     * comentarios
     * 
     */
    class NomeClasse 
    {
        comandos_e_declaracoes;
        void metodo(parametros_entrada) 
        {
            declaracoes;
            comandos
        }
    }
    

    Vamos fazer mais um teste

    /** 
     * A classe Saudacao
     */
    public class Saudacao 
    {
        String oquedizer;
        
        public Saudacao()
        {
            oquedizer="Ooooi!";
        }
        
        public void formal()
        {
            oquedizer="Bom dia!";
        }
        
        public void sauda()
        {
            System.out.println(oquedizer);
        }
        
        public static void main(String[] args) 
        {
            Saudacao fala1;
            
            fala1 = new Saudacao(); // instanciou
            
            fala1.sauda();
            
            fala1.formal();
            fala1.sauda();
        }
    }
    

    Principais pontos

    Dividindo o código fonte

    No exemplo anterior, a classe Saudacao contém a operação main() que é a responsável pela execução da parte do código que instancia a classe.

    Para ficar mais didático, propomos a divisão do código fonte anterior em dois arquivos. Lembrando que cada arquivo deverá ter o mesmo nome da classe mais a extensão .java.

    Vejamos o que deverá ser o arquivo Saudacao.java:

    /**
     *Cria objeto que saude, cumprimenta
     */
    public class Saudacao 
    {
        String oquedizer;
        
        public Saudacao()
        {
            oquedizer="Ooooi!";
        }
        
        public void formal()
        {
            oquedizer="Bom dia!";
        }
        
        public void sauda()
        {
            System.out.println(oquedizer);
        }
        
     }
    

    E agora o arquivo ExeSauda.java que contém a definição da classe de mesmo nome e nesta a operação main().

    /** Executa o objeto instanciado atraves
     * de Saudacao.java
     */
    public class ExeSauda
    {
       public static void main(String[] args) 
        {
            Saudacao fala1;
            
            fala1 = new Saudacao(); // instanciou
            
            fala1.sauda();
            
            fala1.formal();
            fala1.sauda();
        }
    }
    

    Pergunta: Quem instancia a classe ExeSauda?

    Resposta: A máquiva virtual Java, chamada atavés da linha de comando java.

    Estudem, analisem, implementem e executem os arquivos acima.

    Atividades

    1. Leia atentamente este Capítulo e procure comparar os recursos desta linguagem com a linguagem C;
    2. Procure fazer seguir a trilha The First Cup of Java no site da Sun;
    3. Edite, compile e simule erros com os códigos deste capítulo;
    4. Execute o javadoc sobre o último código fonte Java deste capítulo e repare quantos arquivos HTML ele gerou. Use um navegador web para ler o arquivo index.html.
    Última modificação feita em: 16 de agosto de 2008
    Evandro Eduardo Seron Ruiz, PhD (evandro at usp ponto br)
    www.imagcom.org/evandro/