Curso Java - Básico - Java Básico

Executáveis Java

  • Java é uma linguagem interpretada por uma máquina virtual.
  • O código é representado por um conjunto de arquivos com extensão class.
  • Um destes arquivos contém o ponto de entrada do programa.

Aplicativos Java

  • Aplicativos Java são programas equivalentes a outro feito em qualquer linguagem.
  • São usados como aplicativos desktop.
  • Servidores de sistemas cliente/servidor que tenham um outro aplicativo ou applet como cliente.
  • Executam em qualquer plataforma que disponham de uma máquina virtual Java.
  • Podem ser atualizados dinamicamente, mesmo durante a execução, a partir do sistema local ou qualquer outro hospedeiro fornecido.

Exemplo Aplicativo Java (2)

  • Uma classe define um tipo de dados. Esta classe representa objetos que guardam um texto (tipo String) em um atributo (msg) publicamente acessivel.
  • Alem de guardar um String, retorna o texto em caixa-alta atraves do metodo lerNome().

    ./images/exemplo_java_app_2_1.jpg

  • Esta outra classe usa a classe anterior para criar um objeto e usar os membros visíveis através de sua interface pública. Pode alterar ou ler o valor do atributo de dados msg. Pode chamar o método lerNome() e usar o valor retornado

    ./images/exemplo_java_app_2_2_sem_args.jpg

  • Declaracao do metodo main()

    ./images/exemplo_java_app_2_main.jpg

    • O metodo main() é chamado pelo interpretador Java, automaticamente.
    • Deve ter sempre a assinatura (cabeçalho) acima.
    • O argumento é um vetor formado por textos passados na linha de comando.

      ./images/exemplo_java_app_2_main_3.jpg

Exemplo Aplicativo Java - Interface Gráfica

  • A aplicacao abaixo cria um objeto do tipo JFrame (da API Swing) e reutiliza a classe Mensagem

    ./images/exemplo_java_app_GUI.jpg

Applets Java

  • Executam a partir de um browser para WEB.
  • Utilitários e animação para home pages, interfaces cliente, apresentações on-line.
  • Applets Java são apropriadas para utilitários que prescindem de instalação.
  • São usados para sistemas em rede ampla.
  • Aplicativos cliente com grande processamento local ou que precisem de atualizações constantes.
  • Desvantagens:
    • Necessitam de um browser que suporte a versão Java em que foi compilado.
    • Impõe restrições de segurança quanto a interação com o sistema local.

Construindo um Applet

  • Para construir um applet é necessário criar tanto uma página html como um programa java. A página html deve definir uma ou mais tags específicas para Applets.

    ./images/applet.jpg

  • O programa java deve definir uma classe que herda de java.awt.Applet ou javax.swing.JApplet
  • O browser interage com o applet invocando um conjunto de métodos.

    ./images/applet2.jpg

  • O primeiro método a ser invocado é o init que é equivalente ao construtor de um applet.
  • Logo após o o applet ser carregado, depois do init, ou toda vez que o usuário reentra na página do applet, o start é invocado.
  • Quando o usuário deixa a página o método stop é invocado.
  • Toda vez que a tela do applet precisa ser refrescada, o paint é invocado para redesenhar o conteúdo apresentado.
  • O destroy é chamado quando o applet é descarregado da memória.

Exemplo Applet

  • A classe abaixo implementa um JApplet

    ./images/exemplo_java_applet.jpg

  • A seguinte página carrega o Applet acima:

    ./images/exemplo_java_applet_2.jpg

Desenvolvimento de Sistemas Java

  • Para desenvolver sistemas em Java é necessário usar o JDK.
  • O JDK contém um conjunto de ferramentas para desenvolver, configurar, testar e executar sistemas Java.
  • O JDK é distribuído por vários fabricantes, puro ou embutido em ambientes de desenvolvimento.

