Apostila Caelum - JAVA

Apostila Caelum - JAVA

(Parte 1 de 14)

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos

Caelum

“Mata o tempo e matas a tua carreira” Bryan Forbes -

Sobre a empresa

A Caelum atua no mercado desde 2002, desenvolvendo sistemas e prestando consultoria em diversas áreas, à luz sempre da plataforma Java. Foi fundada por profissionais que se encontraram no Brasil depois de uma experiência na Alemanha e Itália, desenvolvendo sistemas de grande porte com integração aos mais variados ERPs. Seus profissionais publicaram já diversos artigos nas revistas brasileiras de Java, assim como artigos em eventos acadêmicos, e são presença constante nos eventos da tecnologia.

Em 2004 a Caelum criou uma gama de cursos que rapidamente ganharam grande reconhecimento no mercado. Os cursos foram elaborados por ex-instrutores da Sun que queriam trazer mais dinamismo e aplicar as ferramentas e bibliotecas utilizadas no mercado, tais como Eclipse, Hibernate, Struts, e outras tecnologias open source que não são abordadas pela Sun. O material utilizado foi inicialmente desenvolvido enquanto eram ministrados os cursos de verão de java da Universidade de São Paulo em janeiro de 2004 pelos instrutores da Caelum.

Em 2006 a empresa foca seus projetos em três grandes áreas: sistemas de gerenciamento de conteúdo para portais, soluções de integração financeira e treinamento com intuito de formação.

Sobre a apostila

Esta é a apostila da Caelum que tem como intuito ensinar Java de uma maneira elegante, mostrando apenas o que é necessário no momento correto e poupando o leitor de assuntos que não costumam ser de seu interesse em determinadas fases do aprendizado.

A Caelum espera que você aproveite esse material, e que ele possa ser de grande valia para auto didatas e estudantes. Todos os comentários, críticas e sugestões serão muito bem vindos.

O material aqui contido pode ser publicamente distribuído desde que não seja alterado e seus créditos sejam mantidos. Ele não pode ser usado para ministrar qualquer curso, porém pode ser referência e material de apoio. Caso você esteja interessado em usá-lo fins comerciais, entre em contato com a empresa.

Atenção: Você pode verificar a data de última atualização da apostila no fim do índice. Nunca imprima a apostila que você receber de um amigo ou pegar por email, pois atualizamos constantemente esse material, quase que mensalmente. Vá até o nosso site e faça o download da última versão! w.caelum.com.br

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos

