




























































































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
Linguagem de Programação.
Tipologia: Notas de estudo
1 / 228
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































“Mata o tempo e matas a tua carreira” Bryan Forbes -
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.
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! www.caelum.com.br
“Homens sábios fazem provérbios, tolos os repetem” Samuel Palmer - Como o material está organizado e dicas de como estudar em casa.
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.
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.
Para mais informações sobre as convenções de código-fonte Java, acesse: http://java.sun.com/docs/codeconv/
Os exercícios do curso variam entre práticos até pesquisas na Internet, ou Capítulo 1 - Como aprender Java - Página 7
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.
Para tirar dúvidas dos exercícios, ou de Java em geral, recomendamos o fórum do site do GUJ (http://www.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.
Guilherme Silveira ([email protected]) é 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 ([email protected]) é 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 ([email protected]) 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
tv a cabo. A idéia não deu certo, tentaram fechar diversos contratos com grandes fabricantes de eletrônicos, como a Panasonic, mas não houve êxito devido ao conflito de interesses. Hoje sabemos que o Java domina o mercado de aplicações para celulares, porém parece que em 1994 ainda era muito cedo. Com o advento da web, a Sun percebeu que poderia utilizar a idéia criada em 1992 para poder rodar pequenas aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas operacionais e browser, e com isso seria grande vantagem poder programar numa única linguagem, independente da plataforma. Foi aí que o Java 1.0 foi lançado: focado em deixar o browser não apenas um cliente burro, fazendo com que ele possa também realizar operações, não apenas renderizar html. Sabemos que hoje os applets realmente não são o foco da Sun. É engraçado que a tecnologia Java nasceu com um objetivo em mente, foi lançado com outro mas no final decolou mesmo no desenvolvimento de aplicações do lado do servidor. Sorte? Você pode ler a história da linguagem Java em: http://java.sun.com/java2/whatis/1996/storyofjava.html No Brasil, diversos grupos de usuários se juntaram para tentar disseminar o conhecimento da linguagem. Um deles é o GUJ (www.guj.com.br), uma comunidade virtual com artigos, tutoriais e fórum para tirar dúvidas, o maior em língua portuguesa. Encorajamos todos os alunos a usar muito os fóruns do mesmo pois é uma das melhores maneiras para achar soluções para pequenos problemas que acontecem com grande freqüência.
Em uma linguagem de programação como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. O código fonte é compilado para uma plataforma e sistema operacional específicos. Muitas vezes, o próprio código fonte é desenvolvido visando uma única plataforma! Esse código executável (binário) resultante será executado pelo sistema operacional e, por esse motivo, ele deve saber conversar com o sistema operacional em questão. Capítulo 2 - O que é Java - Página 10
MÁQUINA VIRTUAL 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 utiliza-se do conceito de máquina virtual , onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por “traduzir” (não é apenas isso) o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional no qual ela está rodando no momento: Dessa forma, a maneira 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: ela tem tudo que um computador tem. Em outras palavras, ela é responsável por gerenciar memória, gerenciar 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). Essa característica é interessante: como tudo passar pela JVM, ela pode tirar métricas, decidir onde é melhor alocar a memória, entre outros. Uma JVM isola a aplicação totalmente do sistema operacional. Se uma JVM termina abruptamente, só Capítulo 2 - O que é Java - Página 11 Bytecode java Linux Máquina Virtual Java para Linux Bytecode java Windows Máquina Virtual Java Para Windows aplicação Sistema Operacional Código binário para Windows Windows Código binário para Linux Linux
para fins de desenvolvimento, o Java 5 ainda é referido como Java 1.5. Até a versão 1.4 existia a terceira numeração (1.3.1, 1.4.1, 1.4.2, etc), indicando bug fixes e melhorias. A partir do Java 5 existem apenas updates: Java 5 update 7, por exemplo. Hoje a última versão disponível do Java é a 6.0, lançada em 2006. Existe compatibilidade para trás em todas as versões do Java. Um class gerado pelo javac da versão 1.2 precisa necessariamente rodar da JVM 6.0.
O que você vai baixar no site do java? JVM = apenas a virtual machine, esse download não existe JRE = Java Runtime Environment, ambiente de execução Java, formado pela JVM e bibliotecas, tudo que você precisa para executar uma aplicação Java. JDK = Nós, desenvolvedores, faremos o download do JDK do Java SE (Standard Edition).
No decorrer do curso você pode achar que o Java tem baixa produtividade, que a linguagem a qual você está acostumado é mais simples de criar os pequenos sistemas que estamos vendo aqui. Queremos deixar claro de que a premissa do Java não é a de criar sistemas pequenos, onde temos um ou dois desenvolvedores, mais rapidamente que linguagens como php, perl, entre outras. O foco da plataforma é outro: aplicações de médio a grande porte, onde o time de desenvolvedores tem várias pessoas e pode sempre vir a mudar e crescer. Não tenha dúvidas que criar a primeira versão uma aplicação usando Java, mesmo utilizando IDEs e ferramentas poderosas, será mais trabalhoso que usar uma linguagem script ou de alta produtividade. Porém, com uma linguagem orientada a objetos e madura como o Java, será extremamente mais fácil e rápido fazer alterações no sistema, desde que você siga as boas práticas, recomendações e design patterns. Além disso, a quantidade enorme de bibliotecas gratuitas, para realizar os mais diversos trabalhos (tais como relatórios, gráficos, sistemas de busca, geração de código de barra, manipulação de XML, tocadores de vídeo, manipuladores de texto, persistência transparente, impressão, etc) é um ponto fortíssimo para adoção do java: você pode criar uma aplicação sofisticada, usando diversos recursos, sem precisar comprar um componente específico, que costuma ser caro de acordo com sua especialização. Cada linguagem tem seu espaço e seu melhor uso. O uso do java é interessante em aplicações que virão a crescer, em que a legibilidade do código é importante, onde temos muita conectividade e se temos plataformas (ambientes e sistemas operacionais) heterogêneos (linux, unix, OSX e windows misturados). Você pode ver isso pela quantidade enorme de ofertas de emprego procurando desenvolvedores Java para trabalhar com sistemas web e aplicações de integração no servidor. Capítulo 2 - O que é Java - Página 13
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 as tecnologias concorrentes (em especial Microsoft .NET).
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 elas 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 tendo a garantia absoluta que todo o sistema continuará funcionando, tendo em vista que ela é 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.
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 FJ11. 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. Porém isto tudo é 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, e 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, 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 pelas 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 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 Capítulo 2 - O que é Java - Página 14
MAIN 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.
Não é necessário sempre digitar seu programa em um simples aplicativo como o Notepad. Você pode usar um editor que tenha syntax highlighting e outros benefícios. Mas, no começo, é interessante você usar algo que não possua ferramentas, para que você possa se acostumar com os erros de compilação, sintaxe, e outros. Depois do capítulo de polimorfismo e herança sugerimos a utilização do Eclipse (www.eclipse.org), a IDE líder do mercado, e gratuita. Existe um capítulo a parte para o uso do Eclipse nesta apostila.
Os procedimentos para executar seu programa são muito simples. O javac é o compilador Java, e o java é o responsável por invocar a máquina virtual para interpretar o seu programa. Ao executar, pode ser que a acentuação resultante saia errada, devido a algumas configurações que deixamos de fazer; sem problemas.
O MeuPrograma.class gerado não é legível por seres humanos (não que seja Capítulo 2 - O que é Java - Página 16
impossível). Ele está escrito no formato que a virtual machine sabe entender e que foi especificado que ela deve entender. É como um assembly, escrito para esta máquina em específico. Podemos ler os menmônicos utilizando a ferramenta javap que acompanha o JDK: javap -c MeuPrograma E a saída: MeuPrograma(); Code: 0: aload_ 1: invokespecial #1; //Method java/lang/Object."
1-) Altere seu programa para imprimir uma mensagem diferente. 2-) Altere seu programa para imprimir duas linhas de texto usando duas linhas de código System.out. 3-) Sabendo que os caracteres \n representam uma quebra de linhas, imprima duas linhas de texto usando uma única linha de código System.out.
Muitos erros podem ocorrer no momento que você rodar seu primeiro código. Vamos ver alguns deles: Código:
Tente compilar um arquivo sem nada dentro, nem uma letra, nem uma quebra de linha. O que acontece? Capítulo 2 - O que é Java - Página 19
INT VARIÁVEIS
“Péssima idéia, a de que não se pode mudar” Montaigne - Iremos aprender a trabalhar com os seguintes recursos da linguagem Java:
Dentro de um bloco , podemos declarar variáveis e usá-las. Em Java, toda variável tem um tipo que não pode ser mudado uma vez que declarado: tipoDaVaríavel nomeDaVariável; Por exemplo, é possível ter uma idade que vale um número inteiro : int idade; Com isso, você declara a variável idade, que passa a existir a partir deste momento. Ela é do tipo int, que guarda um número inteiro. A partir de agora você pode usá-la, primeiro atribuindo valores. A linha a seguir é a tradução de “idade deve valer agora quinze“. idade = 15;
Para fazer um comentário em java, você pode usar o // para comentar até o final da linha, ou então usar o /* / para comentar o que estiver entre eles. _/ comentário daqui, ate aqui */ //uma linha de comentário sobre a idade_ int idade; Além de atribuir, você pode utilizar esse valor. O código a seguir declara Capítulo 3 - Variáveis primitivas e Controle de fluxo - Página 20