Versões

  • Desde o lançamento do primeiro JDK, em 1995, várias versões já surgiram. As principais são:
    • JDK 1.0.2 - essa foi a versão mais difundida, e a última, entre as versões 1.0, e é a versão que está embutida nos browsers mais antigos. Hoje em dia só é usada quando se procura compatibilidade com esses browsers antigos.
    • JDK 1.1 - incorporou uma grande quantidade de funcionalidades, entre elas algumas das mais importantes são: Java RMI, JavaBeans, novo modelo de eventos, JDBC.
    • JDK 1.1.6 - incorporou ao JDK uma série de melhorias de performance (com a inclusão de um JIT), e estabilidade. A maioria dos pacotes comerciais que são baseados em Java 1.1 exigem pelo menos a versão 1.1.6 ou acima.
    • JDK 1.2 - nesta versão ocorreram várias melhorias e a incorporação de uma grande quantidade de funcionalidades. É um marco, pois foi renomeada para Java 2 Standard Editon Software Development Kit v1.2

      -Java 2 - nesse momento foi considerado que a plataforma Java tinha atingido uma maturidade e uma evolução suficiente para ser realizada uma troca de nome. O que aconteceu na verdade é que foi dado um nome para as versões da Tecnologia Java. Antes, as versões da tecnologia eram confundidas com as versões de um produto (o JDK), já que não havia outra forma de identificá-las. Portanto não só foi anunciado que aquele que seria o JDK 1.2 seria renomeado para SDK 1.2, mas tembém foi anunciada a divisão da plataforma em 3 plataformas básicas, de forma a permitir a inclusão de tecnologias pertinentes:

      • Java 2 Micro Edition (J2ME) - a plataforma Java voltada para pequenos devices (telefones celulares, agendas eletrônicas, televisores, aparelhos eletrônicos em geral)
      • Java 2 Standard Edition (J2SE) - a plataforma voltada para aplicações cliente (equivalente ao antigo JDK). Essa é a plataforma que será encontrada nos browsers web e instalada nos sistemas operacionais que já incluírem a plataforma Java
      • Java 2 Enterprise Edition (J2EE) - essa é a plataforma Java para desenvolvimento e execussão de aplicações servidoras. Possui todo o suporte para desenvolver aplicações robustas e escaláveis, para suportar grandes números de usuários. Os servidores de aplicação implementam essa plataforma
    • Java 2 Standard Edition SDK v1.4.2 - Versão mais estável atualmente
    • Java 2 Standard Edition SDK v1.5 - Versão mais atual

O Java Runtime Environment

  • Enquanto o JDK é o ambiente voltado para os desenvolvedores, o Java Runtime Environment (JRE) é basicamente composto da Máquina Virtual Java (JVM) e o conjunto de bibliotecas, ou seja, tudo o que você precisa para executar aplicações Java.
  • Entre os atrativos do JRE esta o Java Plugin. Desde a versão 1.2 (Java 2) que o JRE já traz embutido o Java Plugin, a JVM que substitui a JVM dos browsers web e permite com que mesmo versões mais antigas de browsers suportem aplicações Java 2. Ao instalar o JRE, você ja estara instalando o Java Plugin, automaticamente.
  • Como a JVM é necessária para executar aplicações Java, o JRE pode ser distribuido a vontade, podendo inclusive ser embutido na sua aplicação Java (o JDK e o SDK não podem ser distribuidos junto da sua aplicação).
  • As versões do JRE seguem exatamente as mesmas versões do JDK, e portanto ao desenvolver uma aplicação com uma versão do JDK você deverá utilizar preferencialmente a mesma versão do JRE para executá-la.

Requerimentos para o Uso do JDK

  • É necessário se ter uma plataforma para qual o JDK tenha sido portado.
  • O editor de textos de sua preferência ou um ambiente adaptado para Java.
  • Composto de:
    • Ferramentas: Javac, java, javah, javap, javadoc.
    • Bibliotecas Padrão (dependendo da plataforma):
      • java.lang: classes fundamentais - importado automaticamente.
      • java.util: classes utilitarias.
      • java.io: classes para entrada e saida.
      • java.net: classes para uso em rede (TCP/IP).
      • java.sql: classes para acesso via JDBC.
      • java.awt: interface grafica universal nativa.
      • javax.swing: interface grafica independente de plataforma.
      • java.text: internacionalizacao, transformacao e formatacao de texto

Instalação (1)

  • O JDK pode ser obtido através de download da Sun ou espelhos.
  • A Sun o disponibiliza em seu site na Internet (java.sun.com).
  • A documentação também encontra-se na Internet (java.sun.com/j2se/docs).
  • Deve-se escolher a plataforma : Windows, Solaris, Linux, MacOs.
  • Pode-se baixar também somente o JRE (Java Runtime Envioriments) para instalacão cliente.
  • O arquivo baixado é um executável que se instala automaticamente.

Como compilar - Javac

  • Para se obter um código executável Java (bytecode) é necessário usar o compilador javac:
    • javac [ opções ] arquivos.
    • EX: javac NomeDaClasse.java
  • Os arquivos devem ter a extensão .java e conter comandos java em texto puro ASCII.
  • Principais opções:
    • -classpath: conjunto de diretórios separados por ; ou : (unix) onde estão as classes já compiladas.
      • EX:
              
        javac -classpath c:\fontes *.java
        
            
    • -d: diretorio onde serao armazenadas as classes (arquivos .class).
      • EX:
              
        javac -d ../destino Um.java Dois.java
        
        javac -d ../destino *.java
        
        javac -classpath c:\fontes -d ../destino *.java
        
            
    • -sourcepath diretorios onde estao as fontes
    • Para conhecer outras opcoes do compilador, digite javac sem argumentos.
    • Compiladores de outros fabricantes (como o Jikes,da IBM) que tambem podem ser usados

