Você está na página 1de 44

Java 2 Standard Edition

tecnologia Java
Helder da Rocha
www.argonavis.com.br

Introduo

Assuntos abordados neste mdulo


Conceitos
Tecnologia Java Linguagem e API Java Mquina virtual Java Ambiente de execuo (JRE) e desenvolvimento (SDK) Carregador de classes (ClassLoader) e CLASSPATH Verificador de bytecodes Coletor de lixo (garbage collector) Como escrever uma aplicao Java Como compilar uma aplicao Java Como executar uma aplicao Java Como depurar erros de compilao e execuo
2

Introduo prtica

Parte 1: Tecnologia Java


O nome "Java" usado para referir-se a
Uma linguagem de programao orientada a objetos Uma coleo de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicaes multiplataforma Um ambiente de execuo presente em browsers, mainframes, SOs, celulares, palmtops, cartes inteligentes, eletrodomsticos Java Development Kit (JDK) 1.0/1.0.2 Java Development Kit (JDK) 1.1/1.1.8 Java 2 Platform (Java 2 SDK e JRE 1.2, 1.3, 1.4)

Java foi lanada pela Sun em 1995. Trs grandes revises

A evoluo da linguagem controlada pelo Java Community Process (www.jcp.org) formado pela Sun e usurios Java Ambientes de execuo e desenvolvimento so fornecidos por fabricantes de hardware e software (MacOS, Linux, etc.)
3

Linguagem Java
Linguagem de programao orientada a objetos
Familiar (sintaxe parecida com C) Simples e robusta (minimiza bugs, aumenta produtividade) Suporte nativo a threads (+ simples, maior portabilidade) Dinmica (mdulos, acoplamento em tempo de execuo) Com coleta de lixo (menos bugs, mais produtividade) Independente de plataforma Segura (vrios mecanismos para controlar segurana) Cdigo intermedirio de mquina virtual interpretado (compilao rpida - + produtividade no desenvolvimento) Sintaxe uniforme, rigorosa quanto a tipos (cdigo mais simples, menos diferenas em funcionalidades iguais)
4

Produtos e APIs
Java possui uma coleo de APIs (bibliotecas) padro que podem ser usadas para construir aplicaes

Organizadas em pacotes (java.*, javax.* e extenses) Usadas pelos ambientes de execuo (JRE) e de desenvolvimento (SDK)

As principais APIs so distribudas juntamente com os produtos para desenvolvimento de aplicaes


Java 2 Standard Edition (J2SE): ferramentas e APIs essenciais para qualquer aplicao Java (inclusive GUI) Java 2 Enterprise Edition (J2EE): ferramentas e APIs para o desenvolvimento de aplicaes distribudas Java 2 Micro Edition (J2ME): ferramentas e APIs para o desenvolvimento de aplicaes para aparelhos portteis
5

Ambiente de execuo e desenvolvimento


Java 2 System Development Kit (J2SDK)
Coleo de ferramentas de linha de comando para, entre outras tarefas, compilar, executar e depurar aplicaes Java Para habilitar o ambiente via linha de comando preciso colocar o caminho $JAVA_HOME/bin no PATH do sistema

Java Runtime Environment (JRE)


Tudo o que necessrio para executar aplicaes Java Parte do J2SDK e das principais distribuies Linux, MacOS X, AIX, Solaris, Windows 98/ME/2000 (exceto XP) Varivel JAVA_HOME (opcional: usada por vrios frameworks) Defina com o local de instalao do Java no seu sistema. Exemplos:
Windows: Linux:
set JAVA_HOME=c:\j2sdk1.4.0 JAVA_HOME=/usr/java/j2sdk1.4.0 export JAVA_HOME

Compilao para bytecode


Bytecode o cdigo de mquina que roda em qualquer mquina atravs da Mquina Virtual Java (JVM) Texto contendo cdigo escrito em linguagem Java traduzido em bytecode atravs do processo de compilao e armazenado em um arquivo *.class chamado de Classe Java
Cdigo public class HelloWorld { public static void main(String[] args) { Java System.out.println("Hello, world!"); (texto) }
}

HelloWorld.java

compilao (javac)
HelloWorld.class

F4 D9 00 03 0A B2 FE FF FF 09 02 01 01 2E 2F 30 62 84 3D 29 3A C1

Bytecode Java (cdigo de mquina virtual)

Uma "classe" Java