Capítulo 1: Como aprender Java7
1.1 - O que é realmente importante?7
1.2 - Sobre os exercícios7
1.3 - Tirando dúvidas8
1.4 - Sobre os autores8
Capítulo 2: O que é Java9
2.1 - Java9
2.2 - Máquina Virtual10
2.3 - Java lento? Hotspot e JIT12
2.4 - Versões do Javae a confusão do Java2...................................................12
2.5 - JVM? JRE? JDK?13
2.6 - Onde usar e os objetivos do Java13
2.7 - Especificação versus implementação14
2.8 - Como o FJ11 está organizado14
2.9 - Compilando o primeiro programa15
2.10 - Executando seu primeiro programa16
2.1 - O que aconteceu?16
2.12 - E o bytecode?16
2.13 - Exercícios17
2.14 - O que pode dar errado?17
2.15 - Um pouco mais18
2.16 - Exercícios18
Capítulo 3: Variáveis primitivas e Controle de fluxo20
3.1 - Declarando e usando variáveis20
3.2 - Tipos primitivos e valores2
3.3 - Exercícios23
3.4 - Casting e promoção23
3.5 - O If-Else26
3.6 - O While27
3.7 - O For28
3.8 - Controlando loops28
3.9 - Escopo das variáveis29
3.10 - Um bloco dentro do outro30
3.1 - Um pouco mais30
3.12 - Exercícios31
3.13 - Desafios32
Capítulo 4: Orientação a objetos básica3
4.1 - Motivação: problemas do paradigma procedural3
4.2 - Criando um tipo34
4.3 - Uma classe em Java35
4.4 - Criando e usando um objeto36
4.6 - Métodos com retorno38
4.7 - Objetos são acessados por referências39
4.8 - O método transfere()42
4.9 - Continuando com atributos43
4.10 - Para saber mais: Uma Fábrica de Carros46
4.1 - Um pouco mais47
4.12 - Exercícios47
4.13 - Desafios51
4.14 - Fixando o conhecimento51
Capítulo 5: Um pouco de arrays53
5.1 - O problema53
5.2 - Arrays de referências54
5.3 - Percorrendo uma array5
5.4 - Percorrendo uma array no Java 5.056
5.5 - Um pouco mais56
5.6 - Exercícios57
5.7 - Desafios59
5.8 - Testando o conhecimento59
Capítulo 6: Modificadores de acesso e atributos de classe60
6.1 - Controlando o acesso60
6.2 - Encapsulamento63
6.3 - Getters e Setters64
6.4 - Construtores6
6.5 - A necessidade de um construtor67
6.6 - Atributos de classe68
6.7 - Um pouco mais70
6.8 - Exercícios70
6.9 - Desafios72
Capítulo 7: Orientação a Objetos – herança, reescrita e polimorfismo73
7.1 - Repetindo código?73
7.2 - Reescrita de método76
7.3 - Chamando o método reescrito7
7.4 - Polimorfismo78
7.5 - Um outro exemplo79
7.6 - Um pouco mais80
7.7 - Exercícios81
Capítulo 8: Eclipse IDE86
8.1 - O Eclipse86
8.2 - Apresentando o Eclipse86
8.3 - Views e Perspective8
8.4 - Criando um projeto novo90
8.5 - Nossa classe Conta92
8.6 - Criando o main94
8.7 - Rodando o main96
8.8 - Pequenos truques96
Capítulo 9: Orientação a Objetos – Classes Abstratas100
9.1 - Repetindo mais código?100
9.2 - Classe abstrata101
9.3 - Métodos abstratos102
9.4 - Um outro exemplo104
9.5 - Para saber mais107
9.6 - Exercícios107
Capítulo 10: Orientação a Objetos – Interfaces109
10.1 - Aumentando nosso exemplo109
10.2 - Interfaces113
10.3 - Dificuldade no aprendizado de interfaces116
10.4 - Exemplo interessante: conexões com o banco de dados116
10.5 - Um pouco mais117
10.6 - Exercícios117
Capítulo 1: Exceções – Controlando os erros122
1.1 - Motivação122
1.2 - Exercício para começar com os conceitos123
1.3 - Exceções de Runtime mais comuns128
1.4 - Outro tipo de exceção: Checked Exceptions129
1.5 - Um pouco da grande famíla Throwable131
1.6 - Mais de um erro131
1.7 - Lançando exceções132
1.8 - Criando seu próprio tipo de exceção133
1.9 - Para saber mais: finally135
1.10 - Um pouco mais135
1.1 - Exercícios135
1.12 - Desafios137
Capítulo 12: Pacotes – Organizando suas classes e bibliotecas138
12.1 - Organização138
12.2 - Diretórios139
12.3 - Import139
12.4 - Acesso aos atributos, construtores e métodos141
12.5 - Usando o Eclipse com pacotes142
12.6 - Exercícios143
Capítulo 13: Ferramentas: jar e javadoc145
13.1 - Arquivos, bibliotecas e versões145
13.2 - Gerando o jar pelo Eclipse146
13.3 - Javadoc149
13.4 - Gerando o Javadoc150
13.5 - Classpath153
13.6 - Exercícios154
Capítulo 14: O pacote java.lang155
14.1 - Pacote java.lang155
14.2 - Um pouco sobre a classe System e Runtime155
14.3 - java.lang.Object156

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos 14.4 - Casting de referências...........................................................................156

