




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostila java, com ótima técnica de ensino !
Tipologia: Notas de estudo
1 / 265
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































"Mata o tempo e matarás a tua carreira" Bryan Forbes
A Caelum atua no mercado desde 2002, desenvolvendo sistemas e prestando consultoria em diversas áreas, sempre à luz da plataforma Java. Foi fundada por profissionais que se encontraram no Brasil após experiências na Alemanha e Itália, desenvolvendo sistemas de grande porte, com integração aos mais variados ERPs. Seus profissionais já publicaram diversos artigos nas revistas brasileiras sobre Java, artigos acadêmicos e são presença constante nos eventos de 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 elaborado durante os cursos de verão de Java na Universidade de São Paulo, em janeiro de 2004, pelos instrutores da Caelum.
Em 2008, a empresa foca seus esforços em duas grandes áreas:
Esta apostila da Caelum visa ensinar Java de uma maneira elegante, mostrando apenas o que é necessário e quando é necessário, no momento certo, 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 seu conteúdo não seja alterado e que seus créditos sejam mantidos. Ele não pode ser usado para ministrar qualquer outro curso, porém pode ser utilizado como referência e material de apoio. Caso você esteja interessado em usá-lo para fins comerciais, entre em contato com a empresa.
Atenção: Você pode verificar a versão da apostila no fim do índice. Não recomendamos imprimir a apostila que você receber de um amigo ou pegar por e-mail, pois atualizamos constantemente esse material, quase que mensalmente. Vá até nosso site e veja a última versão.
www.caelum.com.br
Material do Treinamento Java e Orientação a Objetos
1.2 - Sobre os exercícios Os exercícios do curso variam de práticos até pesquisas na Internet, ou 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 compu- tacional 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
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 que tiver durante o curso.
1.4 - Bibliografia Bibliografia recomendada para iniciantes na plataforma Java
Capítulo 1 - Como Aprender Java - Sobre os exercícios - Página 2
“Computadores são inúteis, eles apenas dão respostas”
Chegou a hora de responder as perguntas mais básicas sobre Java. Ao término desse capítulo você será capaz de:
Muitos associam Java com uma maneira de deixar suas páginas da web mais bonitas, com efeitos especiais, ou para fazer pequenos formulários na web. O que associa as empresas ao Java? Já chegaremos neste ponto, mas antes vamos ver o motivo pelo qual as empresas fogem das outras lingua- gens. Quais são os seus maiores problemas quando está programando?
3
Material do Treinamento Java e Orientação a Objetos
Isto é, temos um código executável para cada sistema operacional. É necessário compilar uma vez para Windows, outra para o Linux, etc... Como foi dito anteriormente, na maioria das vezes, a sua aplicação se utiliza das bibliotecas do sistema operacional, como, por exemplo, a de interface gráfica para desenhar as ‘telinhas’. A biblioteca de interface gráfica do Windows é bem diferente das do Linux; resultado? Você precisa reescrever o mesmo pedaço da aplicação para diferentes sistemas operacionais, já que eles não são compatíveis. Já o Java, se utiliza do conceito de máquina virtual , onde existe, entre o sistema operacional e a aplicação, uma camada extra responsável por “traduzir” - mas não apenas isso - o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional onde ela está rodando no momento:
Dessa forma, a maneira com a qual você abre uma janela no Linux ou no Windows é a mesma: você ganha independência de sistema operacional. Ou, melhor ainda, independência de plataforma em geral: não é preciso se preocupar em qual sistema operacional sua aplicação está rodando, nem em que tipo de máquina, configurações etc. Repare que uma máquina virtual é um conceito bem mais amplo que o de um interpretador. Como o próprio nome diz, uma máquina virtual é como um computador de mentira: tem tudo que um computador tem. Em outras palavras, ela é responsável por gerenciar memória e threads, a pilha de execução, etc. Sua aplicação roda sem nenhum envolvimento com o sistema operacional! Sempre conversando apenas com a Java Virtual Machine (JVM).
Capítulo 2 - O que é Java - Máquina Virtual - Página 5
Material do Treinamento Java e Orientação a Objetos
Essa característica é interessante: como tudo passa pela JVM, ela pode tirar métricas, decidir onde é melhor alocar a memória, entre outros. Uma JVM isola totalmente a aplicação do sistema operacional. Se uma JVM termina abruptamente, só as aplicações que estavam rodando nela irão terminar: isso não afetará outras JVMs que estejam rodando no mesmo computador, nem afetará o sistema operacional. Essa camada de isolamento também é interessante quando pensamos em um servidor que não pode se sujeitar a rodar código que possa interferir na boa execução de outras aplicações. Para tudo isso precisamos de um “ bytecode ”. Bytecode é o termo dado ao código binário gerado pelo compilador Java (pois existem menos de 256 códigos de operação dessa linguagem, e cada “opcode” gasta um byte, dando origem ao nome bytecode). O compilador Java gera esse bytecode que, diferente das linguagens sem máquina virtual, vai servir para diferentes sistemas operacionais, já que ele vai ser “traduzido” pela máquina virtual.
Write once, run anywhere Esse é um slogan que a Sun usa para o Java, já que você não precisa reescrever parte da sua aplicação toda vez que quiser mudar de sistema operacional. Muitas pessoas criticam ou criam piadas em cima desse slogan, por acharem que nem sempre uma aplicação Java pode rodar em duas plataformas diferentes sem problemas.
2.3 - Java lento? Hotspot e JIT Hotspot é a tecnologia que a JVM utiliza para detectar pontos quentes da sua aplicação: código que é executado muito, provavelmente dentro de um ou mais loops. Quando a JVM julgar necessário, ela vai compilar aquele código para instruções nativas da plataforma, tendo em vista que isso vai provavelmente melhorar a performance da sua aplicação. Esse compilador é o JIT: Just inTime Compiler, o compilador que aparece “bem na hora” que você precisa. Você pode pensar então: porque a JVM não compila tudo antes de executar a aplicação? É que teoricamente compilar dinamicamente, a medida do necessário, pode gerar uma performance melhor. O motivo é simples: imagine um .exe gerado pelo VisualBasic, pelo gcc ou pelo Delphi; ele é estático. Ele já foi otimizado baseado em heurísticas, o compilador pode ter tomado uma decisão não tão boa. Já a JVM, por estar compilando dinamicamente durante a execução, pode perceber que um determinado código não está com performance adequada e otimizar mais um pouco aquele trecho, ou ainda mudar a estra- tégia de otimização. É por esse motivo que as JVMs mais recentes (como a do Mustang, Java 6), em alguns casos , chega a ganhar, em muitos casos, de códigos C compilados com o GCC 3.x, se rodados durante um certo tempo.
2.4 - Versões do Java... e a confusão do Java Java 1.0 e 1.1 são as versões muito antigas do Java. Com o Java 1.2 houve um aumento grande no tamanho da API, e foi nesse momento em que trocaram a nomenclatura de Java para Java2, com o objetivo de diminuir a confusão entre Java e Javascript. Mas lembre-se, não há versão do Java 2.0, o 2 foi incorporado ao nome: Java2 1.2. Depois vieram o Java2 1.3 e 1.4, e o Java 1.5 passou a se chamar Java 5, tanto por uma questão de marketing e porque mudanças significativas na linguagem foram incluídas. É nesse momento que o “2” do nome Java desaparece. Repare que para fins de desenvolvimento, o Java 5 ainda é referido como Java 1.5.
Capítulo 2 - O que é Java - Java lento? Hotspot e JIT - Página 6
Material do Treinamento Java e Orientação a Objetos
Apesar disto, a Sun empenha-se em tentar popularizar o uso do Java em aplicações desktop, mesmo com o fraco marketshare do Swing/AWT/SWT em relação às tecnologias concorrentes (em especial Microsoft .NET).
2.7 - Especificação versus implementação Outro ponto importante: quando falamos de Java Virtual Machine, estamos falando de uma especificação. Ela diz como o bytecode deve ser interpretado pela JVM. Quando fazemos o download no site da Sun, o que vem junto é a Sun JVM. Em outras palavras, existem outras JVMs disponíveis, como a Jrockit da BEA, entre outras. Isso é outro ponto interessante para as empresas. Caso não estejam gostando de algum detalhe da JVM da Sun ou prefiram trabalhar com outra empresa, pagando por suporte, elas podem trocar de JVM com a garantia absoluta de que todo o sistema continuará funcionando, tendo em vista que a JVM é certificada pela Sun, precisando aceitar o mesmo bytecode. Você nem precisa recompilar nenhuma de suas classes. Além de independência de hardware e sistema operacional, você tem a independência de vendor : graças a idéia da JVM ser uma especificação e não um software.
2.8 - Como o FJ-11 está organizado Java é uma linguagem simples no sentido de que as regras não são muitas. Quebrar o paradigma procedural para mergulhar na orientação a objetos não é simples. Esse é o objetivo do FJ-11. O começo pode ser um pouco frustrante: exemplos banais, controle de fluxo simples com o if, for, while e criação de pequenos programas que nem ao menos captam informação do teclado. Apesar de isto tudo ser necessário, é só nos 20% finais do curso que estaremos utilizando bibliotecas para, no final, criarmos um chat entre duas máquinas que transferem Strings por TCP/IP. Neste ponto, teremos tudo que é necessário para entender completamente como a API funciona, quem estende quem, e o porquê. Depois desse capítulo onde o Java, a JVM e primeiros conceitos são passados, veremos os comandos básicos do java para controle de fluxo e utilização de variáveis do tipo primitivo. Criaremos classes para testar esse pequeno aprendizado, sem mesmo saber o que realmente é uma classe. Isso dificulta ainda mais a curva de aprendizado, porém cada conceito será introduzido no momento considerado mais apropriado pelos autores. Passamos para o capítulo de orientação a objetos básico, mostrando os problemas do paradigma procedural e a necessidade de algo para resolvê-los. Atributos, métodos, variáveis do tipo referência e outros. Depois, um rápido pulo pelos arrays. Os capítulos de modificadores de acesso, herança, classes abstratas e interfaces demonstram o conceito fundamental que o curso quer passar: encapsule, exponha o mínimo de suas classes, foque no que elas fazem, no relacionamento entre elas. Com uma modelagem boa a codificação fica fácil e a modificação e expansão do sistema também. Enquanto isso, o Eclipse é introduzido de forma natural, evitando-se ao máximo wizards e menus, e sim o code assist e seus quick fixes. Isso faz com que o Eclipse trabalhe de forma simbiótica com o desenvolvedor, sem se intrometer e fazer mágica. Pacotes, javadoc, jars e java.lang apresentam os últimos conceitos fundamentais do Java, dando toda a fundação para, então, passarmos a estudar as principais e mais utilizadas APIs do Java SE. Java.util, java.io e java.net são essas APIs. Todas elas usam e abusam dos conceitos vistos no decorrer do curso, ajudando a sedimentá-los. Juntamente, temos os conceitos básicos do uso de Threads, e os problemas
Capítulo 2 - O que é Java - Especificação versus implementação - Página 8
Material do Treinamento Java e Orientação a Objetos
e perigos da programação concorrente quando dados são compartilhados. Resumindo: o objetivo do curso é apresentar o Java ao mesmo tempo que os fundamentos da orientação a objetos são introduzidos. Bateremos muito no ponto de dizer que o importante é como as classes se relacionam e qual é o papel de cada uma, e não em como elas realizam as suas obrigações. Programe voltado à interface, e não à implementação. No final do curso, a utilização dos pacotes java.io, java.util e java.net, e de uma biblioteca de desenho de gráficos (JFreeChart) reforçarão todo nosso aprendizado, tendo em vista que essas bibliotecas foram desenvol- vidas com o objetivo de reutilização e extensão, portanto abusam dos conceitos previamente vistos.
2.9 - Compilando o primeiro programa Vamos para o nosso primeiro código! O programa que imprime uma linha simples! 1 class MeuPrograma { 2 public static void main(String[] args) { 3 System.out.println("Minha primeira aplicação Java!!"); 4 } 5 }
Notação Todos os códigos apresentados na apostila estão formatados com recursos visuais para auxiliar a leitura e compreensão dos mesmos. Quando for digitar os códigos no computador, trate os códigos como texto simples. A numeração das linhas não faz parte do código e não deve ser digitada; é apenas um recurso didático. O Java é case sensitive: tome cuidado com maiúsculas e minúsculas.
Após digitar o código acima, grave-o como MeuPrograma.java em algum diretório. Para compilar, você deve pedir para que o compilador de Java da Sun, chamado javac, gere o bytecode correspondente ao seu código Java.
Depois de compilar, o bytecode foi gerado. Quando o sistema operacional listar os arquivos contidos no diretório atual, você poderá ver que um arquivo .class foi gerado, com o mesmo nome da sua classe Java.
Assustado com o código? Para quem já tem uma experiência com Java, esse primeiro código é muito simples. Mas, se é seu primeiro código em Java, pode ser um pouco traumatizante. Não deixe de ler o prefácio do curso, que deixará você mais tranqüilo.
Capítulo 2 - O que é Java - Compilando o primeiro programa - Página 9