Erros de Compilação

  • E importante aprender a identificar a causa das mensagens de erro do compilador.
    • Leia a mensagem.
    • Identifique a linha onde o erro foi detectado.
  • Mensagens comuns:
    • Cannot resolve symbol:
      • compilador e incapaz de localizar uma definicao do simbolo encontrado.Causas comuns:

        -Erro de sintaxe ou variavel/metodo nao declarado.

        -Classe usada nao possui variavel, metodo ou construtor.

        -Numero ou tipo de argumentos do metodo ou construtor incorretos.

    • class Hello is public, should be declared in a file named Hello.java:
      • nome do arquivo tem que ser igual ao nome da classe publica:

        -Nome tem que ser Hello.java.

        -O nome hello.java causa este erro porque o "h" esta minusculo..

Como executar - Interpretador Java

  • Aplicativos Java são executados passando os arquivos bytecode (.class) para o interpretador java:
    • java [opções] arquivoclassesemextensão [argumentos para o programa]
    • EX:
            
      java NomeDaClasse
      
      java pacote.subpacote.NomeDaClasse
      
          
  • O arquivo com a extenção class deve ter sido gerado pelo compilador javac e deve conter uma classe que implemente o método main.
  • Os argumentos são passados como parâmetros do método main.
  • Principais opções:
    • -classpath ou -cp : conjunto de diretórios separados por vírgula ou dois pontos (unix) onde estão as classes já compiladas.
            
                              java -classpath c:\classes;c:\bin;. pacote.Classe
      
                              java -cp %CLASSPATH%;c:\mais pacote.Classe
      
                              java -cp %CLASSPATH%;c:\executavel.jar pacote.Classe
      
          
    • -ms initmem[k|m]: espaço de memória inicialmente alocado para o programa.
    • -mx maxmem[k|m]: espaço de memória máximo alocado para o programa.
    • -jar executa aplicacao executavel guardada em JAR
      • EX:
              
                                        java -jar executavel.jar
        
            
    • -Dpropriedade=valor define propriedade do sistema (JVM)

Erros de execucao

  • Alguns e possiveis causas:
    • Exception in thread "main":NoClassDefFoundError:Classe:a classe

      -"Classe" nao foi encontrada no CLASSPATH.

      -Causas comuns:

      • O CLASSPATH nao inclui todos os diretorios requeridos.
      • O nome da classe foi digitado incorretamente ou requer pacote.
    • Exception in thread "main": NoSuchMethodError: main:

      -o sistema tentou chamar main() mas nao o encontrou.

      -Causas comuns:

      • A classe nao tem metodo main() (nao é executavel).
      • Assinatura esta correta: public static void main(String[])?
    • ArrayIndexOutOfBoundsException:

      -programa tentou acessar vetor além dos limites definidos.

      -Causas comuns:

      -Aplicacao requer argumentos de linha de comando.

      -Erro de logica com vetores.

    • NullPointerException:

      -referência para objeto é nula.

      -Variável de tipo objeto foi declarada mas nãoo inicializada

Jar

  • Com o utilitário jar pode-se criar um arquivo comprimido contendo as classes a serem usadas na execução.
  • Com as classes comprimidas em um arquivo acelera a carga do programa.
  • Um ou mais arquivos jar podem ser colocados em um parâmetro classpath.
  • Um arquivo manifesto é gerado automaticamente contendo informações sobre o arquivo compactado.
  • Este manifesto pode conter assinaturas digitais, indicar a classe principal, ter links para outros jar’s.
  • Linha de Comando:
    • jar ctxu [vfm0M] [arquivojar] [manifesto] [-C dir] arquivos
  • Principais opções:
    • -c cria um novo arquivo
    • -t lista a tabela de conteúdo do arquivo
    • -x extrai um arquivo discriminado ou todos
    • -u atualiza o arquivo
    • -v descreve verbosamente o que está fazendo
    • -f especifica o nome do arquivo comprimido
    • -m inclui o arquivo manifesto discriminado
    • -0 não usa compressão ao arquivar
    • -M não cria arquivo manifesto (default cria)
    • -C troca para o diretório discriminado e adiciona o arquivo

Comentarios

  • Há duas formas de incluir comentários em um arquivo Java.

    ./images/comentarios.jpg

  • O javadoc processa apenas comentários de documentação para membros de classe declarados como public ou protected. Comentários em membros do tipo private ou friendly serão ignorados, se não forem explicitados no comando javadoc.
  • Há duas maneiras de se trabalhar com o javadoc:
    • embutindo-se código HTML;
    • usando tags de documentação.
  • Antes de metodos, construtores, campos de dados e classes, o comentario de bloco iniciado com /** pode ser usado para gerar HTML em documentacao.
  • A ferramenta (JavaDoc) que gera automaticamente documentacao a partir dos arquivos .java relaciona e descreve classes, metodos, etc e cria referencias cruzadas.
  • Descricoes em HTML podem ser incluidas nos comentarios especiais /**...*/