14.5 - Integer e classes wrappers (box)158
14.6 - Autoboxing no Java 5.0159
14.7 - Métodos do java.lang.Object equals e toString159
14.8 - java.lang.String161
14.9 - java.lang.Math162
14.10 - Exercícios163
14.1 - Desafio164
Capítulo 15: Pacote java.io165
15.1 - Conhecendo uma API165
15.2 - Orientação a objeto165
15.3 - InputStream: lendo bytes166
15.4 - InputStreamReader: lendo chars166
15.5 - BufferedReader: lendo Strings166
15.6 - Lendo Strings do teclado167
15.7 - A analogia na saída168
15.8 - Uma maneira mais fácil: Scanner e PrintStream169
15.9 - Um pouco mais170
15.10 - Exercícios170
Capítulo 16: Collections framework173
16.1 - Arrays são trabalhosas, utilizar estrutura de dados173
16.2 - Listas: java.util.List174
16.3 - Listas no Java 5.0 com Generics176
16.4 - Ordenação: Collections.sort177
16.5 - Exercícios179
16.6 - Conjunto: java.util.Set181
16.7 - Principais interfaces: java.util.Collection182
16.8 - Iterando sobre coleções: java.util.Iterator183
16.9 - Iterando coleções no java 5.0: enhanced for185
16.10 - Mapas - java.util.Map185
16.1 - Mapas no Java 5.0187
16.12 - Exercícios189
16.13 - Desafios190
Capítulo 17: Threads192
17.1 - Linhas de execução192
17.2 - Criando uma subclasse da classe Thread194
17.3 - Garbage Collector194
17.4 - Exercícios195
17.5 - Para saber mais: Compartilhando objetos entre Threads196
17.6 - Para saber mais: Vector e Hashtable198
17.7 - Um pouco mais198
Capítulo 18: E agora?199
18.1 - Exercício prático199
18.2 - Certificação199
18.3 - Web199
18.4 - J2EE199

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos 18.5 - Frameworks...........................................................................................200

18.6 - Revistas200
18.7 - Grupo de Usuários200
18.8 - Falando em Java200
Capítulo 19: Apêndice A - Sockets201
19.1 - Motivação: uma API que usa os concetios aprendidos201
19.2 - Protocolo201
19.3 - Porta202
19.4 - Socket203
19.5 - Servidor203
19.6 - Cliente205
19.7 - Imagem geral206
19.8 - Exercícios207
19.9 - Desafios207
19.10 - Solução do sistema de chat207
Capítulo 20: Apêndice B – Swing básico209
20.1 - Interfaces gráficas em Java209
20.2 - Portabilidade209
20.3 - Começando com Swing210
20.4 - Nosso primeiro formulário210
20.5 - Adicionando eventos212
20.6 - Gerenciadores de Layout214
20.7 - Look And Feel215
20.8 - Para saber mais215
Capítulo 21: Apêndice C - Mais java216
21.1 - Import Estático216
21.2 - final217
21.3 - Calendar217
21.4 - Date219
21.5 - Outras classes muito úteis219
21.6 - Anotações220
Capítulo 2: Apêndice D – Instalação do JDK21
2.1 - O Link21
2.2 - Instalação do JDK em ambiente Windows21

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos

1Como aprender Java

“Homens sábios fazem provérbios, tolos os repetem” Samuel Palmer -

Como o material está organizado e dicas de como estudar em casa.

1.1 - O que é realmente importante?

Muitos livros, ao passar os capítulos, mencionam todos os detalhes da linguagem juntamente com seus princípios básicos. Isso acaba criando muita confusão, em especial pois o estudante não consegue distinguir exatamente o que é importante aprender e reter naquele momento daquilo que será necessário mais tempo e principalmente experiência para dominar.

Se uma classe abstrata deve ou não ter ao menos um método abstrato, se o if só aceitar argumentos booleanos e todos os detalhes de classes internas realmente não devem ser preocupações para aquele que possui como objetivo primário aprender Java. Esse tipo de informação será adquirida com o tempo, e não é necessário até um segundo momento.