Mquina Virtual Java (JVM)


"Mquina imaginria implementada como uma aplicao de software em uma mquina real" [JVMS] A forma de execuo de uma aplicao depende ...
... da origem do cdigo a ser executado (remoto ou local) ... da forma como foi implementada a JVM pelo fabricante (usando tecnologia JIT, HotSpot, etc.)
bytecode
HelloWorld.class

java

Class Loader

Classe remota? no

sim

Bytecode Verifier

Tradutor JIT: Just-In-Time Compiler. Gera cdigo nativo a partir de bytecodes para maior performance

Tempo de execuo
Interpretador HARDWARE Tradutor JIT
cdigo nativo

Class Loader e CLASSPATH


Primeira tarefa executada pela JVM: carregamento das classes necessrias para rodar a aplicao. O Class Loader

1. Carrega primeiro as classes nativas do JRE (APIs) 2. Depois carrega extenses do JRE: JARs em $JAVA_HOME/jre/lib/ext e classes em $JAVA_HOME/jre/lib/classes 3. Carrega classes do sistema local (a ordem dos caminhos no CLASSPATH define a precedncia) 4. Por ltimo, carrega possveis classes remotas

CLASSPATH: varivel de ambiente local que contm todos os caminhos locais onde o Class Loader pode localizar classes
A CLASSPATH lida depois, logo, suas classes nunca substituem as classes do JRE (no possvel tirar classes JRE do CLASSPATH) Classes remotas so mantidas em rea sujeita verificao CLASSPATH pode ser redefinida atravs de parmetros durante a execuo do comando java

Bytecode Verifier
Etapa que antecede a execuo do cdigo em classes carregadas atravs da rede
Class Loader distingue classes locais (seguras) de classes remotas (potencialmente inseguras)

Verificao garante
Aderncia ao formato de arquivo especificado [JVMS] No-violao de polticas de acesso estabelecidas pela aplicao No-violao da integridade do sistema Ausncia de estouros de pilha Tipos de parmetros corretamente especificados e ausncia de converses ilegais de tipos
10

Coleta de lixo
Memria alocada em Java no liberada pelo programador
Ou seja, objetos criados no so destrudos pelo programador

A criao de objetos em Java consiste de


1. Alocar memria no heap para armazenar os dados do objeto 2. Inicializar o objeto (via construtor) 3. Atribuir endereo de memria a uma varivel (referncia)

Mais de uma referncia pode apontar para o mesmo objeto


pilha
Mensagem m, n, p; m = new Mensagem("A"); n = m; p = new Mensagem("B");

heap

m n p

"A" "B"
GC

objetos

processo interno (thread) do garbage collector

11

Coleta de lixo (2)


Quando um objeto no tem mais referncias apontando para ele, seus dados no mais podem ser usados, e a memria deve ser liberada. O coletor de lixo ir liberar a memria na primeira oportunidade
pilha
n = null; p = new Mensagem("C");

heap

m n p

objeto sem referncias candidato remoo pelo GC

"A" "B" "C"


12
GC

O que Java no faz


Java no suporta herana mltipla de implementao Herana mltipla caracterstica comum a vrias linguagens OO, e permite reuso de cdigo de vrias classes em outra classe Tem vantagens porm aumenta a complexidade Java oferece uma soluo que preserva as principais vantagens da herana mltipla e evita os problemas Java no suporta aritmtica de ponteiros Ponteiros, ou referncias, so usados em vrias linguagens, inclusive Java, para manipular eficientemente grandes quantidades de informao na memria Com ponteiros, em vez de copiar uma informao de um lugar para outro, copia-se apenas o seu endereo Em linguagens como C, o programador pode manipular o endereo (que dependente de plataforma) diretamente Isto aumenta a complexidade e diminui a portabilidade 13

O J2SDK
O J2SDK (Java 2 System Development Kit) o ambiente padro distribudo pela Sun para desenvolvimento de aplicaes Java O J2SDK consiste de
JRE (Java Runtime Environment) - tambm distribudo separadamente: ambiente para execuo de aplicaes Ferramentas para desenvolvimento: compilador, debugger, gerador de documentao, empacotador JAR, etc. Cdigo-fonte das classes da API Demonstraes de uso das APIs, principalmente Applets, interface grfica com Swing e recursos de multimdia

A documentao distribuda separadamente


14

