JAVA 6 - Alta Books

Propaganda
Ivan Mecenas
JAVA 6
Fundamentos, Swing, BlueJ e JDBC
R
Rio de Janeiro.2008
Java 6 Fundamentos, Swing, BlueJ e JDBC
Copyright © 2008 da Editora Alta Books Ltda.
Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro,
sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais
forem os meios empregados: eletrônico, mecânico, fotográfico, gravação ou quaisquer outros.
Todo o esforço foi feito para fornecer a mais completa e adequada informação, contudo a editora
e o(s) autor(es) não assumem responsabilidade pelos resultados e usos da informação fornecida.
Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados necessários
(como o backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra mídia.
Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros
técnicos ou de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de
software, interpretação ou mesmo quando alguns deslizes constam na versão original de alguns
livros que traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br, a seção Erratas,
onde relataremos, com a devida correção, qualquer erro encontrado em nossos livros.
Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja
expressa ou implícita.
Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou
comercial são de responsabilidade de seus proprietários. A Editora informa não estar associada a
nenhum produto e/ou fornecedor apresentado no livro. No decorrer da obra, imagens, nomes de
produtos e fabricantes podem ter sido utilizados, e desde já a Editora informa que o uso é apenas
ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou desmerecimento do produto/
fabricante.
Produção Editorial Editora Alta Books
Coordenação Editorial: Fernanda Silveira
Revisão: Denise Rossato Agostinetti
Diagramação: Marcelo Matos
Capa: Equipe Alta Books
Impresso no Brasil
O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo
sem autorização dos detentores do direito autoral da obra, bem como a cópia ilegal do original.
Esta prática generalizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos
livros a ponto de impossibilitar os autores de criarem novas obras.
R
Rua Viúva Claudio, 291 – Jacaré
Rio de Janeiro – RJ CEP: 20020-100
Tel: 21 3278-8069/8419 Fax: 21 3277-1253
www.altabooks.com.br
[email protected]
DEDICATÓRIA
Este livro é dedicado ao meu neto Gabriel Mecenas Nina, nascido no dia 21 de maio de
2003. Carinhosamente, chamo-o de “Gabinho”. Nos abraços carinhosos dos seus pequenos
braços, sinto que minha vida não foi em vão.
Gabinho acaba de completar 5 anos. O tema de sua magnífica festa foi o Homem
Aranha.
Uma boa notícia é que o seu irmãozinho, Eduardo Mecenas Nina, está a caminho.
SOBRE O AUTOR
Ivan José de Mecenas Silva é graduado em Ciências Econômicas pela Universidade
Federal de Sergipe, possuindo cursos de extensão em Análise Administrativa e Análise
de Sistemas.
Atualmente é Analista de Sistemas da POLITEC, escreve artigos para revistas
especializadas em informática e eventualmente realiza trabalhos como desenvolvedor
independente.
Sites:
www.ivanmecenas.com
www.ivanmecenas.com.br
www.ivanmecenas.ecn.br
OUTROS LIVROS DO AUTOR
Editora Book Express:
Delphi 5 Objetos e Herança
Delphi 5 Análise de Pontos de Função
InterBase 6 Guia do Desenvolvedor
Delphi 6 & InterBase 6
Editora Alta Books:
Delphi 6 Desenvolvendo Projetos
Firebird & Delphi 6 Guia do Desenvolvedor
Manual do Empregador Doméstico
Eclipse 3.0.1 Programando com Visual Editor
Qualidade em Software Uma Metologia para Homologação de Sistemas
Banco de Dados do Modelo Conceitual à Implementação Física
Eclipse 3.1 Programando com Visual Editor
NetBeans 4.1 Ambiente Integrado de Desenvolvimento
Ruby Investigando a Linguagem
NetBeans 6.1 (em produção)
PREFÁCIO À TERCEIRA EDIÇÃO
Nesta terceira edição, como nas versões anteriores, os exemplos continuam o mais simples
possível, com o objetivo exclusivo de mostrar os preceitos da linguagem.
Todos os capítulos foram revistos, alguns ampliados, e vários exemplos foram introduzidos,
a fim de incluir alguns dos aprimoramentos julgados mais importantes da versão Java SE
6, na qual o texto se baseia.
Várias implementações do Java SE 6 dizem respeito a elementos externos à linguagem
como, por exemplo, redução do tempo de carga das aplicações e maior gestão no download
da Máquina Virtual Java. Tais mudanças, contudo, não têm interferência direta no
aprendizado da linguagem.
Uma modificação visível nesta edição é a utilização do BlueJ como ferramenta básica
de apoio na produção dos códigos-fontes, visto que esse ambiente tem sido utilizado
com reconhecido êxito por centenas de instituições de ensino em todo o mundo.
Adicionalmente, o texto se utiliza do ambiente NetBeans BlueJ Edition, um produto
resultante da interação entre as equipes BlueJ e NetBeans.
O NetBeans BlueJ Edition, uma versão adaptada do NetBeans IDE, que é um produto
de grande sucesso na atualidade, permite que os usuários do BlueJ possam ampliar os
conhecimentos sobre a programação Java e criar aplicações mais complexas, sem perder a
facilidade de poder criar projetos BlueJ.
O leitor poderá utilizar qualquer das ferramentas, sem nenhum obstáculo ou prejuízo, para
lidar com os exemplos descritos no texto.
A idéia central do livro continua sendo ensinar os fundamentos de Java e fazer com que
o leitor decida se vale a pena utilizar a linguagem na construção dos seus projetos de
software.
Ivan Mecenas
Brasília, maio de 2008
PREFÁCIO À SEGUNDA EDIÇÃO
Lançado no início de 2003, este livro me deu algumas alegrias inesperadas ao ser citado
em diversos trabalhos acadêmicos e ter sido indicado como a única sugestão bibliográfica
referente a Java no concurso público para Analista de Sistemas da Prefeitura Municipal de
Paracatu/MG – Edital 01/2004.
Nesta segunda edição, baseada na versão 1.5, tive o cuidado de manter a simplicidade dos
exemplos, mesmo lidando com os aprimoramentos da linguagem, alguns bastante complexos.
Algumas implementações da linguagem ocorridas na versão 1.4.2, não abordadas na
primeira edição, foram também introduzidas nesta, de forma a tornar o material mais
completo. Assim é que, no Capítulo 7, por exemplo, foram tratados os mecanismos de
asserções (Assertions) e de mensagens (Logging). Nessa mesma linha, o Capítulo 12
foi enriquecido com exemplos do novo pacote de entrada e saída de dados, New Input/
Output, que complementa o pacote original java.io.
Com relação à versão 1.5, conhecida externamente como JDK 5.0, procurei apresentar as
implementações que julguei mais importantes no momento:
a)
Enumerações (enums)
b)
Argumentos variáveis (Varargs)
c)
Tipos genéricos (Generics)
d)
Instrução for-each
No tocante às ferramentas adotadas na edição anterior, fiz menção ao Eclipse 3.0.1, um
ambiente de desenvolvimento integrado liderado pela IBM. Com isso, os usuários também
poderão testar os exercícios nessa interface. O ambiente Sun One Studio 4 Community
Edition foi trocado pelo NetBeans 3.6, no qual se baseia, por ser um projeto livre.
Creio que consegui manter a estrutura básica do livro, que tenta ensinar a linguagem Java
de maneira suave e progressiva.
Ivan Mecenas
Brasília, outubro de 2004
PREFÁCIO
Já faz algum tempo desde que escrevi o meu primeiro programa de computador: um
código Fortran, escrito em meia dúzia de cartões perfurados, que obtinha os números
primos existentes num determinado intervalo de valores inteiros.
Desde então tenho convivido com o acelerado processo de evolução da informática e
tomado contato com diversas linguagens de programação. Em 1998, comecei a obter
alguma informação sobre Java. Entretanto, estava envolvido demais com o ambiente
Delphi, lançado em 1995, que passei a adotar como ferramenta de trabalho nos meus
projetos de sistema (sem qualquer arrependimento, é claro).
Recentemente, com o crescimento acelerado da plataforma Java, resolvi investigar um
pouco mais a linguagem, tentando enxergar as possibilidades que ela oferece para produzir
aplicações comerciais desktop.
É consenso que Java tem se revelado eficiente em ambientes distribuídos. Quanto ao
lado cliente, ainda não se pode fazer uma afirmação definitiva. Os avanços incorporados
à plataforma Java, como os compiladores “Just in Time”, em que os bytecodes vão sendo
progressivamente convertidos para o código binário da plataforma hospedeira, podem
mudar consideravelmente esse panorama.
A pergunta fica no ar: seria a linguagem um substituto ideal para o Delphi ou para o Visual
Basic, por exemplo? Evidentemente, a resposta não é fácil. Se temos um aplicativo Delphi
de relativa complexidade, com interface gráfica rebuscada e uso razoável de componentes
de terceiros, é certo que a conversão para Java implicaria um trabalho gigantesco.
Entretanto, a vida está em constante processo de mutação. Ao longo do tempo, muitos de
nós, programadores, tivemos que adotar linguagens que surgiam e converter aplicativos
antigos. Talvez você mesmo já tenha tido oportunidade de migrar aplicações Clipper para
Delphi ou para outro ambiente gráfico.
A idéia do livro é dar ao leitor a oportunidade de conhecer os fundamentos de Java e,
talvez, até fazer comparações com a linguagem de sua preferência.
Sempre tive vocação para códigos estruturados e, nesse ponto, a elegância de Java tem um
inegável fascínio.
Ivan Mecenas
Brasília, dezembro de 2002
IX
SUMÁRIO
PARTE I - FUNDAMENTOS DA LINGUAGEM . ............................................................... 1
CAPÍTULO 1 - Java: Um Pouco de História.............................................................................. 3
CAPÍTULO 2 - Orientação a Objetos........................................................................................ 7
INTRODUÇÃO.................................................................................................................. 7
ABSTRAÇÃO...................................................................................................................... 8
ENCAPSULAMENTO....................................................................................................... 8
HERANÇA.......................................................................................................................... 8
POLIMORFISMO.............................................................................................................. 9
BYTECODES...................................................................................................................... 9
A MÁQUINA VIRTUAL JAVA.......................................................................................... 9
FERRAMENTAS................................................................................................................ 10
EXEMPLOS DO LIVRO................................................................................................... 11
CAPÍTULO 3 - Lidando com Classes......................................................................................... 13
INTRODUÇÃO.................................................................................................................. 13
CLASSES............................................................................................................................. 13
PROGRAMAS EM JAVA................................................................................................... 14
AS REGRAS E CONVENÇÕES EM JAVA...................................................................... 15
REGRAS...................................................................................................................... 16
CONVENÇÕES......................................................................................................... 16
AS PALAVRAS-CHAVES DE JAVA........................................................................ 16
ESCOPO DE UMA CLASSE............................................................................................ 17
OBJETOS............................................................................................................................. 17
SUPERCLASSES E SUBCLASSES.................................................................................. 18
CLASSES ANINHADAS E INTERNAS.......................................................................... 19
ACESSO AOS MEMBROS DE UMA CLASSE.............................................................. 21
CLASSES ABSTRATAS..................................................................................................... 23
CLASSES FINAIS............................................................................................................... 23
PACOTES............................................................................................................................ 24
STATIC IMPORT............................................................................................................... 25
A VARIÁVEL DE AMBIENTE CLASSPATH................................................................ 26
INTERFACES..................................................................................................................... 27
CAPÍTULO 4 - Lidando com Atributos..................................................................................... 29
INTRODUÇÃO.................................................................................................................. 29
TIPOS PRIMITIVOS......................................................................................................... 29
O TIPO boolean........................................................................................................... 30
O TIPO byte................................................................................................................. 30
O TIPO short............................................................................................................... 32
O TIPO int................................................................................................................... 32
O TIPO long................................................................................................................ 33
O TIPO float................................................................................................................ 35
O TIPO double............................................................................................................ 36
O TIPO char................................................................................................................ 38
ARRAYS............................................................................................................................... 41
ARRAYS MULTIDIMENSIONAIS.......................................................................... 47
STRING............................................................................................................................... 48
CLASSES EMPACOTADORAS....................................................................................... 51
X
A CLASSE VECTOR......................................................................................................... 54
ATRIBUTOS FINAIS E ESTÁTICOS.............................................................................. 57
ENUMERAÇÃO................................................................................................................. 57
TIPOS GENÉRICOS.......................................................................................................... 58
OPERADORES................................................................................................................... 61
OPERADORES ARITMÉTICOS............................................................................ 61
OPERADORES RELACIONAIS............................................................................. 61
OPERADORES CONDICIONAIS.......................................................................... 62
OPERADORES DE DESLOCAMENTO............................................................... 63
OPERADORES LÓGICOS...................................................................................... 63
OPERADORES DE ATRIBUIÇÃO......................................................................... 63
CAPÍTULO 5 - Lidando com Métodos...................................................................................... 65
INTRODUÇÃO.................................................................................................................. 65
A ASSINATURA DE UM MÉTODO.............................................................................. 65
LISTA DE PARÂMETROS DE UM MÉTODO.................................................... 66
ARGUMENTOS VARIÁVEIS (Varargs)................................................................... 68
RETORNO DE UM MÉTODO............................................................................... 68
ESCOPO DE UM MÉTODO............................................................................................ 69
MODIFICADORES DE MÉTODOS.............................................................................. 70
MÉTODOS CONSTRUTORES....................................................................................... 70
POLIMORFISMO.............................................................................................................. 75
SOBRECARGA DE MÉTODOS............................................................................. 75
SOBRECARGA DE MÉTODOS CONSTRUTORES........................................... 76
SOBREPOSIÇÃO DE MÉTODOS.......................................................................... 79
SOBREPOSIÇÃO DE MÉTODOS - INTERFACES............................................. 81
RECURSÃO......................................................................................................................... 85
MÉTODOS DESTRUIDORES......................................................................................... 86
BLOCOS ESTÁTICOS....................................................................................................... 86
A CLASSE Class.................................................................................................................. 86
CAPÍTULO 6 - Estruturas de Controle...................................................................................... 91
INTRODUÇÃO.................................................................................................................. 91
A ESTRUTURA if............................................................................................................... 91
A ESTRUTURA if/else........................................................................................................ 92
A ESTRUTURA switch....................................................................................................... 94
A ESTRUTURA while......................................................................................................... 97
A ESTRUTURA do/while................................................................................................... 98
A ESTRUTURA for............................................................................................................. 98
A INSTRUÇÃO continue.................................................................................................... 100
A INSTRUÇÃO for-each..................................................................................................... 103
CAPÍTULO 7 - Lidando com Exceções, Assertions e Logging................................................. 107
INTRODUÇÃO.................................................................................................................. 107
A ESTRUTURA try/catch................................................................................................... 117
DISPARANDO EXCEÇÕES............................................................................................. 110
EXCEÇÕES ENCADEADAS........................................................................................... 112
A CLÁUSULA throws......................................................................................................... 113
O MÉTODO printStackTrace()........................................................................................... 115
ASSERTIONS..................................................................................................................... 116
INVARIANTES INTERNAS..................................................................................... 116
FLUXOS DE CONTROLE INVARIANTES........................................................... 116
CLASSES INVARIANTES........................................................................................ 116
PRECONDIÇÕES...................................................................................................... 116
XI
PÓS-CONDIÇÕES.................................................................................................... 116
CONSIDERAÇÕES SOBRE ASSERÇÕES............................................................ 121
LOGGING........................................................................................................................... 122
LOGGER, HANDLER, FORMATTER e FILTER................................................. 123
LOGGING ESTÁTICO............................................................................................. 124
LOGGING DINÂMICO........................................................................................... 125
CONSIDERAÇÕES SOBRE LOGGING................................................................ 127
CAPÍTULO 8 - Threads: Linhas de Execução............................................................................. 129
INTRODUÇÃO.................................................................................................................. 129
ORIENTAÇÃO A EVENTOS............................................................................................ 129
A CLASSE Thread................................................................................................................ 130
A INTERFACE RUNNABLE............................................................................................ 136
LIDANDO COM SINCRONISMO.................................................................................. 138
FINALIZANDO.................................................................................................................. 144
PARTE II - INTERFACES GRÁFICAS E BANCOS DE DADOS ..................................... 145
CAPÍTULO 9 - AWT – Abstract Windowing Toolkit............................................................... 147
INTRODUÇÃO.................................................................................................................. 147
GRÁFICOS.......................................................................................................................... 147
O AWT EM AÇÃO............................................................................................................. 148
A CLASSE Container ......................................................................................................... 149
A CLASSE Frame................................................................................................................ 150
O EXEMPLO FrameUm............................................................................................. 150
O EXEMPLO FrameDois........................................................................................... 152
O EXEMPLO FrameTres............................................................................................ 153
O EXEMPLO FrameQuatro....................................................................................... 155
O EXEMPLO FrameCinco......................................................................................... 156
O EXEMPLO FrameSeis............................................................................................ 159
COMPREENDENDO EVENTOS.................................................................................... 160
O EXEMPLO EventoUm........................................................................................... 162
O EXEMPLO EventoDois.......................................................................................... 163
O EXEMPLO EventoTrês........................................................................................... 164
O EXEMPLO EventoQuatro...................................................................................... 168
O EXEMPLO EventoCinco........................................................................................ 169
LIDANDO COM IMAGENS............................................................................................ 171
CAPÍTULO 10 - Componentes Swing....................................................................................... 175
INTRODUÇÃO.................................................................................................................. 175
JFRAME............................................................................................................................... 175
GERENCIADORES DE LAYOUT................................................................................... 176
BORDER LAYOUT................................................................................................... 176
FLOW LAYOUT........................................................................................................ 179
GRID LAYOUT.......................................................................................................... 181
BOX LAYOUT............................................................................................................ 182
CARD LAYOUT......................................................................................................... 184
GRIDBAG LAYOUT................................................................................................. 189
NULL LAYOUT......................................................................................................... 193
MENUS................................................................................................................................ 194
CAPÍTULO 11 - JDBC – Java Database Connectivity.............................................................. 203
INTRODUÇÃO.................................................................................................................. 203
SOBRE ODBC.................................................................................................................... 203
SOBRE JDBC...................................................................................................................... 204
XII
CAPÍTULO 12 - Lidando com Arquivos.................................................................................... 207
INTRODUÇÃO.................................................................................................................. 207
A CLASSE File..................................................................................................................... 208
A CLASSE Writer................................................................................................................ 210
A CLASSE Reader............................................................................................................... 212
AS CLASSES OutputStream e InputStream....................................................................... 219
A CLASSE RandomAccessFile............................................................................................ 224
ENTENDENDO A CLASSE Mensagem.................................................................. 225
ENTENDENDO A CLASSE Arquivo...................................................................... 226
ENTENDENDO A CLASSE Registro...................................................................... 227
ENTENDENDO A CLASSE JanProduto................................................................. 230
A CLASSE System............................................................................................................... 239
NOVO INPUT/OUTPUT.................................................................................................. 239
TRANSFERÊNCIA INDIRETA............................................................................... 239
TRANSFERÊNCIA DIRETA................................................................................... 240
BUFFERS.................................................................................................................... 241
IMPLEMENTAÇÕES NA CLASSE FILE....................................................................... 244
CAPÍTULO 13 - Conexão com o Access..................................................................................... 247
INTRODUÇÃO.................................................................................................................. 247
OBJETOS DE CONEXÃO................................................................................................ 247
CRIANDO A FONTE DE DADOS ODBC..................................................................... 248
PROJETANDO A CONEXÃO.......................................................................................... 250
A CLASSE ConexaoAccess.................................................................................................. 250
A CLASSE JanPrincipal....................................................................................................... 257
A CLASSE JanCliente................................................................................................. 258
A CLASSE JanCategoria...................................................................................................... 269
CRIANDO ARQUIVO EXECUTÁVEL........................................................................... 273
CAPÍTULO 14 - Conexão com o Firebird.................................................................................. 275
INTRODUÇÃO.................................................................................................................. 275
ENTENDENDO O DRIVER JayBird................................................................................ 275
A APLICAÇÃO-EXEMPLO.............................................................................................. 276
A CLASSE ConexaoFirebird....................................................................................... 276
A CLASSE JanMenu................................................................................................... 280
A CLASSE JanPaises................................................................................................... 282
A CLASSE JanCargos................................................................................................. 289
A CLASSE JanSobre.................................................................................................... 297
O COMPONENTE JTable................................................................................................. 299
CAPÍTULO 15 - Arquivos JAR e JavaDoc................................................................................. 303
INTRODUÇÃO.................................................................................................................. 303
O ARQUIVO MANIFEST................................................................................................. 303
ARQUIVOS JAR NA JANELA DE COMANDOS.......................................................... 304
ARQUIVOS JAR NA FERRAMENTA BlueJ.................................................................... 306
ARQUIVOS JAR NA FERRAMENTA NetBeans BlueJ Edition...................................... 306
IMPLEMENTAÇÕES DO JAVA SE 6 ............................................................................. 307
A FERRAMENTA javadoc.................................................................................................. 307
APÊNDICE A - Exemplos do Livro............................................................................................ 312
INTRODUÇÃO.................................................................................................................. 312
EXECUTANDO OS EXEMPLOS.................................................................................... 312
APÊNDICE B - BlueJ – Ambiente Interativo Java.................................................................... 313
INTRODUÇÃO.................................................................................................................. 313
XIII
SITE...................................................................................................................................... 313
INSTALAÇÃO..................................................................................................................... 314
ASPECTOS BÁSICOS....................................................................................................... 315
CRIANDO PROJETOS............................................................................................. 315
CRIANDO CLASSES................................................................................................ 317
ABRINDO PROJETOS............................................................................................. 318
EXECUTANDO CLASSES....................................................................................... 319
CRIANDO OBJETOS................................................................................................ 319
DEPURANDO CÓDIGO.......................................................................................... 321
COMPILAÇÃO................................................................................................................... 323
COMPILANDO CLASSES....................................................................................... 323
COMPILANDO PROJETOS.................................................................................... 324
BLOCO DE CÓDIGO (CODE PAD).............................................................................. 324
TEMPLATES...................................................................................................................... 326
REDIMENSIONANDO SÍMBOLOS.............................................................................. 327
CONFIGURAÇÃO............................................................................................................. 328
O TERMINAL WINDOWS.............................................................................................. 329
FINALIZANDO.................................................................................................................. 330
APÊNDICE C - NetBeans IDE 5.5.1BlueJ Edition.................................................................. 331
INTRODUÇÃO.................................................................................................................. 331
SITE...................................................................................................................................... 331
A INTERFACE.................................................................................................................... 333
ABRINDO OS PROJETOS-EXEMPLOS........................................................................ 333
CONFIGURANDO............................................................................................................ 335
APÊNDICE D - O Visual Nimbus.............................................................................................. 339
INTRODUÇÃO.................................................................................................................. 339
O PROJETO MyAppCap14a.............................................................................................. 339
A CLASSE Visual................................................................................................................ 340
A CLASSE JanMenu............................................................................................................ 341
OS VISUAIS......................................................................................................................... 341
O VISUAL Nimbus...................................................................................................... 341
O VISUAL System....................................................................................................... 342
O VISUAL Motif......................................................................................................... 343
O VISUAL Metal......................................................................................................... 343
FIXANDO Nimbus.............................................................................................................. 344
JANELA DE COMANDOS...................................................................................... 344
ARQUIVO SWING DE PROPRIEDADES............................................................ 345
APÊNDICE E - O Banco de Dados Firebird............................................................................. 347
INTRODUÇÃO.................................................................................................................. 347
Referências Bibliográficas............................................................................................................ 349
Introdução
Objetivo
Este livro se propõe a ensinar os fundamentos da linguagem Java, utilizando exemplos deliberada e
didaticamente simples, de forma que o leitor possa assimilar, sem muito esforço, a proposta da linguagem. Adicionalmente, estabelece alicerces para a construção de aplicações comerciais desktop,
mostrando os componentes básicos de interfaces gráficas e a conexão com bancos de dados. Em
momento algum o livro trata de applets ou de Internet. E por falar em applets, a tecnologia que
abriu caminho para o crescimento de Java tem ficado num plano inferior em relação a ferramentas
como o Flash, que permite animação vetorial.
O texto não pretende ser um manual de referência, o que significa que centenas de classes e métodos não serão aqui abordados. Quando o leitor se sentir mais à vontade com os aspectos básicos
da linguagem, poderá obter farta documentação nos sites especializados, principalmente nos da
Sun Microsystems:
http://www.sun.com
http://java.sun.com
Público-Alvo
O livro pode ser compreendido, sem muito esforço, por principiantes ou por pessoas que já lidam
com alguma linguagem de programação. A primeira parte do livro não requer conhecimentos
mais profundos, além das noções elementares de informática. Com relação à segunda parte, será
preciso que o leitor tenha algum conhecimento sobre bancos relacionais e esteja familiarizado
com os conceitos da linguagem SQL, especialmente as cláusulas SELECT, INSERT, UPDATE
e DELETE.
O Que é Necessário
Para ler e entender o conteúdo do livro, não é necessário qualquer tipo de aparato especial. Entretanto, para testar os exercícios, o leitor vai precisar instalar alguns produtos em sua máquina.
Primeiramente, é necessário instalar a Máquina Virtual Java:
( JDK 6)
Java SE Development Kit 6
Para testar os exemplos, deve-se instalar o ambiente BlueJ, abordado no Apêndice B. Também é
possível, e aconselhável, testá-los no ambiente NetBeans BlueJ Edition, ferramenta apresentada
no Apêndice C.
Os exemplos do Capítulo 14 requerem a instalação do Firebird, um gerenciador de bancos de
dados relacionais, apresentado no Apêndice E.
Todos os elementos acima referenciados podem ser obtidos sem qualquer custo, de acordo com as
regras estabelecidas em licença. No corpo do livro são indicados os locais onde podem ser encontrados, além de outras informações.
A Organização do Livro
Há duas seções, ou duas partes, no livro: a Seção I, denominada “Fundamentos da Linguagem”,
explora o conteúdo básico de Java, a fim de que o contexto e a proposta da linguagem se tornem
claros para o leitor. A Seção II, com o título “Interfaces Gráficas e Bancos de Dados”, traça as primeiras linhas para a construção de interfaces gráficas com o usuário e para a conexão com bancos
de dados relacionais.
Os Capítulos 1 a 8 formam a primeira parte do livro.
O Capítulo 1, “Java: Um Pouco de História”, contém um breve relato sobre a história de Java, de
modo que o leitor tenha idéia da sua origem.
O Capítulo 2, “Orientação a Objetos”, aborda os conceitos relacionados à orientação a objetos,
mas sem o enfoque técnico.
Os fundamentos técnicos da orientação a objetos são explorados nos Capítulos 3, 4 e 5, que reúnem informações necessárias à compreensão dos seus elementos essenciais: classes, atributos e
métodos. Os títulos dos capítulos são, portanto, bastante objetivos: Capítulo 3 – “Lidando com
Classes”; Capítulo 4 – “Lidando com Atributos”; Capítulo 5 – “Lidando com Métodos”.
O Capítulo 6 aborda um tema importante em qualquer linguagem: as estruturas de controle. Nele
são estudadas formas de se produzirem fluxos de controle necessários à obtenção de informações
relevantes para o usuário. Qualquer linguagem existe para produzir resultado útil. É o que pretende
ilustrar o capítulo.
No Capítulo 7, “Lidando com Exceções, Assertions e Logging”, o leitor tem a oportunidade de
entender as técnicas de Java envolvidas no tratamento de exceções. Como qualquer elemento produzido por humanos, programas de computador estão sujeitos a incidentes e acidentes, modestamente chamados de “exceções”, que podem provocar, entre outras coisas, resultados inconsistentes.
O capítulo se destina a mostrar como as exceções podem ser previstas e devidamente tratadas.
Além disso, aborda a técnica de Assertions, que permite testar a qualidade do código produzido,
e também o processo de Logging, que pode ser utilizado pelos desenvolvedores na depuração das
aplicações durante a fase de desenvolvimento ou para diagnosticar o funcionamento interno das
aplicações durante a fase de produção.
Encerrando a Seção I, o Capítulo 8 destaca um assunto reconhecidamente complexo: linhas de execução. Como o título – “Threads: Linhas de Execução” – sugere, o capítulo enfoca as questões envolvidas com o tema e os cuidados necessários para se lidar com o problema de multiencadeamento.
A segunda parte do livro se consolida nos Capítulos 9 a 15.
O Capítulo 9, “AWT – Abstract Windowing Toolkit”, inicia a Seção II lançando as primeiras
luzes sobre o conceito de interfaces gráficas com o usuário, exibindo os componentes AWT, que
acompanham o Java desde a primeira versão, destinados a produzir aplicações baseadas em modo
gráfico.
O Capítulo 10, “Componentes Swing”, mostra os filhos do AWT – os componentes Swing – mais
leves e mais precisos, que agora desfilam na passarela das interfaces gráficas produzidas em Java.
Preparando a trilha para os Capítulos 13 e 14, o Capítulo 11, “JDBC – Java Database Connectivity”, explica a tecnologia Java envolvida com conexão de bancos de dados e os tipos de drivers
suportados pela linguagem.
O Capítulo 12, “Lidando com Arquivos”, sintetiza o uso de fluxos de dados e de caracteres e
demonstra como utilizar arquivos binários. São abordados exemplos referentes ao novo sistema de
entrada e saída, encontrado no pacote java.nio, que complementa o pacote original java.io.
O Capítulo 13, “Conexão com o Access”, enfatiza um modesto aplicativo Java, construído para
utilizar a tecnologia ODBC, utilizando conexão com o banco de dados MS Access.
O Capítulo 14, “Conexão com o Firebird”, amplia os conhecimentos do Capítulo 13, mostrando
um aplicativo, também elementar, que possibilita ligação direta com o banco de dados Firebird,
sem a presença de uma fonte de dados ODBC. O aplicativo, a exemplo do que ocorre no Capítulo
13, atende ao modelo de três camadas, isto é, apresenta a aplicação cliente, a aplicação servidora e
o banco de dados perfeitamente delineados.
Para finalizar a Seção II, o Capítulo 15, “Arquivos Jar e javadoc”, aborda a questão dos arquivos
JAR – arquivos baseados na tecnologia zip –, construídos para agrupar arquivos e recursos numa
peça única, facilitando o seu manuseio. Trata, ainda, da ferramenta javadoc, utilizada para produzir
documentação HTML a partir do código Java.
Por fim, há cinco apêndices:
Apêndice A
Trata do arquivo java2se_3ed.zip, que contém os exemplos do livro e os programas de instalação
das ferramentas utilizadas e do banco de dados Firebird.
Apêndice B
Trata do ambiente interativo BlueJ, ferramenta de apoio utilizada no livro.
Apêndice C
Trata do ambiente NetBeans BlueJ Edition, ferramenta opcional de apoio com a qual foram produzidos alguns dos códigos do livro.
Apêndice D
Trata do Look & Feel Nimbus, o visual vetorial desenvolvido para os componentes Swing, introduzido no Java SE 6.
Apêndice E
Trata do Firebird, o banco de dados relacional utilizado nos projetos-exemplos do Capítulo 14.
PARTE I
FUNDAMENTOS DA
LINGUAGEM
CAPÍTULO 1
Java: Um Pouco de História
Sempre que se escreve um livro sobre linguagem de programação, surge a necessidade quase compulsiva de se fazer uma biografia a fim de identificar suas raízes. Este é um livro sobre Java, logo, a
tradição nos diz que devemos conhecer um pouco da personalidade de Java.
Será mais interessante descrever os traços típicos de Java indo ao passado, numa espécie de regressão uterina, até chegarmos ao seu conteúdo genético básico: a linguagem C.
Não é mais novidade para os programadores o fato de C ter sido inventada e implementada inicialmente por Dennis Ritchie num computador da Digital, o DEC PDP 11, governado pelo sistema
operacional Unix.
Essencialmente, C é como o fruto maduro da linguagem BCPL, desenvolvida por Martin Richards, que resultou numa linguagem chamada B (idealizada por Ken Thompson). Temos, então,
a célebre trilogia: BCPL, B e, finalmente, C.
Há um detalhe que, surpreendentemente, diferencia C das outras linguagens: ela foi criada, influenciada e testada por programadores profissionais. Como resultado, a linguagem oferece ao
programador poucas restrições, estruturas de código e um conjunto limitado de palavras-chaves.
Tal característica de C possivelmente explica o fato de que a linguagem costuma brilhar nos bastidores, nunca nos palcos. Muitos sistemas operacionais e linguagens de programação que se projetaram no mundo da informática estão baseados em C. Clipper e Pascal são dois exemplos clássicos.
Java é uma das filhas de C. Criada por James Gosling, da Sun Microsystems, com o nome de
“Oak”, a linguagem deveria incorporar os benefícios da programação orientada a objetos sem, no
entender do criador, a desnecessária complexidade de C.
Em agosto de 1993, Kathy Walrath foi contratada pela FirstPerson, uma pequena empresa criada
pela Sun, que, à época, se concentrava no desenvolvimento de um controle remoto doméstico com
uma pequena tela sensível ao toque. O código por trás do artefato baseava-se na linguagem de
programação criada por James Gosling.
A tarefa de Kathy consistia em escrever a especificação da linguagem. Entretanto, o projeto perdeu fôlego, o que fez a FirstPerson mudar de estratégia. Na realidade, a empresa percebeu que a
lingua
gem Oak, com capacidade de produzir código seguro, facilidade de transporte e independência de
plataforma, era um produto vital para a Internet.
A partir dessa constatação, a empresa criou o navegador chamado WebRunner, que entregava código Oak na Internet na forma de applets, pequenos programas que podiam ser executados em páginas HTML. Mesmo que você seja muito distraído, certamente já deve ter ouvido falar de applets.
Pouco depois, em 1995, a linguagem Oak recebeu o honroso nome de Java, e o navegador WebRunner, o de HotJava.
Com o auxílio de Mary Campione, Kathy produziu, em maio de 1995, a primeira versão de The
Java™ Programmer’s Guide (Guia do Programador Java), que fornecia informações para o início
da programação na plataforma Java. No final daquele ano, o guia recebeu nome mais acessível: The
Java™ Tutorial.
Embora existam diversos termos e siglas associados a Java, podemos fazer uma filtragem e fornecer
as expressões mais importantes atreladas à linguagem:
JSDK ( Java Software Development Kit) ou JDK ( Java Development Kit)
O conjunto de ferramentas de desenvolvimento oferecido pela Sun e outros fabricantes,
que inclui, como estrutura mínima, um compilador e um interpretador.
JVM ( Java Virtual Machine)
O mecanismo responsável pela interpretação do código intermediário Java (os famigerados bytecodes). A Máquina Virtual Java, embora possa parecer estranho, não conhece
a linguagem Java. Ela somente reconhece o formato de arquivo .class que contém os
bytecodes, os quais serão traduzidos para o código binário da plataforma hospedeira.
JRE ( Java Runtime Environment)
O ambiente de execução Java existente nas máquinas dos usuários finais, que apenas executam aplicações Java. O ambiente inclui, portanto, a Máquina Virtual Java e as classes
que formam a plataforma Java.
J2SE ( Java 2 Standard Edition)
A denominação da primeira edição de Java, contendo as principais classes da plataforma Java.
J2ME ( Java 2 Micro Edition)
A extensão da plataforma J2SE para o desenvolvimento de aplicações Java em pequenos dispositivos como telefones celulares, sendo este apenas um dos exemplos de suas
múltiplas aplicações.
J2EE ( Java 2 Enterprise Edition)
A extensão da plataforma J2SE para o desenvolvimento de aplicações distribuídas. Engloba um conjunto de tecnologias que, em conjunto, fornecem APIs e um ambiente para
desenvolvimento e execução de aplicações corporativas.
JDBC ( Java Database Connectivity)
Arquitetura baseada em interfaces e especificações que permite acesso multiplataforma a
bancos de dados. O acesso aos dados baseia-se em drivers JDBC, que são implementados
por conjuntos de classes que dominam a arquitetura e os comandos dos bancos de dados.
Servlets
Extensões do padrão CGI, escritas em puro Java, usadas para a geração de conteúdo
dinâmico para a Web.
JSP ( JavaServer Pages)
Conjunto de APIs que permitem a criação de páginas web dinâmicas, com acesso a dados e interação com o usuário. Atualmente, há uma forte tendência a se utilizar JSP para
a parte visual das aplicações e Servlets para a lógica de validação e controle.
EJB (Enterprise JavaBeans)
Define padrão para componentes de negócio distribuídos. A sigla também é utilizada
para referir-se aos componentes criados segundo o padrão. Os componentes fornecem
serviços básicos como: gerenciamento de transações e persistência.
RMI (Remote Method Invocation)
Solução para a distribuição de aplicações Java, permitindo a comunicação entre objetos
localizados em máquinas virtuais diferentes.
Em passagem pelo Brasil (outubro de 2002), James Gosling revelou não ter idéia do futuro da
linguagem Java. Segundo ele, tudo depende dos desenvolvedores. Acreditava ele, entretanto, que
Java seria utilizada com mais vigor em desktops.
Pesquisas realizadas por instituições consagradas como o Gartner Group mostram que o uso de Java
tem aumentado consideravelmente nas grandes corporações em detrimento de outras linguagens.
No cenário atual (2008), embora a tecnologia Java para desktops continue evoluindo, não existem
aplicações Swing sendo produzidas em massa como supunha Gosling. Em 2007, a Sun anunciou
vários aperfeiçoamentos para os desenvolvedores Java, os quais estão sendo consolidados no projeto conhecido como “Java SE 6 Update N”.
Há várias questões envolvidas no projeto como, por exemplo, o tempo de carga das aplicações, o
tamanho do Java Runtime Environment e o consumo exagerado de memória.
Uma das implementações importantes, tratada no Apêndice D, diz respeito ao Look & Feel Nimbus, desenvolvido para os componentes Swing. Trata-se de um visual inteiramente vetorial, criado
com a Java2D, em que todos os componentes são desenhados sem utilizar bitmaps. Isso significa
que as aplicações se adaptarão com precisão a qualquer resolução de monitor de vídeo.
Download