Geração da Documentação

  • Para gerar documentacao de um arquivo ou de uma colecao de arquivos .java use o javadoc:
    • javadoc arquivo1.java arquivo2.java
  • O programa criara uma colecao de arquivos HTML, interligados, entre eles estarao
    • indice de referencias cruzadas. **uma pagina para cada classe, com links para cada metodo, construtor e campo publico, contendo descricoes (se houver) de comentarios /**..*/

Documentação

  • Aprender a usar a documentacao e essencial para quem deseja desenvolver aplicacoes em Java
  • A documentacao da linguagem, ferramentas e API e um download separado do SDK
  • Para instalar a documentacao Java, abra o arquivo ZIP na raiz da sua instalacao Java
  • A documentacao sera instalada abaixo do subdiretorio docs/da instalacao Java ($JAVA_HOME)
          
                    %JAVA_HOME%\docs\ (ex: c:\jdk1.4.0\docs/)
    
                    $JAVA_HOME/docs/(ex:/usr/java/j2sdk1.4.0/docs/)
    
        
  • A documentacao da API Java esta em
          
                    $JAVA_HOME/docs/api/index.html
    
        
  • Manuais,tutoriais sobre recursos da linguagem em
          
                    $JAVA_HOME/docs/index.html
    
        

Como usar a Documentação (3)

  • Listas de classes internas, campos de dados, metodos e construtores

    ./images/como_usar_documentacao_3.jpg

Documentação de um construtor

./images/como_usar_documentacao_4_1.jpg

  • Exemplo de como usar o construtor acima:

    ./images/como_usar_documentacao_4_2.jpg

Documentação de um método

./images/como_usar_documentacao_5.jpg

  • Para chamar o metodo acima ( fillRect() da classe java.awt.Graphics)

    g.fillRect(25,50,100,200); //g:referencia Graphics

    • Desenha um retangulo preenchido com a cor atual do contexto grafico, com seu canto superior esquerdo na posicao x:25 e y:50, com 100 pixels de largura por 200 de altura.
  • Para sobrepor, repita a assinatura do metodo e forneca sua implementacao tipo de retorno assinatura do metodo parametros do metodo descricao do metodo detalhes sobre os parametros

Ambiente - Eclipse

  • Para desenvolver aplicações Java, iremos montar um ambiente composto por:
    • Eclipse (editor de código e ambiente de desenvolvimento integrado-IDE)

      Composto de duas partes:

      • Eclipse platform - Plataforma padrão para editar qualquer arquivo
      • Eclipse JDT - Conjunto de funcionalidades para editar código Java
    • JSDK (Kit de Desenvolvimento da Sun)
  • Onde conseguir:

Instalação (2)

  • SDK

    a.Instale o JSDK seguindo as instrucoes mostradas na tela de instalacao.

    b.Configure uma variavel de ambiente JAVA_HOME que aponte para o endereco onde o JSDK foi instalado (ex: c:\j2sdk1.4.1).

    c.Acrescente o caminho $JAVA_HOME/bin no seu PATH.

  • Eclipse

    a.Instale o Eclipse dizipando o arquivo EclipsePlatform*.zip no diretório de sua preferência.

    b.Instale o JDT dizipando o arquivo EclipseJDT*.zip exatamente no mesmo diretório acima.

Eclipse Plug-ins

  • As funcionalidades do Eclipse podem ser aumentadas através de Plug-ins (aplicativos desenvolvidos pela comunidade Java que podem ser integrados ao Eclipse).
  • Para instalá-los, é só dizipálos dentro do diretório plugins dentro do diretório de instalação do Eclipse (examine o zip do plugin antes).
  • Para que a instalação faça efeito é preciso reiniciar o Eclipse.
  • Workspace - é o diretório onde serão quardados os projetos criados por aquela instância do programa. Para modificar, basta executar o Eclipse com o parâmetro -data DiretórioDestino

Eclipse - Personalização

  • Visões - São configurações padrão. Para editar código Java, escolha a Java Perspective ou Java Browsing
  • Como toda IDE, para editar código Java no Eclipse é preciso criar um projeto. (Arquivo -> Novo -> Projeto)
  • Personalizar seu Projeto: (Arquivo -> Propriedades -> Java Build Path)
    • Diretório dos .java (source)
    • Diretório dos .class (output)
    • Bibliotecas .jar
  • Agora, é só criar suas classes. (Arquivo -> Novo -> Classe)

    ./images/eclipse.jpg

Eclipse - Executar Aplicativos

  • Selecione a classe executável, (Run -> Run As... -> Java Applications)
2 "