Tutorial Java

Propaganda
Tutorial Java
Tradução da 5a Edição
Sharon Biocca Zakhour
Sowmya Kannan
Raymond Gallardo
Book_The Java Tutorial_PFCG.indb 3
29/06/2015 15:15:13
Conteúdo
Prefácioxxi
Sobre os Autores
xxv
Capítulo 1 Dando a Partida
O Fenômeno da Tecnologiya Java
A Linguagem de Programação Java
A Plataforma Java
O Que a Tecnologia Java Pode Fazer?
Como a Tecnologia Java Pode Mudar a Minha Vida?
A Aplicação “Hello World!”
“Hello World!” para a IDE NetBeans
“Hello World! para o Microsoft Windows
“Hello World!” para Solaris e Linux
Um Olhar Mais de Perto na Aplicação “Hello World!”
Comentários do Código Fonte
A Definição da Classe HelloWorldApp
O Método main (Principal)
Problemas Comuns (e Suas Soluções)
Problemas no Compilador
Problemas no Processamento
Perguntas e Exercícios: Dando a Partida
1
1
2
2
4
4
5
6
14
18
22
23
23
24
25
25
27
29
v
Book_The Java Tutorial_PFCG.indb 5
29/06/2015 15:15:14
vi
Conteúdo
Perguntas29
Exercícios29
Respostas30
Capítulo 2 Conceitos de Programação Orientada a Objeto
31
O Que é um Objeto?
32
O Que é uma Classe?
34
O Que é Herança?
36
O Que é uma Interface?
37
O Que é um Pacote?
38
Perguntas e Exercícios:
Conceitos de Programação Orientada a Objeto
38
Perguntas38
Exercícios39
Respostas39
Capítulo 3 Noções Básicas da Linguagem
41
Variáveis42
Nomenclatura43
Tipos Primitivos de Dados
44
Arrays49
Resumo de Variáveis
54
Perguntas e Exercícios: Variáveis
54
Operadores55
Operadores de Atribuição, Aritméticos e Unários
56
Operadores de Igualdade, Relacionais e Condicionais
59
Operadores Bitwise e Bit Shift
62
Resumo de Operadores
62
Perguntas e Exercícios: Operadores
64
Expressões, Declarações e Blocos
65
Expressões65
Declarações66
Blocos67
Perguntas e Exercícios: Expressões, Declarações e Blocos
67
Declarações de Controle de Fluxo
68
As Declarações if-then e if-then-else
68
A Declaração switch
70
As Declarações while e do-while
75
A Declaração for
76
Declarações de Desvio
78
Resumo das Declarações de Controle de Fluxo
82
Perguntas e Exercícios: Declarações de Controle de Fluxo 82
Book_The Java Tutorial_PFCG.indb 6
29/06/2015 15:15:14
Conteúdo
vii
Capítulo 4 Classes e Objetos
85
Classes86
Declarando Classes
87
Declarando Variáveis Membro
88
Definindo Métodos
90
Determinando Construtores para Suas Classes
92
Passando Informações para um Método ou um Construtor 94
Objetos98
Criando Objetos
99
Usando Objetos
103
Mais Sobre Classes
106
Retornando um Valor de um Método
106
Usando a Palavra-chave this108
Usando this com um campo
108
Entendendo Instância e Membros de Classe
111
Inicializando Campos
115
Resumo de Criação e Utilização de Classes e Objetos
117
Perguntas e Exercícios: Classes
118
Perguntas e Exercícios: Objetos
119
Classes Aninhadas
120
Definição120
Por que Usar Classes Aninhadas?
121
Classes Static Aninhadas
121
Classes Interiores
122
Exemplo de Classe Interna
123
Resumo de Classes Aninhadas
125
Perguntas e Exercícios: Classes Aninhadas
125
Tipos Enum
126
Perguntas e Exercícios: Tipos Enum
129
Anotações129
Documentação130
Anotações Usadas pelo Compilador
132
Processamento de Anotações
133
Perguntas e Exercícios: Anotações
133
Capítulo 5 Interfaces e Herança
135
Interfaces135
Interfaces em Java
136
Interfaces como APIs
137
Interfaces e Herança Múltipla
137
Definindo uma Interface
138
Book_The Java Tutorial_PFCG.indb 7
29/06/2015 15:15:14
viii
Conteúdo
Implementando uma Interface
139
Usando uma Interface Como um Tipo
141
Reescrevendo Interfaces
142
Resumo de Interfaces
142
Perguntas e Exercícios: Interfaces
142
Herança143
A Hierarquia da Classes da Plataforma Java
144
Um Exemplo de Herança
144
O Que É Possível Fazer em uma Subclasse
146
Membros Privados em uma Superclasse
146
Casting de Objetos
146
Sobrepondo (Overriding) e e Ocultando (Hiding) Métodos 148
Polimorfismo150
Ocultando Campos
152
Usando a Palavra-chave super
152
Object como uma Superclasse
154
Escrevendo Classes e Métodos Final
158
Métodos e Classes Abstract
158
Resumo de Herança
161
Perguntas e Exercícios: Herança
162
Capítulo 6 Genéricos163
Por Que usar Genéricos?
164
Tipos Genéricos
164
Uma Simples Classe Box
164
Uma Versão Genérica da Classe Box
165
Convenções de Nomenclatura de Tipo Parâmetro
165
Invocando e Instanciando um Tipo Genérico
166
Diamond166
Parâmetros de Tipo Múltiplo
167
Tipos Parametrizados
168
Tipos Raw
168
Métodos Genéricos
170
Parâmetro Tipo Bounded171
Múltiplos Bounds
172
Métodos Genéricos e Parâmetros Tipo Bounded
173
Genéricos, Herança e Subtipos
173
Classes Genéricas e SubTyping
175
Inferência de Tipo
176
Inferência de Tipo e Métodos Genéricos
176
Inferência de Tipo e Instanciação de Classes Genéricas
177
Book_The Java Tutorial_PFCG.indb 8
29/06/2015 15:15:14
Conteúdo
ix
Inferência de Tipo e Construtores Genéricos
de Classes Genéricas e Não Genéricas
178
Coringas179
Coringas Upper-Bounded
179
Coringas Unbounded
180
Coringas Lower-Bounded
182
Coringas e Subtipificação
182
Captura de Coringa e Métodos Auxiliares
184
Diretrizes para o Uso de Coringas
187
Apagamento de Tipo
188
Apagamento de Tipos Genéricos
188
Apagamento de Métodos Genéricos
190
Efeitos de Apagamento de Tipo e
Métodos Bridge (de Ponte)
191
Tipos Nonreifiable
193
Restrições sobre Genéricos
196
Não é Possível Instanciar Tipos Genéricos
com Tipos Primitivos
196
Não É Possível Criar Instâncias de Parâmetros Tipo
197
Não É Possível Declarar Campos Static
Cujos Tipos Sejam Parâmetros Tipo
197
Não É Possível Usar Casts ou Instanceof
com Tipos Parametrizados
198
Não É Possível Criar Arrays de Tipos Parametrizados
199
Não É Possível Criar, Obter ou Lançar
Objetos de Tipos Parametrizados
199
Não É Possível Sobrecarregar um Método Onde
os Tipos Formais de Parâmetro de Cada
Sobrecarga Apagam o o Mesmo Tipo Raw
200
Perguntas e Exercícios:
200
Perguntas200
Exercícios202
Respostas202
Capítulo 7 Pacotes203
Criando um Pacote
205
Nomeando um Pacote
206
Convenções de Nomenclatura
206
Usando Membros de Pacote
207
Referindo-se a um Membro de Pacote
por seu Nome Qualificado
207
Book_The Java Tutorial_PFCG.indb 9
29/06/2015 15:15:14
x
Conteúdo
Importando um membro de Pacote
208
Importando um Pacote Inteiro
208
Hierarquias Aparentes de Pacotes
209
Ambiguidades de Nomes
209
A Declaração Static Import
210
Gerenciando Arquivos Fonte e de Classes
211
Definindo a Variável de Sistema CLASSPATH
213
Resumo de Pacotes
213
Perguntas e Exercícios: Criando e Usando Pacotes
214
Perguntas214
Exercícios214
Respostas215
Capítulo 8 Números e Strings
217
Números217
As Classes de Números
218
Formatando a Saída Impressa Numérica
220
Além da Aritmética Básica
224
Autoboxing e Unboxing
230
Resumo de Números
232
Perguntas e Exercícios: Números
233
Caracteres234
Sequências de Escape
235
Strings236
Criando Strings
236
Comprimento da String
237
Concatenando Strings
238
Criando Strings Format
239
Convertendo entre Números e Strings
240
Manipulando Caracteres em uma String
242
Buscando por Caracteres e Substrings em uma String
244
Comparando Strings e Partes de Strings
247
A Classe StringBuilder
247
Resumo de Caracteres e Strings
253
Perguntas e Exercícios: Caracteres e Strings
254
Capítulo 9 Exceções257
O Que é uma Exceção?
258
O Requisito Catch ou Specify
258
As Três Espécies de Exceções
259
Contornando Catch ou Specify
260
Capturando e Lidando com Exceções
261
Book_The Java Tutorial_PFCG.indb 10
29/06/2015 15:15:14
Conteúdo
xi
O Bloco try
262
Os Blocos catch263
O Bloco finally
264
A Declaração try-with-resources
266
Juntando Tudo
269
Especificando as Exceções Lançadas por um Método
272
Como Lançar Exceções
273
A Declaração throw
274
A Classe Throwable e suas Subclasses
274
Classe Error
275
Classe Exception
275
Exceções Encadeadas
276
Criando Classes de Exceção
277
Exceções Não Verificadas: A Controvérsia
279
Vantagens das Exceções
280
Vantagem 1: Separar Código de Tratamento de
Erros de Código “Regular”
280
Vantagem 2: Propagar Erros para Cima da
Pilha de Chamada
282
Vantagem 3: Agrupar e Diferenciar Tipos de Erros
283
Resumo de Exceções
285
Perguntas e Exercícios:
285
Perguntas285
Exercícios286
Respostas287
Capítulo 10 I/O básico e NIO.2
289
Streams de I/O
289
Streams de Bytes
291
Streams de Caracteres 293
Streams Bufferizados
295
Escaneando e Formatando
296
I/O a Partir da Linha de Comando
302
Streams de Dados
305
Streams de Objetos
307
Arquivo de I/O (Apresentando NIO.2)
309
O Que É um Path (Caminho)?
(E Outros Fatos sobre Sistema de Arquivos) 309
A Classe Path
312
Operações com Arquivos
320
Verificando um Arquivo ou Diretório
324
Book_The Java Tutorial_PFCG.indb 11
29/06/2015 15:15:14
xii
Conteúdo
Deletando um Arquivo ou Diretório
325
Copiando um Arquivo ou Diretório
325
Movendo um Arquivo ou Diretórios
326
Gerenciando Metadados (Atributos File e File Store)
327
Lendo, Escrevendo e Criando Arquivos
335
Arquivos de Acesso Randômico
342
Criando e Lendo Diretórios
343
Links, Simbólicos e Não
347
Percorrendo a Árvore de Arquivos
349
Encontrando Arquivos
354
Monitorando Mudanças em um Diretório
357
Outros Métodos Úteis
363
Código Herdado de Arquivo I/O
365
Resumo de I/O Básico e NIO.2
366
Perguntas e Exercícios: Basic I/O and NIO.2
368
Perguntas368
Exercícios369
Respostas369
Capítulo 11 Coleções371
Introdução a Coleções
372
O Que é uma Estrutura de Coleções?
372
Benefícios da Java Collections Framework 373
Interfaces374
A Interface Collection
376
Atravessando Coleções
377
O Iterator
377
Operações em Bloco da Interface Collection 378
Operações de Array da Interface Collection
379
A Interface Set
380
A Interface List
384
A Interface Queue
394
A Interface Map
397
Ordenação de Objetos
405
A Interface SortedSet
412
A Interface SortedMap
415
Resumo de Interfaces
417
Perguntas e Exercícios: Interfaces
417
Implementações418
Implementações de Set
421
Implementaçoes de List
422
Book_The Java Tutorial_PFCG.indb 12
29/06/2015 15:15:14
Conteúdo
xiii
Implementações de Map
424
Implementações de Queue 425
Implementações Wrapper
427
Implementações Práticas 429
Resumo de Implementações
431
Perguntas e Exercícios: Implementações
432
Algoritmos432
Ordenação433
Embaralhando435
Manipulação de Dados de Rotina
435
Pesquisando436
Composição436
Encontrando Valores Extremos
437
Implementações Personalizadas de Collection
437
Razões para Escrever uma Implementação
437
Como Escrever uma Implementação Personalizada
438
Interoperabilidade440
Compatibilidade441
Projeto de API
443
Capítulo 12 Concorrência 445
Processos e Threads
446
Processos446
Threads446
Objetos Thread
447
Definindo e Iniciando uma Thread
447
Pausando a Execução com Sleep
448
Interruptores449
Joins451
O Exemplo SimpleThreads
451
Sincronização453
Interferência de Thread
453
Erros de Consistência de Memória
454
Métodos Sincronizados
455
Intrinsic Locks e Sincronização
457
Acesso Atômico
459
Liveness459
Deadlock460
Starvation e Livelock
461
Blocos Protegidos
461
Objetos Imutáveis
465
Book_The Java Tutorial_PFCG.indb 13
29/06/2015 15:15:14
xiv
Conteúdo
Um Exemplo de Classe Sincronizada
466
Uma Estratégia para Definir Objetos Imutáveis
467
Objetos Concorrentes de Alto Nível
469
Objetos Lock
470
Executores472
Coleções Concomitantes
477
Variáveis Atômicas
478
Números Randômicos Concomitantes
480
Perguntas e Exercícios: Concorrência
480
Pergunta480
Exercícios480
Respostas481
Capítulo 13 Expressões Regulares
483
Introdução484
O Que São Expressões Regulares?
484
Como São Representadas Expressões Regulares neste Pacote? 485
Test Harness
485
Strings Literals
486
Metacaracteres487
Classes de Caracteres
488
Classes Simples
488
Classe de Caracteres Predefinidas
492
Quantificadores495
Combinações Zero-Length
495
Capturando Grupos de Captura e Classes
de Caracteres com Quantificadores
498
Diferença entre Quantificadores Greedy,
Reluctant e Possessive
499
Grupos de Captura
500
Numeração501
Backreferences502
Boundary Matches
502
Métodos da Classe Pattern
504
Criando um Pattern com Flags
504
Expressões com Flag Embutidas
506
Usando o Método matches(String, CharSequence)
507
Usando o método split(String)
507
Outros Métodos Utilitários
508
Equivalentes de Métodos Pattern na java.lang.String
509
Métodos da classe Matcher
509
Book_The Java Tutorial_PFCG.indb 14
29/06/2015 15:15:14
Conteúdo
xv
Métodos Index
510
Métodos Study
510
Métodos Replacement
510
Usando os Métodos start e end
511
Usando os Métodos matches e lookingAt
512
Usando replaceFirst(String) e replaceAll(String)
513
Usando appendReplacement(StringBuffer,String) e
appendTail(StringBuffer)514
Métodos Equivalentes a Matcher na java.lang.String
515
Métodos da Classe PatternSyntaxException
515
Suporte Unicode
517
Combinando um Ponto Específico do Código
517
Propriedades de Caracteres Unicode
518
Recursos Adicionais
518
Perguntas e Exercícios: Regular Expressions
519
Perguntas519
Exercícios519
Respostas519
Capítulo 14 O Ambiente de Plataforma
521
Utilidades de Configuração
521
Propriedades522
Argumentos de Linha de Comando
526
Variáveis de Ambiente
527
Outras Utilidades de Configuração
529
Utilidades do Sistema
529
Objetos de I/O de Linha de Comando
530
Propriedades do Sistema
530
O Gerenciador de Segurança
533
Métodos Diversos em System
535
PATH e CLASSPATH
535
Atualizando a Variável de Ambiente PATH
(Microsoft Windows)
536
Atualizando a Variável PATH (Solaris e Linux)
538
Verificando a Variável CLASSPATH (Todas as Plataformas) 539
Perguntas e Exercícios: O Ambiente de Plataforma
540
Perguntas540
Exercícios540
Respostas540
Capítulo 15 Empacotando Programas em Arquivos JAR
541
Usando Arquivos JAR: O Básico
542
Book_The Java Tutorial_PFCG.indb 15
29/06/2015 15:15:14
xvi
Conteúdo
Criando um Arquivo JAR
543
Visualizando o Conteúdo de um Arquivo JAR
546
Extraindo o Conteúdo de um Arquivo JAR
548
Atualizando um Arquivo JAR
550
Rodando Software Empacotado
552
Trabalhando com Arquivos Manifesto: O Básico
553
Entendendo o Manifesto Default
554
Modificando um Arquivo Manifesto
554
Definindo o Ponto de Entrada de uma Aplicação
555
Acrescentando Classes à Class Path do Arquivo JAR
557
Definindo Informação da Versão do Pacote
558
Selando Pacotes dentro de um Arquivo JAR
559
Selando Arquivos JAR
560
Assinando e Verificando Arquivos JAR
560
Entendendo Assinatura e Verificação
561
Assinando Arquivos JAR
564
Verificando Arquivos JAR Assinados
566
Usando APIs Relacionadas a JAR
567
Um Exemplo: A Aplicação JarRunner
567
Perguntas: Empacotando Programas em Arquivos JAR
573
Perguntas573
Respostas573
Capítulo 16 Java Web Start
575
Desenvolvendo uma Aplicação Java Web Start
576
Criando a Classe Top JPanel
577
Criando a Aplicação
578
Os Benefícios de Separar a Funcionalidade Central
do Mecanismo Final de Distribuição
578
Recuperando Recursos
579
Distribuindo uma Aplicação Java Web Start
579
Definindo um Servidor Web
581
Exibindo um Indicador de Progresso de
Carregamento Personalizado
581
Desenvolvendo um Indicador de Progresso Personalizado 582
Especificando um Indicador de Progresso de Carregamento
Personalizado para uma Aplicação Java Web Start
584
Rodando uma Aplicação Java Web Start
585
Rodando uma Aplicação Java Web Start a
Partir de um Browser
585
Book_The Java Tutorial_PFCG.indb 16
29/06/2015 15:15:14
Conteúdo
xvii
Rodando uma Aplicação Java Web Start de
um Java Cache Viewer
585
Rodando uma Aplicação Java Web Start a Partir do Desktop 586
Java Web Start e Segurança
586
Download Dinâmico de Certificados HTTPS
587
Problemas Comuns no Java Web Start
587
“Meu Browser Mostra o arquivo JNLP
para Minha Aplicação como Texto Simples”
588
“Quando Tento Lançar Meu Arquivo JNLP,
Recebo uma Mensagem de Erro”
588
Perguntas e Exercícios: Java Web Start
588
Perguntas588
Exercícios589
Respostas589
Capítulo 17 Applets591
Introdução aos Applets
591
Definindo uma Subclasse Applet
592
Métodos para Milestones
593
Ciclo de Vida de um Applet
594
O Ambiente de Execução de um Applet
596
Desenvolvendo um Applet
597
Distribuindo um Applet
600
Fazendo Mais com Applets
603
Encontrando e Carregando Arquivos de Dados
603
Definindo e Usando Parâmetros de Applets
604
Exibindo Curtas Strings de Status
606
Exibindo Documentos no Browser
607
Invocando Código JavaScript a Partir de um Applet
608
Invocando Métodos Applet a Partir de Código JavaScript
611
Manejando o Status de Inicialização com
Manipuladores de Eventos
614
Manipulando o DOM de uma Página Web de um Applet 616
Exibindo um Indicador de Progresso de
Carregamento Personalizado
618
Desenvolvendo um Indicador de Progresso de
Carregamento Personalizado
618
Especificando um Indicador de Progresso de
Carregamento para um Applet
621
Integrando o Indicador de Progresso de Carregamento
com uma Interface de Usuário de um Applet
622
Book_The Java Tutorial_PFCG.indb 17
29/06/2015 15:15:14
Conteúdo
xix
Localização do Script Deployment Toolkit
650
Distribuindo um Applet
650
Distribuindo uma Aplicação Java Web Start
655
Verificando a Versão do Software JRE do Cliente
658
Java Network Launch Protocol
659
Estrutura do Arquivo JNLP
659
Melhores Práticas de Distribuição
667
Reduzindo o Tempo de Carregamento
667
Evitando Verificações de Atualização Desnecessárias
669
Assinando Arquivos JAR Somente Quando Necessário
671
Certificando-se da Presença do Software JRE
672
Perguntas e Exercícios: Distribuição em Profundidade
673
Perguntas673
Exercício673
Respostas674
Apêndice Preparando-se para a Certificação na Linguagem
de Programação Java
675
Exame Programador Nível 1
675
Seção 1: Noções Básicas Java
675
Seção 2: Trabalhando com Tipos de Dados Java
676
Seção 3: Usando Operadores e Construções de Decisão
677
Seção 4: Criar e Usar Arrays
678
Seção 5: Usando Construções de Loop
678
Seção 6: Trabalhando com Métodos e Encapsulamento
678
Seção 7: Trabalhando com Herança
679
Seção 8: Lidando com Exceções
680
Exame Programador Nível 2
680
Seção 1: Projeto de Classe Java
681
Seção 2: Projeto Avançado de Classe
681
Seção 3: Princípios de Projeto Orientado a Objeto
682
Seção 4: Genéricos e Coleções
682
Seção 5: Processamento de Strings
684
Seção 6: Exceções e Declarações
684
Seção 7: Fundamentos de Java I/O
685
Seção 8: Arquivos Java (NIO.2)
685
Seção 9: Construindo Aplicações de Bancos de
Dados com JDBC
686
Seção 10: Threads
686
Seção 11: Concomitância
687
Seção 12: Localização
687
Book_The Java Tutorial_PFCG.indb 19
29/06/2015 15:15:14
Conteúdo
xx
Exame de Atualização Java SE 7
Seção 1: Melhoramentos de Linguagem
Seção 2: Padrões de Projeto
Seção 3: Aplicações de Banco de Dados com JDBC
Seção 4: Concomitância
Seção 5: Localização
Seção 6: Arquivo Java I/O (NIO.2)
688
688
689
689
690
691
692
Índice693
Book_The Java Tutorial_PFCG.indb 20
29/06/2015 15:15:15
Prefácio
Desde a aquisição da Sun Microsystems pela Oracle Corporation no início de 2010, estamos
vivendo uma época excitante para a linguagem Java. Como evidenciado pelas atividades
do programa Java Community Process (Processo da Comunidade Java 1), a linguagem Java
continua a se desenvolver. A publicação desta quinta edição de O Tutorial Java reflete a
versão 7 da Java Platform Standard Edition (Java SE) e faz referência à Application Programming Interface (API – Interface de Programação de Aplicações) desta edição.
Esta edição introduz novos recursos adicionados à plataforma, desde a quarta edição
(sobre a versão 6), como a seção sobre NIO.2, o novo arquivo I/O API, e informação
sobre a migração de código de herança para a nova API. A cobertura sobre distribuição
foi expandida com novos capítulos sobre “Fazendo Mais com as Aplicações Java Rich
Internet” (Capítulo 18), e “Distribuição em Profundidade” (Capítulo 19). Uma seção
sobre o recurso Fork/Join foi adicionada ao capítulo sobre “Concorrência” (Capítulo 12).
Informações sobre os desenvolvimentos Project Coin foram acrescentadas onde necessário, incluindo a nova declaração try-with-resources, a habilidade de capturar mais de um
tipo de exceção com apenas um manejador de exceções, suporte para literais binários e a
sintaxe diamond, que resulta em códigos genéricos mais limpos.
Além da cobertura dos novos recursos, os capítulos anteriores foram reescritos, para
incluir novas informações. Por exemplo, “Genéricos” (Capítulo 6), “Java Web Start” (Ca1. N.T.: Organização criada em 1998, como um mecanismo para promover que pessoas ou entidades
pudessem participar na criação e no desenvolvimento de novas especificações da tecnologia Java.
xxi
Book_The Java Tutorial_PFCG.indb 21
29/06/2015 15:15:15
Prefácio
xxii
pítulo 16), e “Applets” (Capítulo 17), foram atualizados. O Apêndice sobre os exames
para a Certificação Java também foi revisado inteiramente.
Se pretende fazer um dos exames para certificação Java SE 7, este livro pode ajudar.
O Apêndice “Preparando-se para a Certificação na Linguagem de Programação Java” relaciona os três exames disponíveis, detalhando os itens cobertos em cada prova, com
referências cruzadas para os locais no livro onde você pode encontrar mais informações
sobre cada tópico. Note que esta é uma fonte, entre outras, que você quererá usar para se
preparar para a sua prova.
Todos os materiais foram totalmente revisados pelos membros da engenharia da Oracle Java para se certificar que a informação está correta e atualizada. Este livro é baseado
no tutorial online contido no web site da Oracle no seguinte endereço URL:
http://docs.oracle.com/javase/tutorial
A informação neste livro, também referido como “o tutorial núcleo” é essencial para
os programadores iniciantes e intermediários. Uma vez que tenha dominado este material, explore o resto da documentação sobre a plataforma Java no site. Se está interessado
em desenvolver aplicações sofisticadas Rich Internet Applications (RIAs), pesquise o Java
FX, o conjunto de ferramentas da nova interface gráfica de usuário (GUI – Graphical
User Interface) de tecnologia de ponta. A partir do lançamento do Java SE, atualização
5, você automaticamente recebe o Kit de Desenvolvimento de Software (SDK – Software
Development Kit) ao baixar o JDK (Java Development Kit). Para aprender mais, consulte a
documentação Java FX no seguinte endereço URL:
http://docs.oracle.com/javafx
Como sempre, nosso objetivo é criar um guia para programadores, prático e de fácil
leitura para ajudá-lo a aprender a usar o rico ambiente fornecido pela Java para construir
aplicações, applets e componentes. Vá em frente e programe!
Quem Deve Ler Este Livro?
Este livro é endereçado para programadores, tanto novatos quanto experientes.
„„
Novos programadores podem se beneficiar mais se lerem este livro do princípio até
o final, incluindo as instruções passo a passo para compilar e rodar seu primeiro
programa no Capítulo 1, “Dando a Partida”.
„„
Programadores experientes em linguagens procedimentais, como a C podem querer
começar com o material sobre os conceitos e recursos orientados a objeto da linguagem de programação Java.
Book_The Java Tutorial_PFCG.indb 22
29/06/2015 15:15:15
Prefácio
„„
xxiii
Programadores experientes podem preferir mergulhar em tópicos mais avançados
como genéricos, concorrência ou distribuição.
Este livro contém informações dirigidas para as necessidades de aprendizagem de programadores com variados níveis de experiência.
Como Usar Este Livro
Este livro foi projetado para que possa lê-lo desde o início até o fim, ou pular de tópico em
tópico. A informação é apresentada em uma ordem lógica e referências a assuntos futuros
são evitadas sempre que possível.
Os exemplos neste livro são compilados conforme a versão JDK 7. Você precisa baixar
esta versão (ou mais atual) para compilar e rodar a maioria dos exemplos.
Parte do material neste livro está disponível online (p. ex. os exemplos que podem ser
baixados, as respostas das perguntas e soluções dos exercícios, os guias JDK 7, e a especificação API). Você verá notas de rodapé como as seguintes:
7/docs/api/java/lang/Class.html
e
tutorial/java/generics/examples/BoxDemo.java
Este livro não seria o que é sem a ajuda da equipe de engenharia da Oracle Java que incansavelmente revisou o conteúdo técnico da nossa redação. Para esta edição deste livro,
queremos agradecer especialmente a Alan Bateman, Alex Buckley, Calvin Cheung, Maurizio Cimadamore, Joe Darcy, Andy Herrick, Stuart Marks, Igor Nekrestynov, Thomas
Ng, Nam Nguyen e Daniel Smith.
Os ilustradores Jordan Douglas e Dawn Tyler criaram nossos gráficos profissionais
rápida e eficientemente. Devika Gollapudi forneceu sua inestimável assistência na captura
das nossas telas para publicação.
As editoras Deborah Owens e Susan Shepard fizeram uma cuidadosa e completa revisão em nosso trabalho sobre JDK 7.
Obrigado pelo apoio de nossa equipe: Bhavesh Patel, Devika Gollapudi e Santosh La.
E, por último, mas não menos importante, obrigado pelo apoio de nossa gerência:
Alan Sommerer, conosco desde o início, Barbara Ramsey, Sophia Mikulinsky e Sowmya
Kannan, recentemente promovida a gerente do nosso time.
Book_The Java Tutorial_PFCG.indb 23
29/06/2015 15:15:15
1
Dando a Partida
Conteúdo do Capítulo
O Fenômeno da Tecnologia Java 1
A Aplicação “Hello World!” 5
Um Olhar Mais de Perto na Aplicação “Hello World!” 22
Problemas Comuns (e Suas Soluções) 25
Perguntas e Exercícios: Dando a Partida 29
Este capítulo oferece tudo que você precisa para dar a partida no aprendizado da linguagem de programação Java. O primeiro tópico traz uma visão geral da tecnologia Java
como um todo. Ele discute tanto a linguagem quanto a plataforma Java, fornecendo uma
visão geral ampla do que esta tecnologia pode fazer e como ela fará sua vida mais fácil. O
segundo tópico traz informações para a criação da aplicação “Hello World!”. Esta abordagem prática descreve o que baixar, instalar e digitar ao criar uma simples aplicação “Hello
World!”. O tópico oferece instruções separadas para o ambiente de desenvolvimento integrado NetBeans (NetBeans IDE), Microsoft Windows, Solaris, e Linux. A terceira parte
discute a aplicação “Hello World!”, descrevendo cada parte do código em detalhe. Ela
cobre comentários do código-fonte, o bloco de definição da classe HelloWorldApp, e
o método main. A quarta parte apresenta os problemas mais comuns e suas soluções. Ela
deve ser lida quando encontrar dificuldade em compilar e rodar os programas apresentados neste capítulo. Por fim, perguntas e exercícios para testar seu entendimento.
O Fenômeno da Tecnologia Java
As referências à tecnologia Java estão em todos os lugares, mas exatamente o que é isto? Esta
parte explica como a tecnologia Java é ao mesmo tempo uma linguagem de programação e
uma plataforma, e traz uma visão geral do que esta tecnologia pode fazer por você.
1
Book_The Java Tutorial_PFCG.indb 1
29/06/2015 15:15:15
Capítulo 1 2
1
n Dando a Partida
A Linguagem de Programação Java
A linguagem de programação Java é uma linguagem de alto nível que pode ser caracterizada pelas seguintes palavras-chave:
„„
Simples
„„
Orientada a Objeto
„„
Distribuível
„„
Multitarefa
„„
Dinâmica
„„
Arquitetura Neutra
„„
Portável
„„
Alta Performance
„„
Robusta
„„
Segura
Cada uma destas palavras-chave é explicada no documento The Java Language Environment (O Ambiente da Linguagem Java)1, escrito por James Gosling e Henry McGilton1.
Na linguagem de programação Java, todos os códigos-fonte são escritos primeiro em
arquivos de texto terminando com a extensão .java, estes arquivos de texto são então
compilados para arquivos .class pelo compilador javac. Um arquivo .class não
contém código nativo de seu processador, mas sim bytecodes – a linguagem da Java Virtual
Machine (Java VM)2. A ferramenta de lançamento java, então, processa sua aplicação
como um objeto específico de uma classe, na Máquina Virtual Java.
Como a Java Virtual Machine está disponível em muitos sistemas operacionais, os
mesmos arquivos .class são capazes de rodar em sistemas Microsoft Windows, Solaris,
Linux, e Mac OS X. Algumas máquinas virtuais Java, como a Java HotSpot Virtual Machine realiza algumas etapas adicionais em tempo real para incrementar a performance
de sua aplicação3. Isto inclui várias tarefas tais como encontrar gargalos de performance e
recompilar (para o código nativo) trechos frequentemente usados do código.
A Plataforma Java
Uma plataforma é um ambiente de hardware e software em que um programa é processado. Já mencionamos diversas plataformas mais populares como Microsoft Windows,
1. http://www.oracle.com/technetwork/java/langenv-140151.html
2. Os termos Java Virtual Machine (MáquinaVirtual Java) e Java VM indicam uma máquina virtual
para a plataforma Java.
3. http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html
Book_The Java Tutorial_PFCG.indb 2
29/06/2015 15:15:15
O Fenômeno da Tecnologia Java
3
Linux, Solaris e Mac. Muitas plataformas podem ser descritas como uma combinação
do sistema operacional e o hardware compatível. A plataforma Java difere da maioria das
demais, por ser uma plataforma somente de software, que roda acima das demais plataformas baseadas em hardware.
A plataforma Java tem dois componentes:
„„
A Máquina Virtual Java (JVM – Java Virtual Machine)
„„
A API Java (Interface de Programação de Aplicações Java)
1
Você já foi apresentado à Maquina Virtual Java; é a base para a plataforma Java e é utilizável sobre várias plataformas baseadas em hardware.
Figura 1.1 Uma Visão Geral do Processo de Desenvolvimento de Software
Figura 1.2 Através da Máquina Virtual Java,
a Mesma Aplicação é Capaz de Rodar em Múltiplas Plataformas
Book_The Java Tutorial_PFCG.indb 3
29/06/2015 15:15:16
Capítulo 1 4
1
n Dando a Partida
A API é uma grande coleção de componentes de programas pré-prontos, que permitem
muitos recursos úteis. É agrupado em bibliotecas de classes relacionadas e interfaces; estas bibliotecas são conhecidas como packages (pacotes). A próxima seção “O que a Tecnologia Java
Pode Fazer?” ressalta algumas das funcionalidades da API. Como um ambiente independente
de plataforma, a plataforma Java pode ser um pouco mais lenta do que o código nativo. Contudo, avanços na tecnologia do compilador e da máquina virtual estão tornando a a performance próxima de um desempenho com o código nativo, sem ameaçar a portabilidade.
O Que a Tecnologia Java Pode Fazer?
A linguagem de programação Java, de alto nível e aplicações gerais, é uma poderosa plataforma
de software. Cada implementação completa da plataforma Java oferece os seguintes recursos:
„„
„„
„„
„„
„„
Ferramentas de Desenvolvimento. As ferramentas de desenvolvimento trazem tudo o
que você precisa para compilar, processar, rastrear erros (debugging), e documentar sua
aplicação. Como um novo desenvolvedor, as principais ferramentas que vai usar são
o compilador javac, o lançador java, e a ferramenta de documentação javadoc.
API. A API fornece o núcleo central da funcionalidade da linguagem de programação Java, oferecendo um amplo conjunto de classes prontas para uso em suas
aplicações. Ela abrange tudo, desde objetos básicos, a processamento em rede, segurança, geração XML (Extensible Markup Language), acesso a bancos de dados,
e mais. O núcleo da API é bastante extenso; para ter uma ideia do seu conteúdo,
consulte a Documentação da Plataforma Java Standard Edition (Java SE) 74
Tecnologias de Distribuição. O software Java SE Development Kit – Kit de Desenvolvimento Java SE (JDK) oferece mecanismos básicos como o software Java Web Start
e o software Java Plug-in para a distribuição de suas aplicações para os usuários finais.
Ferramentas de interface de Usuário. Os conjuntos de ferramentas Java FX, Swing,
e Java 2D possibilitam a criação de sofisticadas interfaces gráficas de usuário (Graphical User Interfaces – GUIs).
Bibliotecas de Integração como API Java IDL (Java Interactive Data Language – Linguagem de Dados Interativa), API Java JDBC (Java Database Connectivity– Java Conectividade de Base de Dados), API Java JNDI (Java Naming and Directory Interface–Interface
Java de Nomenclatura e Diretório), Java RMI (Remote Method Invocation–Método de
Invocação Remota), e Tecnologia Java RMI-IIOP (Java Remote Method Invocation over
Internet Inter-ORB Technology, permitem o acesso e a manipulação de dados remotos.
Como a Tecnologia Java Pode Mudar a Minha Vida?
Não podemos prometer fama, fortuna, ou sequer um emprego, se você aprender a linguagem
de programação Java. Ainda assim, é provável que ela torne seus programas melhores e requeiram menos esforço que outras linguagens. Acreditamos que a tecnologia Java vai lhe ajudar a:
4. 7/docs/index.html
Book_The Java Tutorial_PFCG.indb 4
29/06/2015 15:15:16
A Aplicação “Hello World!”
5
1
Figura 1.3 A API e a Máquina Virtual Java Isolam o Programa, do Hardware Subjacente
„„
Começar rapidamente. Apesar de a linguagem Java ser uma poderosa linguagem
orientada a objeto, é fácil de aprender, especialmente para programadores já familiarizados com C ou C++.
„„
Escrever menos código. Comparações de contagens em programas (contagem de
classes, contagem de métodos, e assim por diante) sugerem que programas escritos na linguagem de programação Java podem ser quatro vezes menores que os
mesmos programas escritos em C++.
„„
Escrever um código melhor. A linguagem de programação Java estimula as boas práticas de codificação, e a coleta automática do lixo o ajuda a evitar problemas de
memória. Sua orientação a objetos, sua arquitetura de componentes JavaBeans, e a
sua API de amplo alcance e facilmente extensível permitem a reutilização de códigos existentes e testados, ajudando, assim, o surgimento de menos bugs.
„„
Desenvolver programas mais rapidamente. A linguagem de programação Java é mais simples que C++ e, portanto, seu tempo de desenvolvimento pode ser até duas vezes menor
ao escrever com ela. Seus programas também vão requerer menos linhas de código.
„„
Evitar dependência de plataformas. Você pode manter seu programa portátil, evitando o uso de bibliotecas escritas em outras linguagens.
„„
Escrever uma vez e rodar em qualquer lugar. Como as aplicações escritas na linguagem de programação Java são compiladas em bytecodes independentes de máquinas, eles rodam de forma consistente em qualquer plataforma Java.
„„
Distribuir software mais facilmente. Com o software Java Web Start, os usuários são
capazes de abrir suas aplicações com um clicar de mouse. Uma verificação automática de versão na abertura assegura que os usuários estejam sempre atualizados com
a última versão de seu software. Se uma atualização estiver disponível, o software
Java Web Start faz a atualização automaticamente.
A Aplicação “Hello World!”
Este tópico oferece instruções detalhadas para compilar e processar uma aplicação simples “Hello
World!” (Olá, Mundo). Ela traz informações sobre como começar com a IDE NetBeans, um
Book_The Java Tutorial_PFCG.indb 5
29/06/2015 15:15:17
Capítulo 1 6
1
n Dando a Partida
ambiente de desenvolvimento integrado que facilita em muito o processo de desenvolvimento do software. A IDE NetBeans roda em todas as plataformas populares; instruções
específicas da plataforma são fornecidas para começar sem uma IDE. Primeiro, fornecemos instruções para usuários da IDE NetBeans. A IDE NetBeans roda na plataforma Java,
o que significa que pode ser usada para qualquer sistema operacional para o qual exista
um JDK 7 (Java Development Kit) disponível. Recomendamos que utilize a IDE NetBeans,
em vez de utilizar a linha de comando, sempre que possível.
Em seguida, damos instruções de linha de comando para usuários do Microsoft Windows. Também fornecemos instruções de linhas de comando para os usuários de Solaris e
Linux. Finalmente, relacionamos alguns problemas comuns (e suas soluções); consulte o
final deste tópico caso tenha problemas ao compilar ou processar sua aplicação.
“Hello World!” para a IDE NetBeans
É hora de escrever sua primeira aplicação! Estas instruções detalhadas são para usuários da IDE
NetBeans. Como mencionado anteriormente, a IDE NetBeans roda na plataforma Java; você
pode usá-la com qualquer sistema operacional para o qual exista um JDK 7 disponível.
Uma Lista de Verificação
Para escrever seu primeiro programa, você vai precisar do seguinte:
1. O Kit de Desenvolvimento Java (JDK 7 foi selecionado para este exemplo). Para
obter este kit para todas as plataformas, consulte o Java SE Downloads Index.5
2. A IDE NetBeans. Para obter esta IDE para todas as plataformas, consulte o NetBeans Downloads Index6.
Criando Sua Primeira Aplicação
Sua primeira aplicação HelloWorldApp, simplesmente vai exibir a saudação “Hello
World!”. Para criar este programa, faça o seguinte:
1. Crie um projeto IDE. Ao criar um projeto IDE, você cria um ambiente no qual possa
construir e rodar suas aplicações. Usar projetos IDE elimina questões de configuração
normalmente associadas com o desenvolvimento na linha de comando. É possível
construir e rodar sua aplicação escolhendo um único item de menu dentro da IDE.
2. Adicione código ao arquivo-fonte gerado. Um arquivo-fonte contém código, escrito
na linguagem de programação Java, que você e outros programadores podem en-
5. http://www.oracle.com/technetwork/java/javase/downloads/index.html
6. http://netbeans.org/downloads/index.html
Book_The Java Tutorial_PFCG.indb 6
29/06/2015 15:15:17
A Aplicação “Hello World!”
7
tender. Como parte da criação de um projeto IDE, um esqueleto de arquivo-fonte
será automaticamente gerado. Basta modificar o arquivo-fonte, para acrescentar a
mensagem “Hello World!”.
1
3. Compile o arquivo-fonte para um arquivo .class. A IDE invoca o compilador da
linguagem de programação Java (javac), que pega seu arquivo-fonte e traduz seu
texto em instruções que a Máquina Virtual Java consegue entender. As instruções
contidas dentro deste arquivo compilado são conhecidas como bytecodes.
4. Rode o programa. A IDE invoca a ferramenta Java de lançamento (java), que usa
a Máquina Virtual Java para rodar sua aplicação.
Crie um Projeto IDE
Para criar um projeto IDE, faça o seguinte:
1. Abra o NetBeans IDE
„„
No sistema Microsoft Windows, use o item NetBeans IDE, no menu Start.
„„
Nos sistemas Solaris e Linux, execute o script de lançamento navegando para o
diretório bin da IDE e digitando ./netbeans.
„„
No sistema Mac OS X, clique no ícone da aplicação NetBeans IDE.
2. Na tela inicial do NetBeans IDE, escolha File e então selecione New Project (Figura 1.4).
3. No Assistente New Project, expanda a categoria Java e selecione Java Application
(Figura 1.5).
4. Na página Name and Location do Assistente, faça o seguinte (Figura 1.6):
Figura 1.4 A IDE NetBeans com o Item do Menu New Project Selecionado
Book_The Java Tutorial_PFCG.indb 7
29/06/2015 15:15:18
Capítulo 1 8
n Dando a Partida
1
Figura 1.5 A IDE NetBeans, Assistente New Project, Página Choose Project (Escolha Projeto)
Figura 1.6 A IDE NetBeans, Assistente New Project, Página Name and Location
Book_The Java Tutorial_PFCG.indb 8
29/06/2015 15:15:19
A Aplicação “Hello World!”
„„
„„
„„
9
No campo Project Name, digite Hello World App.
1
No campo Create Main Class, digite helloworldapp.HelloWorldApp.
Marque a caixa de seleção Set as Main Project
5. Clique em Finish.
O projeto foi criado e aberto na IDE (Figura 1.7). Você deverá ver os seguintes
componentes:
„„
A janela de Projetos, contendo uma vista em árvore dos componentes do projeto,
incluindo arquivo-fonte, bibliotecas das quais o seu código depende, etc.
„„
A janela Source Editor (Editor de Arquivo-Fonte), com um arquivo chamado
HelloWorldApp aberto.
„„
A janela de Navegação, que pode ser usada para navegar rapidamente entre elementos dentro da classe selecionada.
Adicione JDK 7 à Lista da Plataforma (Se Necessário)
Pode ser que seja necessário adicionar JDK 7 na lista de plataformas disponíveis da IDE. Para
fazer isto, escolha Tools e ,então, selecione Java Platforms, como mostrado na Figura 1.8.
Se não visualizar JDK 7 (que pode aparecer como 1.7 ou 1.7.0) na lista de plataformas instaladas, clique em Add Platform, navegue para seu diretório de instalação do JDK 7, e clique Finish. Agora deve ser possível visualizar a nova plataforma acrescentada, mostrada na Figura 1.9.
Para configurar este JDK como default para todos os projetos, você pode rodar a IDE
com o switch --jdkhome na linha de comando. Também é possível fazer isto entrando
com o caminho para o JDK na propriedade netbeans_j2sdkhome do seu arquivo
INSTALLATION_DIRECTORY/etc/netbeans.conf.
Para especificar este JDK para somente este projeto em particular, selecione Hello World
App no painel de Projetos, escolha File e, então, selecione Project Properties (Hello World
App), clique em Libraries, e depois selecione JDK 7 no menu de seleção da Plataforma Java.
Deve surgir uma tela similar à da Figura 1.10. A IDE está agora configurada para JDK 7.
Figura 1.7 A IDE NetBeans com o Projeto HelloWorldApp Aberto
Book_The Java Tutorial_PFCG.indb 9
29/06/2015 15:15:19
Capítulo 1 10
1
n Dando a Partida
Adicione Código ao Arquivo-fonte Gerado
Quando criou este projeto, você deixou a caixa de seleção Create Main Class selecionada
no assistente New Project. A IDE criou ,portanto, um esqueleto de classe. Você pode adicionar a mensagem “Hello World!” ao esqueleto de código substituindo a linha
Figura 1.8 Selecionando o Java Platform Manager no Menu Tools
Figura 1.9 O Gerenciador de Plataforma Java (Java Platform Manager)
Book_The Java Tutorial_PFCG.indb 10
29/06/2015 15:15:20
A Aplicação “Hello World!”
11
1
Figura 1.10 A Categoria Libraries nas Propriedades do Projeto Hello World App
com a linha
Opcionalmente, você pode substituir estas quatro linhas do código gerado
por estas linhas
Estas quatro linhas são um comentário de código e não afetam a forma como programa
é executado. Os próximos tópicos deste capítulo explicam o uso e formato dos comentários de código.
Book_The Java Tutorial_PFCG.indb 11
29/06/2015 15:15:22
Capítulo 1 12
1
n Dando a Partida
Nota
Digite todos os códigos, comandos, e nomes de arquivo exatamente como mostrado.
Tanto o compilador (javac) como o lançador (java) são sensíveis a maiúsculas e
minúsculas, portanto use maiúsculas e minúsculas de maneira adequada. Por exemplo,
HelloWorldApp não é o mesmo que helloworldapp.
Salve suas alterações selecionando File e depois Save. O arquivo deve ficar parecido
com o seguinte:
Compile o Arquivo-Fonte para um Arquivo .class
Para compilar seu arquivo-fonte, no Menu principal da IDE, selecione Run e depois
Build Main Project. A janela de Saída abre e mostra uma saída similar a Figura 1.11.
Se a saída construída terminar com a declaração BUILD SUCCESFULL, então parabéns! Você compilou seu programa!
Se a saída da construção finaliza com a declaração BUILD FAILED, provavelmente
houve um erro de sintaxe em seu código. Os erros são relatados na janela de Saída como
texto com hiperlink. Dê um duplo clique no hiperlink para navegar para a origem do
erro. Então, você pode corrigir o erro e repetir mais uma vez selecionando Run e depois
Build Main Project.
Ao construir o projeto, o arquivo em bytecode HelloWorldApp.class é gerado.
É possível visualizar onde o novo arquivo é gerado abrindo a janela Files e expandindo
o item Hello World App/build/classes/helloworldapp, como mostrado na
figura 1.12. Agora que você construiu o projeto, é só rodar seu programa.
Rode o programa
A partir da barra de Menu da IDE, selecione Run e depois Run Main Project. A Figura
1.13 mostra o que será visualizado. Parabéns, seu programa funciona!
Book_The Java Tutorial_PFCG.indb 12
29/06/2015 15:15:22
A Aplicação “Hello World!”
13
1
Figura 1.11 Janela de Saída Mostrando os Resultados da Construção do Projeto HelloWorldApp
Figura 1.12 Janela de Arquivos Mostrando o Arquivo .class Gerado
Figura 1.13 O Programa exibe “Hello World!” na Janela de Saída (Junto com Outras
Saídas do Script de Construção)
Book_The Java Tutorial_PFCG.indb 13
29/06/2015 15:15:23
Capítulo 1 14
1
n Dando a Partida
Continuando com a IDE NetBeans
O restante deste capítulo explica o código desta aplicação simples. Os capítulos que se
seguem vão mais fundo no núcleo de recursos da linguagem e fornecem muito mais
exemplos. Apesar do restante deste livro não dar instruções específicas sobre o uso da IDE
NetBeans, você pode facilmente usar a IDE para escrever e rodar o código de amostra. A
seguir estão algumas indicações sobre o uso da IDE e explicações sobre alguns comportamentos da IDE que provavelmente verá:
„„
„„
„„
„„
„„
„„
Uma vez que tenha criado um projeto na IDE, é possível adicionar arquivos ao projeto, usando o assistente New File. Selecione File e depois New File, e escolha um
template no assistente, tal como o template Empty Java File (Arquivo Vazio Java).
Você pode compilar e rodar um arquivo individual (em oposição a um projeto
completo) usando os comandos Compile File (F9) e Run File (Shift+F6) da IDE.
Se usar o comando Run Main Project, a IDE rodará o arquivo que a IDE associa
como a classe principal do projeto principal. Portanto, se criar uma classe adicional
no seu projeto HelloWorldApp e tentar rodar aquele arquivo com o comando Run
Main Project, a IDE vai rodar o arquivo HelloWorldApp.
É possível que você queira criar projetos IDE separados para aplicações de amostra
que incluam mais do que um arquivo-fonte.
Ao digitar na IDE, uma caixa de complementação de código pode aparecer periodicamente. Você pode ignorar a complementação do código e continuar digitando
ou selecionar uma das expressões sugeridas. Se preferir que a caixa de complementação de código não apareça automaticamente, desative o recurso. Selecione Tools,
depois Options, e então Editor. Clique na aba Code Completion, e limpe a janela
Auto PopUp Completion Window na caixa de seleção.
Se quiser renomear o nó para um arquivo-fonte na janela Projects, selecione
Refactor no menu principal da IDE. A IDE apresenta uma caixa de diálogo
Rename e o conduz através das opções de renomeação da classe e atualização
do código que se refere àquela classe. Faça as alterações e clique Refactor para
aplicar as mudanças. Esta sequencia de cliques pode parecer desnecessária se só
há uma simples classe no seu projeto, mas é bastante útil quando suas mudanças
afetam outras partes do seu código, em projetos maiores.
Para um guia mais abrangente dos recursos da IDE NetBeans, veja a página de
NetBeans Documentation7
“Hello World! para o Microsoft Windows
É hora de escrever sua primeira aplicação. As instruções seguintes são para usuários do
Windows.
7. http://www.netbeans.org/kb/index.html
Book_The Java Tutorial_PFCG.indb 14
29/06/2015 15:15:23
A Aplicação “Hello World!”
15
Uma Lista de Verificação
1
Para escrever seu primeiro programa, você precisará do seguinte:
1. JDK 7. Baixe a a versão para Windows.8 (Certifique-se de baixar o JDK, e não o
Java Runtime Environment, ou JRE). Consulte as instruções.9
2. Um editor de texto. Neste exemplo, usaremos o NotePad, um editor simples incluído nas plataformas Windows. É possível adaptar facilmente estas instruções, caso
você utilize um editor de texto diferente.
Estes dois itens são tudo que você precisa para escrever sua primeira aplicação.
Criando sua Primeira Aplicação
Sua primeira aplicação, HelloWorldApp, vai simplesmente exibir a saudação “Hello,
World!”. Para criar este programa, faça o seguinte:
1. Crie um arquivo-fonte. Um arquivo-fonte contém código, escrito na linguagem de
programação Java, que você e outros programadores podem entender. É possível
usar qualquer editor de texto para criar e editar arquivos-fonte.
2. Compile o arquivo-fonte para um arquivo .class. O compilador da linguagem
de programação Java (javac) pega o seu código e traduz seu texto em instruções
que a Máquina Virtual Java pode entender. Como mencionado anteriormente, as
instruções contidas neste arquivo são conhecidas como bytecodes.
3. Rode o programa. A ferramenta de lançamento Java (java) usa a Máquina Virtual
Java para rodar sua aplicação.
Crie um Arquivo-Fonte
Para criar um arquivo-fonte, existem duas opções: salvar o arquivo HelloWorldApp.
java no seu computador e evitar um bocado de digitação ou usar as seguintes (e mais
longas) instruções.
Primeiro, abra seu editor, tal como o NotePad. Em um documento novo digite o seguinte código:
8. http://www.oracle.com/technetwork/java/javase/downloads/index.html
9. 7/docs/webnotes/install
Book_The Java Tutorial_PFCG.indb 15
29/06/2015 15:15:24
Capítulo 1 16
1
n Dando a Partida
Nota
Digite todos os códigos, comandos, e nomes de arquivo exatamente como mostrado.
Tanto o compilador (javac) como o lançador (java) são sensíveis a maiúsculas e
minúsculas, portanto utilize maiúsculas e minúsculas de forma apropriada. Por exemplo, HelloWorldApp não é o mesmo que helloworldapp.
Salve o código em um arquivo com o nome HelloWorlApp.java. Para fazer isto no
NotePad, na barra de menu, selecione File e depois Save As. Então, na caixa de diálogo
Save As, faça o seguinte:
1. Usando o Save na caixa de combinação, especifique a pasta (diretório) onde salvará
seu arquivo. Neste exemplo, o diretório é Java no drive C.
2. No campo de Nome do arquivo digite “HelloWorldApp.java”, incluindo as
aspas.
3. Na caixa de combinação Save as type, escolha Text Document (*.txt)
4. Na caixa de combinação Encoding, deixe a codificação como ANSI.
Quando tiver terminado, a caixa de diálogo deve parecer como na Figura 1.14. Agora
clique Save, e saia do NotePad.
Compile o Arquivo-Fonte para um Arquivo .class
Abra a janela shell, ou janela “de comando”. Isto pode ser feito a partir do menu Start
(Iniciar), escolhendo Command Prompt ou escolhendo Run... e digitando cmd. A
janela shell deve ser similar à da Figura 1.15.
O prompt mostra seu diretório atual. Ao abrir o prompt, seu diretório atual é, em
geral, seu diretório principal, como mostrado na Figura 1.15
Para compilar seu arquivo-fonte, mude o diretório atual para o diretório onde o seu
arquivo está localizado. Por exemplo, se o seu diretório fonte é java, no drive C, digite o
seguinte comando no prompt, e aperte Enter:
Agora o prompt deve mudar para C:\java>.
Nota
Para mudar para um diretório em um drive diferente, digite um comando adicional: o
nome do drive. Por exemplo, para mudar para o diretório java no drive D, digite D:,
como mostrado na Figura 1.16
Book_The Java Tutorial_PFCG.indb 16
29/06/2015 15:15:24
A Aplicação “Hello World!”
17
1
Figura 1.14 A Caixa de Diálogo Save As, Logo Antes de Você Clicar em Save
Figura 1.15 Uma Janela de Shell
Figura 1.16 Mudando o Diretório para um Drive Alternativo
Book_The Java Tutorial_PFCG.indb 17
29/06/2015 15:15:25
Capítulo 1 18
1
n Dando a Partida
Ao digitar dir no prompt, você deve ver seu arquivo-fonte, como mostra a Figura
1.17. Agora você está pronto para compilar. No prompt, digite o seguinte comando e
aperte Enter;
O compilador gerou um arquivo bytecode, HelloWorldApp.class. No prompt,
digite dir para ver o novo arquivo que foi gerado, com mostrado na Figura 1.18. Agora
que você tem um arquivo .class, é só rodar o programa.
Rode o Programa
No mesmo diretório, entre com o seguinte comando no prompt:
A Figura 1.19 mostra o que será visualizado. Parabéns! Seu programa funciona! Se encontrar problemas com as instruções neste ou em quaisquer passos deste tópico, consulte
a seção “Problemas Comuns (e Suas Soluções)” ao final deste capítulo.
“Hello World!” para Solaris e Linux
É hora de escrever sua primeira aplicação. As instruções seguintes são para usuários do
Solaris e Linux.
Uma Lista de Verificação
Para escrever seu primeiro programa, você precisará do seguinte:
Figura 1.17 Listagem do Diretório Mostrando o Arquivo-Fonte .java
Book_The Java Tutorial_PFCG.indb 18
29/06/2015 15:15:26
A Aplicação “Hello World!”
19
1
Figura 1.18 Listagem do Diretório Mostrando o Arquivo .class Gerado
Figura 1.19 O Programa exibe “Hello, World!” na tela
1. JDK 7. Baixe a versão para Solaris ou Linux.10 (Certifique-se de baixar o JDK, e não
o JRE). Consulte as instruções de instalação.11
2. Um editor de texto. Neste exemplo, usaremos o pico, um editor disponível para
muitas plataformas baseadas em UNIX. É possível adaptar facilmente estas instruções caso utilize um editor de texto diferente, como vi ou emacs.
Estes dois itens são tudo que você precisa para escrever sua primeira aplicação.
Criando sua Primeira Aplicação
Sua primeira aplicação, HelloWorldApp, vai simplesmente exibir a saudação “Hello
World!”. Para criar este programa, faça o seguinte:
1. Crie um arquivo-fonte. Um arquivo-fonte contém código, escrito na linguagem
de programação Java, que você e outros programadores entendem. É possível usar
qualquer editor de texto para criar e editar arquivos-fonte.
10. http://www.oracle.com/technetwork/java/javase/downloads/index.html
11. 7/docs/webnotes/install
Book_The Java Tutorial_PFCG.indb 19
29/06/2015 15:15:27
20
1
Capítulo 1 n Dando a Partida
2. Compile o arquivo-fonte para um arquivo .class. O compilador da linguagem de
programação Java (javac) traduz o código e o texto em instruções que a Máquina
Virtual Java pode entender. Como mencionado anteriormente, as instruções contidas neste arquivo são conhecidas como bytecodes.
3. Rode o programa. A ferramenta de lançamento Java (java) usa a Máquina Virtual
Java para rodar sua aplicação.
Crie um Arquivo-Fonte
Para criar um arquivo-fonte, existem duas opções: salvar o arquivo HelloWorldApp.
java no seu computador e evitar um bocado de digitação ou usar as seguintes (e mais
longas) instruções.
Primeiro, abra a janela de shell, ou “terminal”, mostrada na Figura 1.20. Ao receber
o prompt, seu diretório atual será, normalmente, seu diretório inicial. É possível mudar
seu diretório atual para o diretório principal a qualquer tempo, digitando cd no prompt
e apertando Return.
Os arquivos-fonte criados devem ser mantidos em um diretório à parte. Crie um diretório usando o comando mkdir. Por exemplo, para criar o diretório examples/java
no diretório /tmp (temporário), use os seguintes comandos:
Para mudar seu diretório atual para este novo diretório, entre com o comando:
Agora você pode começar a criar o seu arquivo-fonte. Abra seu editor pico digitando
pico no prompt e apertando Return. Se o sistema responder com a mensagem pico:
command not found, provavelmente o pico não está disponível. Consulte seu administrador do sistema para mais informações ou use outro editor. Ao iniciar o pico, ele
exibirá um novo buffer vazio. Esta é a área onde deve ser digitado o código.
Digite o seguinte código no buffer:
Figura 1.20 Uma Janela Terminal Nova
Book_The Java Tutorial_PFCG.indb 20
29/06/2015 15:15:27
A Aplicação “Hello World!”
21
1
Nota
Digite todos os códigos, comandos e nomes de arquivo exatamente como mostrado.
Tanto o compilador (javac) como o lançador (java) são sensíveis a maiúsculas e
minúsculas, portanto use-as de maneria adequada. Por exemplo, HelloWorldApp
não é o mesmo que helloworldapp.
Salve o código em um arquivo com o nome HelloWorldApp.java. No editor pico,
isto pode ser feito digitando Ctrl+O e na parte inferior onde está o prompt File Name
to Write:, entrando com o diretório em que deseja criar o arquivo, seguido por HelloWorldApp.java. Por exemplo, se deseja salvar HelloWorldApp.java no diretório
/tmp/exemplos/java, digite /tmp/exemplos/java/HelloWorldApp.java e
aperte Return. Para sair do pico, digite Ctrl+X .
Compile o Arquivo-Fonte para um Arquivo .class
Abra uma nova janela de shell. Para compilar seu arquivo-fonte, mude seu diretório atual para
o diretório onde o arquivo está localizado. Por exemplo, se o diretório onde está o arquivo-fonte é /tmp/exemplos/java, digite o seguinte comando no prompt e aperte Return:
Ao entrar com o comando pwd (print working directory) no prompt, é possível visualizar
o diretório atual, que neste exemplo foi mudado para /tmp/exemplos/java. Ao entrar com o comando ls (list) no prompt, seu arquivo será visualizado.
Agora você está pronto para compilar o arquivo-fonte. No prompt, digite o seguinte
comando, e depois aperte Return:
Figura 1.21 Resultados do Comando ls Mostrando o Arquivo-Fonte .java
Book_The Java Tutorial_PFCG.indb 21
29/06/2015 15:15:28
Capítulo 1 22
n Dando a Partida
1
Figura 1.22 Resultados do Comando ls Mostrando o Arquivo .class Gerado
Figura 1.23 A Saída Imprime “Hello World!” na Tela
O compilador gerou um arquivo bytecode, HelloWorldAp.class. No prompt,
digite ls para ver o novo arquivo que foi gerado, como mostrado na Figura 1.22. Agora
que você tem um arquivo .class, é só rodar o programa.
Rode o Programa
No mesmo diretório, entre com o seguinte comando no prompt:
A Figura 1.23 mostra o que será visualizado. Parabéns! Seu programa funciona!
Um Olhar Mais de Perto na Aplicação “Hello World!”
Agora que já conhece a aplicação “Hello World!” (e talvez a tenha compilado e rodado),
pode estar imaginando como ela funciona. Aqui está mais uma vez o código:
Book_The Java Tutorial_PFCG.indb 22
29/06/2015 15:15:29
Um Olhar Mais de Perto na Aplicação “Hello World!”
23
A aplicação “Hello World” consiste de três componentes primários: comentários do
código-fonte, a definição da classe HelloWorldApp, e o método principal (main). A
explicação a seguir lhe dará um entendimento básico do código, mas as implicações mais
profundas só ficarão mais claras depois que concluir a leitura deste livro.
1
Comentários do Código Fonte
Os seguintes textos em negrito definem os comentários da aplicação “Hello World!”:
Os comentários são ignorados pelo compilador, mas são úteis para outros programadores. A linguagem de programação Java suporta três tipos de comentários:
/* texto */ O compilador ignora tudo desde /* até */.
/** documentação */ Isto indica um comentário de documentação (documen-
tation comment – doc comment, de forma abreviada). O compilador ignora este
tipo de comentário, da mesma forma que ignora comentários que usam /* e */. A
ferramenta Javadoc usa os comentários de documentação quando está preparando
a documentação automaticamente gerada. Para mais informações sobre o Javadoc,
veja o Javadoc Tool Documentation.12
// texto O compilador ignora tudo desde // até o final da linha.
A Definição da Classe HelloWorldApp
O seguinte texto em negrito começa o bloco de definição de classe para a Aplicação
“Hello World!”
12. 7/docs/technotes/guides/javadoc/index.html.
Book_The Java Tutorial_PFCG.indb 23
29/06/2015 15:15:30
24
Capítulo 1 n Dando a Partida
1
Como mostrado previamente, a forma mais básica de uma definição de classe é como a
seguir:
A palavra-chave class começa a definição de classe para uma classe chamada nome e
o código para cada classe aparece entre a abertura e o fechamento das chaves marcadas
em negrito. O Capítulo 2 traz uma visão geral das classes em geral e o Capítulo 4 discute
as classes em detalhe. Por agora, é suficiente saber que cada aplicação começa com uma
definição de classe.
O Método main (Principal)
O seguinte texto em negrito começa a definição do método main:
Na linguagem de programação Java, cada aplicação deve conter um método main, cuja
signature (assinatura) é a seguinte:
Os modificadores public e static podem ser escritos em qualquer ordem (public
static ou static public), mas o convencional é usar public static, como mos-
trado aqui. Você pode nomear o argumento com qualquer coisa que quiser, mas a maioria
dos programadores escolhe args (arguments – argumentos) ou argv (argument values –
valores de argumentos).
O método main é similar à função main nas linguagens C e C++; é o ponto de entrada para sua aplicação e subsequentemente invocará todos os outros métodos requeridos
pelo seu programa. O método main aceita um argumento único: um array de elementos
do tipo String.
Este array é o mecanismo através do qual o sistema de runtime passa informações para
sua aplicação. Aqui está um exemplo:
Book_The Java Tutorial_PFCG.indb 24
29/06/2015 15:15:31
Problemas Comuns (e Suas Soluções)
25
1
Cada string no array é chamada de um argumento de linha de comando (command-line
argument). Argumentos de linha de comando permitem aos usuários afetarem a operação
da aplicação sem terem que recompilá-la. Por exemplo, um programa de classificação
poderia permitir o usuário especificar que os dados sejam classificados em ordem descendente com este argumento de linha de comando:
A aplicação “Hello World!” ignora seus argumentos de linha de comando, mas esteja
ciente de que tais argumentos existem. Finalmente, veja a seguinte linha:
Ela usa a classe System da biblioteca central para imprimir a mensagem “Hello World!” na
saída padrão. Partes desta biblioteca (também conhecida como Interface de Programação
da Aplicação - Application Programming Interface ou API) serão discutidas em capítulos
posteriores.
Problemas Comuns (e Suas Soluções)
Problemas no Compilador
Mensagens de Erro Comuns nos Sistemas Microsoft Windows
Se receber este erro, significa que o Windows não consegue achar o compilador (javac).
Para dizer ao Windows onde encontrar o javac, supondo que o JDK esteja instalado
em C:\jdkl.7.0, digite no prompt o seguinte comando, seguido de Enter:
Se escolher esta opção, você terá que começar seus comandos javac e java com C:\
jdk1.7.0\bin\ cada vez que compilar ou rodar um programa. Para evitar esta digitação extra, consulte as instruções de instalação do JDK 7.13
Se receber este erro, significa que esqueceu de incluir o sufixo .java ao compilar o programa; o comando é javac HelloWorldApp.java e não javac HelloWorldApp.
13. 7/docs/webnotes/install/windows/jdk-installation-windows.html#path
Book_The Java Tutorial_PFCG.indb 25
29/06/2015 15:15:32
26
1
Capítulo 1 n Dando a Partida
Mensagens de Erro Comuns nos Sistemas UNIX
Se receber este erro, significa que o UNIX não conseguiu encontrar o compilador javac.
Para dizer ao UNIX onde encontrar o javac, supondo que o JDK esteja instalado em
/usr/local/jdk1.7.0, digite no prompt o seguinte comando, seguido de Enter:
Se escolher esta opção, cada vez que compilar ou rodar um programa , você terá que
começar seus comandos javac e java com /usr/local/jdk1.7.0/. Para evitar
esta digitação extra, acrescente esta informação à sua variável PATH. Os passos para fazer
desta maneira variam dependendo de qual shell esteja usando.
Se receber este erro, significa que esqueceu de incluir o sufixo .java ao compilar o programa; o comando é javac HelloWorldApp.java, e não javac HelloWorldApp.
Erros de Sintaxe (Todas as Plataformas)
Se digitar errado alguma parte do programa, o compilador pode emitir um erro de sintaxe. A mensagem geralmente mostra o tipo de erro, o número da linha de código onde
o erro foi detetado, o código nesta linha, e a posição do erro dentro do código (˄). Aqui
está um erro causado pela omissão de um ponto e vírgula, no final de uma declaração:
Se surgirem quaisquer erros de compilação, seu programa não foi compilado com
sucesso, e o compilador não criou um arquivo .class. Cuidadosamente verifique o
programa, corrija quaisquer erros detectados e tente outra vez.
Erros de Semântica
Além de verificar que o seu programa esteja sintaticamente correto, o compilador verifica
outras correções básicas. Por exemplo, o compilador alerta toda vez que for utilizada uma
variável que não tenha sido inicializada:
Book_The Java Tutorial_PFCG.indb 26
29/06/2015 15:15:33
Download