Como compilar
Use o java compiler (linha de comando)
javac javac javac javac NomeDaClasse.java -d ../destino Um.java Dois.java -d ../destino *.java -classpath c:\fontes -d ../destino *.java

Algumas opes (opcionais)


-d

diretrio onde sero armazenadas as classes (arquivos .class) geradas -classpath diretrios (separados por ; ou :) onde esto as classes requeridas pela aplicao -sourcepath diretrios onde esto as fontes Para conhecer outras opes do compilador, digite javac

sem argumentos Compiladores de outros fabricantes (como o Jikes, da IBM) tambm podem ser usados no lugar do javac
15

Como executar
Use o interpretador java (faz parte do JRE)*
java java java java java java java NomeDaClasse pacote.subpacote.NomeDaClasse -classpath c:\classes;c:\bin;. pacote.Classe -cp c:\classes;c:\bin;. pacote.Classe -cp %CLASSPATH%;c:\mais pacote.Classe -cp biblioteca.jar pacote.Classe -jar executavel.jar

Para rodar aplicaes grficas, use javaw Principais opes

javaw -jar executavel.jar javaw -cp aplicacao.jar;gui.jar principal.Inicio -cp ou -classpath classpath novo (sobrepe v. ambiente) -jar executa aplicao executvel guardada em JAR -Dpropriedade=valor define propriedade do sistema (JVM)

* sintaxe de PATH em Unix diferente

16

Algumas outras ferramentas do SDK


Debugger: jdb
Depurador simples de linha de comando

Profiler: java -prof


Opo do interpretador Java que gera estatsticas sobre uso de mtodos em um arquivo de texto chamado java.prof

Java Documentation Generator: javadoc


Gera documentao em HTML (default) a partir de cdigo-fonte Java

Java Archiver: jar


Extenso do formato ZIP; ferramenta comprime, lista e expande

Applet Viewer: appletviewer


Permite a visualizao de applets sem browser

HTML Converter: htmlconverter.jar


Converte <applet> em <object> em pginas que usam applets

Disassembler: javap
Permite ler a interface pblica de classes

17

Java 2 Standard Edition

Parte 2: Introduo Prtica

18

Parte 2: Introduo prtica


Nesta seo sero apresentados alguns exemplos de aplicaes simples em Java
1. Aplicao HelloWorld 2. Aplicao HelloWorld modificada para promover reuso e design orientado a objetos (duas classes) 3. Aplicao Grfica Swing (trs classes) 4. Aplicao para cliente Web (applet)

Compile cdigo-fonte no CD
cap01/src/

Todos os assuntos apresentados nesta seo sero explorados em detalhes em aulas posteriores
Conceitos como classe, objeto, pacote Representao UML Sintaxe, classes da API, etc. 19

1. Aplicao HelloWorld
Esta mini-aplicao em Java imprime um texto na tela quando executada via linha de comando
/** Aplicao Hello World */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } }

HelloWorld.java

Exerccio: Use-a para testar seu ambiente e familiarizar-se com o desenvolvimento Java
Digite-a no seu editor de textos Tente compil-la Corrija eventuais erros Execute a aplicao
20

Anatomia
Comentrio de bloco Nome da classe
/** Aplicao Hello World */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } }

Nome do mtodo

Declarao de argumento
varivel local: args tipo: String[]
Ponto-e-vrgula obrigatrio no final de toda instruo

Definio de mtodo main() Definio de classe


HelloWorld

Atribuio de argumento para o mtodo println()

Chamada de mtodo println() via objeto out accessvel atravs da classe System

21

2. Uma classe define um tipo de dados