Neste curso separamos essas informações em quadros especiais, já que são informações extras. Ou então apenas citamos num exercício e deixamos para o leitor procurar informações se for de seu interesse.

Algumas informações não são mostradas e podem ser adquiridas em tutoriais ou guias de referência, são detalhes que para um programador experiente em Java pode ser importante, mas não para quem está começando.

Por fim falta mencionar sobre a prática, que deve ser tratada seriamente: todos os exercícios são muito importantes e os desafios podem ser feitos quando o curso acabar. De qualquer maneira recomendamos aos alunos estudar em casa, principalmente aqueles que fazem os cursos intensivos.

O curso

Para aqueles que estão fazendo o curso Java e Orientação a Objetos, é recomendado estudar em casa aquilo que foi visto durante a aula, tentando resolver os exercícios que não foram feitos e os desafios que estão lá para envolver mais o leitor no mundo de Java.

Convenções de Código

Para mais informações sobre as convenções de código-fonte Java, acesse: http://java.sun.com/docs/codeconv/

1.2 - Sobre os exercícios Os exercícios do curso variam entre práticos até pesquisas na Internet, ou

Capítulo 1 - Como aprender Java - Página 7 capítulo 1

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos

mesmo consultas sobre assuntos avançados em determinados tópicos para incitar a curiosidade do aprendiz na tecnologia.

Existem também, em determinados capítulos, uma série de desafios. Eles focam mais no problema computacional que na linguagem, porém são uma excelente forma de treinar a sintaxe e principalmente familiarizar o aluno com a biblioteca padrão Java, além de proporcionar um ganho na velocidade de desenvolvimento.

1.3 - Tirando dúvidas

Para tirar dúvidas dos exercícios, ou de Java em geral, recomendamos o fórum do site do GUJ (http://w.guj.com.br/), onde sua dúvida será respondida prontamente.

Se você já participa de um grupo de usuários java ou alguma lista de discussão, pode tirar suas dúvidas nos dois lugares.

Fora isso, sinta-se a vontade de entrar em contato conosco para tirar todas as suas dúvidas durante o curso.

1.4 - Sobre os autores

Guilherme Silveira (guilherme.silveira@caelum.com.br) é programador e web developer certificado pela Sun, trabalhando com Java desde 2000 como especialista e instrutor. Programou e arquiteturou projetos na Alemanha durante 2 anos. Cofundador do GUJ, escreve para a revista Mundo Java, estuda Matemática Aplicada na USP e é instrutor e consultor na Caelum. Um dos comitters do Codehaus XStream.

Paulo Silveira (paulo.silveira@caelum.com.br) é programador e desenvolvedor certificado Java. Possui grande experiência em desenvolvimento web, trabalhando em projetos na Alemanha e em diversas consultorias no Brasil. Foi instrutor Java pela Sun, é cofundador do GUJ e formado em ciência da computação pela USP, onde realiza seu mestrado. É um dos editores técnicos da revista Mundo Java.

Sérgio Lopes (sergio.lopes@caelum.com.br) Bacharelando em Ciência da

Computação na USP e desenvolvedor Java desde 2002. É programador certificado Java pela Sun, moderador do GUJ e colaborador da revista Mundo Java. Trabalha com Java para Web e dispositivos móveis, além de ministrar treinamentos na Caelum.

Inúmeras modificações e sugestões foram realizadas por outros consultores e instrutores da Caelum, em especial Alexandre da Silva, Fábio Kung e Thadeu Russo.

Diversos screenshots, remodelamentos e melhorias nos textos foram realizados por Guilherme Moreira e Jacqueline Rodrigues.

Agrecimentos a todas as pessoas que costumam enviar erros, bugs e sugestões para a equipe.

Capítulo 1 - Como aprender Java - Página 8

Caelum – http://www.caelum.com.br - Java e Orientação a Objetos

2O que é Java

“Computadores são inúteis, eles apenas dão respostas” - Picasso

(Parte 1 de 14)

Comentários