Esta classe representa objetos que guardam um texto (tipo String) em um atributo (msg) publicamente acessvel. Alm de guardar um String, retorna o texto em caixa-alta atravs do mtodo lerNome(). Membros da classe. Outras
Definio da classe (tipo) Mensagem em Java
public class Mensagem { public String msg = "";

atributo mtodo

classes podem acess-los, se declarados como "public", usando o operador ponto "."
Representao em UML

public String lerNome() { String nomeEmMaiusculas = msg.toUpperCase(); return nomeEmMaiusculas; }

Mensagem
+msg: String +lerNome(): String

Esta a interface pblica da classe. s isto que interessa a quem vai us-la. Os detalhes (cdigo) esto encapsulados.

22

Classe executvel que usa um tipo


Esta outra classe usa a classe anterior para criar um objeto e acessar seus membros visveis por sua interface pblica
Pode alterar ou ler o valor do atributo de dados msg Pode chamar o mtodo lerNome() e usar o valor retornado
atributo nome do tipo Mensagem Este mtodo chamado pelo interpretador

public class HelloJava { private static Mensagem nome; public static void main(String[] args) { nome = new Mensagem(); // cria objeto

if (args.length > 0) { // h args de linha de comando? nome.msg = args[0]; // se houver, copie para msg } else { nome.msg = "Usuario"; // copie palavra "Usuario" } String texto = nome.lerNome(); // chama lerNome() System.out.println("Bem-vindo ao mundo Java, "+texto+"!"); Operador de concatenao
Veja demonstrao

23

Detalhes
Declarao do mtodo main()
modificadores tipo de dados retornado tipo de dados aceito como argumento Dependncia entre as duas classes
(HelloJava tem referncia para Mensagem)

public static void main(String[] args)

nome

varivel local ao mtodo que contm valor passado na chamada

O mtodo main() chamado pelo interpretador Java, automaticamente


Deve ter sempre a assinatura acima

HelloJava
+main(args: String[]) usa

O argumento um vetor formado por textos passados na linha de comando:


> java NomeDaClasse Um "Dois Tres" Quatro

Mensagem
+msg: String +lerNome(): String

args[0]

args[1]

args[2]

24

3. Primeira aplicao grfica


A aplicao abaixo cria um objeto do tipo JFrame (da API Swing) e reutiliza a classe Mensagem
import javax.swing.*; // importa JFrame e JLabel import java.awt.Container;

No lugar de imprimir o texto, passa-o como parmetro na criao de MensagemGUI

public class MensagemGUI { public MensagemGUI(String texto) { JFrame janela = new JFrame("Janela"); Container areaUtil = janela.getContentPane(); Construtor cria areaUtil.add( new JLabel(texto) ); janela contendo janela.pack(); texto recebido janela.setVisible(true); } public class HelloJavaGUI { } reuso! private static Mensagem nome; public static void main(String[] args) {

Quando objeto criado, construtor MensagemGUI chamado.

(... igual a HelloJava ...)

String texto = nome.lerNome(); new MensagemGUI ("Bem-vindo ao mundo Java, "+texto+"!");

25

Componentes da aplicao grfica


javax.swing MensagemGUI
+MensagemGUI(texto:String)

HelloJavaGUI
+main(args: String[])

Reuso de componentes das APIs Java permite a criao de aplicaes GUI com poucas linhas de cdigo!

Relacionamentos entre as trs classes do programa

Mensagem
+msg: String +lerNome(): String

Execuo da apliao passando parmetro via linha de comando

26

Entrada de dados via GUI


javax.swing.JOptionPane oferece uma interface grfica para entrada de dados e exibio de informaes Exemplo de exibio de caixa de dilogo
JOptionPane.showMessageDialog(null, "Hello, World!"); preciso importar javax.swing.* ou javax.swing.JOptionPane

Exemplo de dilogo para entrada de dados


String nome = JOptionPane.showInputDialog("Digite seu nome"); if (nome != null) { JOptionPane.showMessageDialog(null, nome); } else { System.exit(0); }

27

4. Primeiro applet
Componentes grficos que podem ser executados no browser Para criar e usar um applet preciso
criar uma classe que herde da classe Applet ou JApplet (API Java) criar uma pgina HTML que carregue o applet

A classe abaixo implementa um JApplet


import javax.swing.*; // importa JFrame e JLabel import java.awt.Container; public class HelloJavaApplet extends JApplet { private Mensagem nome;

Herana!

Chamado automaticamente pelo browser

public void init() { nome = new Mensagem(); nome.msg = this.getParameter("texto"); // parmetro HTML String texto = nome.lerNome(); Container areaUtil = this.getContentPane(); JLabel label = new JLabel("Bem-vindo ao mundo Java, " +texto+ "!"); areaUtil.add(label); }

28

Pgina HTML
O elemento <applet> usado para incluir applets antigos (Java 1.0 e 1.1) em pginas HTML ou servir de template para a gerao de cdigo HTML 4.0 A seguinte pgina carrega o applet da pgina anterior
<html> <head> <title>Sem Ttulo</title> </head> <body> <h1>Um Applet</h1> <applet code="HelloJavaApplet.class" height="50" width="400"> <param name="texto" value="Helder"> </applet> </body> </html>

Converta o cdigo para HTML 4.0: ferramenta htmlconverter


Guarde uma cpia do original, e rode (use htmlconverter.bat)
> htmlconverter pagina.html

29

Detalhes
...

Para rodar o applet abra a pgina com seu browser ou use o appletviewer
> appletviewer pagina.html

javax.swing.JApplet
+init() +getParameter(String):String

Mude o valor dos parmetros do HTML e veja os resultados


Browser oferece container para rodar o Applet

... Herana HelloJavaApplet


+init()

Relacionamentos

Mensagem
+msg: String

Reutilizada! +lerNome(): String

30

Resumo
Foram apresentados quatro exemplos de pequenas aplicaes Java, demonstrando
Sintaxe elementar, compilao e execuo Classe como unidade de cdigo para execuo Classe como definio de tipo de dados Reuso de objetos atravs de associao (uso da classe Mensagem em trs aplicaes diferentes) e herana (infraestrutura de Applets reaproveitada) Aplicaes grficas Componentes de um framework (Applets) que executam em um container padro (dentro do browser)
31

Java 2 Standard Edition

Apndice: como lidar com erros

32

Erros (1)
Durante o desenvolvimento, erros podem ocorrer em dois domnios: tempo de compilao e tempo de execuo Erros ocorridos durante a fase de compilao ocorrem quando se executa o javac, e so fceis de corrigir. H dois tipos:
Erros de processamento do arquivo (parsing): ponto-e-vrgula faltando, parnteses, aspas, chaves ou colchetes descasados. Identifica apenas o arquivo e a linha onde o erro pode ter iniciado. Um erro causa vrios outros e nem sempre a mensagem precisa. Erros de compilao do cdigo, realizada depois do parsing: alm da linha e do arquivo, identificam a classe e mtodo. Geralmente as mensagens so bastante elucidativas.

essencial aprender a identificar a causa da mensagem de erro


LEIA a mensagem e localize a linha onde o erro foi detectado Corrija os erros na ordem em que eles aparecerem Sempre recompile depois de corrigir cada erro de parsing (ponto-e vrgula, etc.) j que eles causam mensagens de erro falsas.

33

Alguns erros de compilao comuns


Cannot resolve symbol: compilador incapaz de localizar uma definio do smbolo encontrado. Causas comuns:
Erro de sintaxe no nome de varivel ou mtodo Varivel/mtodo no declarado Classe usada no possui varivel, mtodo ou construtor Nmero ou tipo de argumentos do mtodo ou construtor incorretos Definio de classe no encontrada no CLASSPATH

Class Hello is public, should be declared in a file named Hello.java: nome do arquivo tem que ser igual ao nome da classe pblica*: Nome tem que ser Hello.java, literalmente. O nome hello.java causa este erro porque o "h" est minsculo. Para consertar altere o nome da classe no cdigo ou no nome do arquivo para que sejam iguais.
* Se classe no for pblica, essa restrio no vale

34

Exemplos de erros de compilao


Erro de parsing
Na verdade, s h um erro no cdigo, apesar do compilador acusar trs
1: public class HelloWorldErro { 2: public static void main(String args { 3: System.out.println("Hello, 4: world!"); 5: } 6: } Arquivo onde foi detectado o erro Trecho do cdigo e indicao da provvel localizao da causa do erro

Apenas o primeiro erro verdadeiro. Ignore os outros. Eles foram causados pelo primeiro.

Nmero da linha onde o erro foi achado

35

Exemplos de erros de compilao (2)


Nome do arquivo MensagemErro.java mas classe foi criada com nome mensagemerro.java Compilador no sabe quem string: O tipo String sempre tem um S maisculo (como todas as classes da API)

Compilador no sabe quem msg: no foi declarada nenhuma varivel com esse nome.

5: public class mensagemerro { 6: /** Atributo de dados msg publicamente visvel */ 7: public string nome = ""; 8: 9: /** Mtodo lerNome() devolve objeto do tipo String */ 10: public string lerNome() { 11: string nomeEmMaiusculas = msg.toUpperCase(); 12: return nomeEmMaiusculas; 13: } 14:} 36

Exemplos de erros de compilao (3)


Erros em mltiplas classes
Quando uma classe que possui dependncias compilada, suas dependncias so compiladas primeiro e o compilador mostra mensagens de erros referentes a todas as classes envolvidas Identifique sempre o arquivo e o nmero da linha Compile as dependncias primeiro
Erro na linha 11 do arquivo HelloJava.java

Erro na linha 12 do arquivo Mensagem.java localizado no mesmo diretrio que HelloJava.java

37

Erros (II)
Depois que o cdigo compila com sucesso, os bytecodes (arquivos .class) so gerados e podem ser usados em um processo de execuo Erros ocorridos durante a fase de execuo (runtime) ocorrem quando se executa o interpretador java, e so muito mais difceis de localizar e consertar. A mensagem impressa geralmente um "stack trace" e mostra todo o "caminho" percorrido pelo erro
Relaciona mtodos e classes da sua aplicao e classes da API Java que sua aplicao usa (direta ou indiretamente) Nem sempre mostra a linha de cdigo onde o erro comeou O incio do trace geralmente contm informaes mais teis

Erros de runtime nem sempre indicam falhas no software


Freqntemente se devem a causas externas: no existncia de arquivos externos, falta de memria, falha em comunicao de rede

38

Erros de execuo comuns e possveis causas


Exception in thread "main": NoClassDefFoundError: Classe: a classe "Classe" no foi encontrada no CLASSPATH.
O CLASSPATH no inclui todos os diretrios requeridos O nome da classe foi digitado incorretamente ou requer pacote

Exception in thread "main": NoSuchMethodError: main: o sistema tentou chamar main() mas no o encontrou.
A classe no tem mtodo main() (talvez no seja executvel) Confira assinatura do main: public static void main(String[])

ArrayIndexOutOfBoundsException: programa tentou acessar vetor alm dos limites definidos.


Erro de lgica com vetores Aplicao pode requerer argumentos de linha de comando

NullPointerException: referncia para objeto nula


Varivel de tipo objeto foi declarada mas no inicializada Vetor foi declarado mas no inicializado

39

Exemplos de erros de tempo de execuo

1. Na linha 13, est havendo uma referncia a um ndice de um vetor. Esse ndice tenta acessar uma posio inexistente no vetor. Neste caso especfico, o erro pode ser evitado passando-se um parmetro aps o nome da classe na linha de comando, porm a aplicao pouco robusta pois no prev que o erro possa acontecer.

2. A classe no foi encontrada. Pode ser que ela no esteja no CLASSPATH. Neste caso especfico o interpretador nos sugere que o nome pode est errado. Para consertar, basta chamar a classe pelo nome correto: Hello. O Stack Trace mostra que esse erro teve origem em outras classes, mas foi nossa classe que, na verdade, o provocou. 40

Exemplos de erros de tempo de execuo (2)


Erros de tempo de execuo freqentemente ocorrem em dependncias
Causa pode estar na dependncia Causa pode ter tido origem na dependncia mas ter sido iniciada por erro na classe principal

Stack Trace pode ajudar a localizar a origem do erro


As informaes tambm podem desviar a ateno

Erro comeou na linha 7 (mtodo main) de HelloJavaErro mas teve origem na linha 12 do mtodo lerNome de Mensagem

41

Como achar erros de tempo de execuo


H dois tipos de erros de tempo de execuo
Causados por situaes externas, que fogem do controle do programador (ex: rede fora do ar) Causados por erros de lgica de programao

Devemos criar aplicaes robustas que prevejam a possibilidade de erros de tempo de execuo devido a fatores externos e ajam da melhor forma possvel Devemos achar erros de lgica e evitar que sobrevivam alm da fase de desenvolvimento. Para evit-los:
Escreva cdigo claro, fcil de entender, organizado, pequeno Use endentao, siga convenes, nomes significativos, documente Escreva testes para todo cdigo e rode-os com freqncia

Para achar os erros difceis


Rode cdigo de testes se os tiver; Ative nvel de mensagens de log Aprenda a usar um depurador para navegar no fluxo de execuo

42

Exerccios
1. Compile e execute os exemplos localizados no subdiretrio cap01/ 2. H vrios arquivos no diretrio cap01/exercicios/erro. Todos apresentam erros de compilao. Corrija os erros. 3. Execute os arquivos executveis do diretrio errobin (quais so?). Alguns iro provocar erros de tempo de execuo. Corrija-os ou descubra como executar a aplicao sem que eles ocorram.

43

Curso J100: Java 2 Standard Edition


Reviso 17.0

1996-2003, Helder da Rocha (helder@acm.org)

argonavis.com.br
44

Você também pode gostar