Você está na página 1de 20

Parte 1: Fundamentos da linguagem Java

Captulo 1 Introduo linguagem Java


Bom, agora que ns j conhecemos um monte de coisas a respeito da linguagem Java: como comeou, suas caractersticas principais, como instalar e configurar um ambiente Java em Windows e Linux, os utilitrios bsicos do kit Java e tambm onde conseguir ajuda est na hora de comearmos a por a mo na massa e dar incio a programao bsica. No entanto seria bom j por a gua para esquentar porque precisaremos de algumas xcaras de caf. Comearemos aqui pelos fundamentos da linguagem e na seqncia entraremos na filosofia e orientao a objetos, que se voc prestar ateno no vai ter muitas dificuldades. Mas antes eu j vou lhe avisando, leia com muita ateno estes captulos seguintes, estude e faa os exemplos, faa os exerccios propostos e se for necessrio refaa o captulo que no entendeu direito, pois na linguagem Java no d para enrolar, ou voc sabe ou no sabe e eu prefiro que voc saiba, afinal de contas, quer ser um profissional nessa rea, certo? Se voc j programou em alguma linguagem j deve ento saber que precisamos seguir algumas regras bsicas para que nosso programa flua de acordo com nosso desejo e mesmo assim tem horas que no sai do jeito que a gente quer. A linguagem Java tem uma estrutura de programao, digamos, semelhante com a estrutura das outras linguagens de programao, como declaraes iniciais, regras para funes que aqui chamaremos de mtodos, declaraes e variveis, operadores, etc, porm o conceito bem diferente daquele que encontramos no Visual Basic, Delphi, etc. Na linguagem Java voc trabalha com a idia de objetos e esses objetos tm uma funo no sistema que est sendo desenvolvido, e isso tudo aprenderemos quando comearmos a estudar Java com orientao a objetos. Por enquanto vamos nos preocupar em entender o processo bsico de programao no Java e eu j lhe digo, esse sim, semelhante ao que voc pode encontrar na linguagem C/C++, Pascal, etc. Se voc pretende mais tarde tirar uma certificao em Java, fique sabendo que vai ter que estudar bastante, pois as provas exigem muito de seus candidatos. Portanto seja um bom leitor/aluno e estude bem os exemplos contidos neste livro, j vai ajudar bastante.

Estrutura de um programa em Java


Para que tenha uma idia do que estou falando, vamos analisar um exemplo bem simples e bsico de um pequeno programa em Java, nele percebemos os conceitos e as regras das quais eu lhe falei. Procure entender logo cedo para que todo o conceito seja fcil de ser assimilado, procure identificar quais so as partes de um programa esto pedindo um objeto, um mtodo, uma classe, um atributo, etc. Se chegar perceber isso, voc est no meio do caminho do sucesso, que legal isso hein? Acompanhe a listagem de um programa para o modo texto, apenas lembrando que a numerao das linhas apenas para interpretao, no fazendo assim parte de um programa Java.
1. /** 2. The HelloWorldApp class implements an application that 3. displays "Hello World!" to the standard output. 4. */ 5. public class HelloWorldApp { 6. public static void main(String[] args) { 7. // Display "Hello World!" 8. System.out.println("Hello World!"); 9. } 10. }// End of program.

Fundamentos de Programao Java Para Certificaes JCA/JCP

Vamos fazer uma anlise desse pequeno programa: As linhas de 1 a 4 so comentrios no cdigo Java para auxiliar na interpretao e leitura do programa. A linha 5 declara uma classe chamada HelloWordlApp, ou seja, esse vai ser o nome do programa depois de compilado. Salve o arquivo obrigatoriamente com esse nome e seguindo a regra que ns j sabemos que o Java case sensitive, ou seja, faz distino entre letras maisculas e minsculas, por exemplo, ADILSON.java diferente de Adilson.java. O nome do arquivo salvo ser HelloWordlApp.java e o nome do arquivo compilado ser HelloWordlApp.class, mas tenha calma isso voc vai aprender logo, logo.
DICA: No padro sugerido pela SUN toda classe tem iniciais maisculas, todo mtodo em minscula e declarao de objetos tambm, pois vlido a existncia de um objeto com o mesmo nome da classe.

A linha 6 o mtodo principal que todo programa Java tem exceto os applets que aprenderemos o por que quando estiver estudando o captulo sobre Java applets. como se fosse a funo main() da linguagem C. A linha 7 mais um modelo de comentrio em Java. A linha 8 responsvel por imprimir a mensagem Hello World! na tela. como o comando printf da linguagem C. A linha 9 encerra o mtodo main(...) declarado na linha 6 e... E por ltimo a linha 10 encerra a classe HelloWordlApp declarada na linha 5. Fcil de entender esse programa, no mesmo? Bom, acho que voc entendeu e pode perceber que se comearmos com exemplos bem simples o Java acaba se tornando de certa forma at que fcil. O cdigo anterior gera a frase Hello World! em MS-DOS ou no terminal do sistema Linux. Caso queira execut-lo, primeiramente salve o arquivo e execute o comando javac HelloWordlApp.java para compilar e gerar o arquivo HelloWordlAp. class agora para executar o programa digite o comando java HelloWordlApp. OK! Seu programa esta a.
// Comentrios iniciais sobre o programa. package com.studyguide.myjava; import import import import com.unipar.cooperate.server.*; java.util.*; javax.swing.*; java.awt.*; //1 //2 //3

public class AloMundao { public final static void main(String[] args) { System.out.println("Alo Mundao Java!"); } } // fim do programa.

//4 //5 //6

Resumindo, devemos saber em princpio que todos os programas em Java possuem 6 (seis) elementos bsicos, os quais podem ou estaram presente em seus programas conforme o cdigo anterior, onde:
(1) Pacote Java criado por terceiros. Esses pacotes podem incluir inmeras funcionalidades a mais para dar mais poder as suas aplicaes. (2) Classes definidas por voc mesmo ou classes de terceiros para aproveitamento de cdigo. Por exemplo, uma classe

para verificar CPF, CNPJ, RG, Ttulo Eleitoral, Inscrio Municipal/Estadual e assim por diante.

(3) Pacotes do prprio kit SDK da linguagem Java. (4) Classe principal a qual vai dar nome a sua aplicao. Todo programa em Java apresenta uma classe principal caso

siga esse exemplo.

(5) Mtodo principal o qual executar o programa. Todo programa em Java tem um mtodo principal semelhante

linguagem C/C++ caso siga esse exemplo. O mtodo main() muito flexvel, a ordem dos modificadores no importa, o argumento do tipo array de Strings ou varargs (Java 5) e o nome do argumento pode ser qualquer nome vlido.

Captulo 1: Introduo Linguagem Java

static public void main(String[] args){...} public static void main(String... x) {...} // Java 5. static public void main(String xyz[]){...}

(6) Corpo do programa. Dentro do corpo do programa que so usados variveis, operadores, chamadas de mtodos

e classes (internas ou externas), outros programas, rotinas do sistema operacional, acesso a intranet e a Internet etc.

Voc no necessariamente ter que usar os passos (1) e (2) para desenvolver seus programas em Java. Isso acontecer com o tempo onde os programas ficam grandes e complexos. Como podemos ver, essa a regra para um programa linear, ou seja, um programa de um nico arquivo .java que vai ser compilado e executado. Essa regra vale para o modo texto e tambm para o modo grfico. No se preocupe agora com programas modulares, como, um programa semelhante a idia do Delphi onde temos vrios arquivos de formulrios que so partes de um programa. A estrutura bsica de programao em Java no difcil de ser seguida, pois ela define as seguintes regras: 1. Atribuio de nomes: Se o arquivo fonte possuir uma classe pblica, seu nome dever ser o mesmo que o dessa classe; 2. Total de classes: A linguagem Java sugere o mximo de uma classe pblica em um arquivo fonte. Porm o restante no sendo pblica pode ter quantas classes o programador desejar, no entanto, a SUN recomenda o mximo de linhas por arquivo fonte seja em nmero de 2.000 (dois mil), para no afetar a performance; 3. Layout: Um arquivo fonte .java pode conter trs elementos de nvel superior que so: a) Uma declarao de package opcional; b) Qualquer nmero de declaraes de importao e c) Declaraes de classe e de interface. Lembre-se de que esses itens devem aparecer nessa ordem. Isto , as instrues de importao (import) devem preceder todas as declaraes de classe e, se uma declarao de package for utilizada, dever preceder as classes e as importaes (import).

Explanao da estrutura bsica


Eu sei que voc observador de pode observar todas as partes desse programa pequeno e simples, mas com certeza teve algumas dvidas como, sobre as palavras, instrues e comandos desse programa. Pois bem, vou lhe explanar aqui de uma forma bem clara: 1. public: um quantificador do mtodo que indica que ele acessvel externamente a esta classe (para outras classes que eventualmente seriam criadas). Uma classe pblica pode ser vista por todo o programa; 2. static: um qualificador que indica que o mtodo ou varivel deve ser compartilhado por todos os objetos que so criados a partir dessa classe. Os mtodos static podem ser invocados, mesmo quando no for criado nenhum objeto para a classe, para tal deve-se seguir a sintaxe: <Classe>.<Mtodo> (argumentos); 3. void: semelhante ao void da linguagem C/C++, corresponde ao valor de retorno da funo. Quando a funo no retorna nenhum valor ela retorna void (vazio), uma espcie de valor vazio que tem que ser especificado; 4. main(): Semelhante ao main() da linguagem C/C++, um nome particular do mtodo que indica para o compilador o incio do programa, dentro deste mtodo e atravs de interaes entre os atributos e argumentos visveis que o programa se desenvolve. Chamamos de mtodo principal que o ponto de entrada para todo e qualquer programa e todo programa apresenta somente um desse mtodo por arquivo; 5. String args[ ]: Esse o argumento do mtodo principal (main) e por conseqncia, do programa todo. Ele um vetor de strings que formado quando so passados ou no argumentos atravs da invocao do nome do programa na linha de comando do sistema operacional. Tambm poderemos encontrar assim: String[] args; 6. {....}: Delimitam um bloco de cdigo, isso igual a linguagem C/C++ e semelhante ao BEGIN e END em Pascal; 7. System.out.println(): a chamada do mtodo println para o atributo out da classe System. O argumento de println uma constante do tipo String. O println assim como o writeln de Pascal, imprime uma string qualquer e posiciona o cursor na linha abaixo, analogamente o print no avana a linha.
3

Fundamentos de Programao Java Para Certificaes JCA/JCP

No decorrer do seu aprendizado do Java voc pode encontrar diferentes tipos de declarao para a classe System e para que voc no fique a ver navios aqui esto os trs tipos que voc poder encontrar: 1. System.out: Usada para a sada padro (tela) de informaes. Usamos para mostrar na tela informaes de processamento dos nossos programas; 2. System.in: Usada para entrada padro (teclado) de informaes. Usamos quando precisamos que o usurio fornea informaes ao sistema (aplicao); 3. System.err: Usada para sada padro (arquivo ou tela) e erros (informaes). Usamos quando precisamos analisar eventuais informaes decorrentes de erros em nossos aplicativos.
DICA: Por padro, todas as classes so subclasses da classe Object (classe mais alta de todas), mas no precisa se preocupar, pois isso j est implcito em todos os seus programas. comum e voc ver neste livro o uso dessa classe para verificao de objetos.

Agora acompanharemos outro exemplo de um programa que usa a mesma idia, porm para o modo grfico que usa o Swing (pacote Java para escrever aplicaes em modo grfico). Perceba que a idia a mesma, ou seja, a de mostrar a mensagem Hello World! na tela:
1. import javax.swing.*; 2. 3. public class HelloWorldSwing { 4. public static void main(String[] args) { 5. 6. JFrame frame = new JFrame("HelloWorldSwing"); 7. final JLabel label = new JLabel("Hello World"); 8. frame.getContentPane().add(label); 9. 10. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 11. 12. frame.pack(); 13. frame.setVisible(true); 14. } 15. }// Fim do programa.

Vamos analisar esse programa: A linha 1 importa do pacote Swing javax.swing.*; que responsvel pela parte grfica (janelas, botes, etc), ou seja, todos os componentes para o desenho de nossa interface, assim no precisaremos nos preocupar com os nomes de tais componentes. O pacote Swing melhor e mais moderno que o AWT. A linha 3 e 4 so declaraes da classe e do mtodo principal. A linha 6 informa a criao de um objeto chamado frame de uma classe JFrame. Isso , uma janela completa (bordas e botes) com o ttulo HelloWorldSwing. A linha 7 informa a criao de um objeto chamado label de uma classe chamada JLabel e ele vai colocar o texto HelloWorldSwing dentro da janela. A linha 8 insere o objeto label em um painel que est contido dentro do frame. assim, uma janela (frame) apresenta um painel que o getContentPane() e dentro desse painel inserimos todos os objetos que fazem parte da interface. A principal funo dos painis que eles servem para controlar o posicionamento de seus componentes para uma melhor organizao de sua aplicao. A linha 10 programa o boto X para fechar a janela. Por padro ele est desabilitado e no vai fechar a janela quando voc clicar nele, por isso que voc precisa dessa linha. Engraado n? Aps a verso 1.3 do Java somente essa linha basta para que o boto X tenha seu efeito de fechar a janela. Caso voc use uma verso anterior ao 1.3 (o que eu no recomendo), voc precisar criar um listener (ouvinte), que algo semelhante aos eventos do Visual Basic e do Delphi, Assim ele ficar ouvindo se algo aconteceu e poder ento executar uma ao (Action). As linha 12 e 13 so responsveis por disponibilizar a janela na tela. H outros modos de se disponibilizar uma janela na tela mesmo usando AWT e Swing, porm com o tempo voc aprender como fazer. As linhas 14 e 15 encerram a declarao da classe (linha 3) e do mtodo principal (linha 4).
4

Captulo 1: Introduo Linguagem Java

Veja que interessante, o cdigo anterior gera a seguinte sada em Windows e em Linux:

Figura 1.1: Resultado do programa em Windows e Linux.


NOTA: Em Java ns programamos usando vrios objetos e esses objetos ficam contidos em painis os quais podero estar contidos em outros painis. Assim estamos usando a filosofia de camadas, onde cada uma tem as suas prprias regras.

Para exemplos simples, usualmente podemos tambm fazer uso das caixas de dilogos, onde essas possuem a vantagem de trazer botes j padronizados. Acompanhe o prximo exemplo:
import javax.swing.JOptionPane; public class AloMundoJOP { public static void main( String args[]) { JOptionPane.showMessageDialog(null,"Alo Mundo!\nBem Vindo ao Java."); System.exit(0); // Termina a aplicao. } }// Fim do programa.

Figura 1.2: Resultado do programa em Windows e Linux.


DICA: Esses tipos de caixas de dilogos podem ser personalizadas para diversos tipos de mensagens no sistema, por exemplo, caixas de mensagens de erros (ERROR_MESSAGE), de informao (INFORMATION_MESSAGE), e de alerta (QUESTION_MESSAGE), mensagens de avisos (WARNING_MESSAGE), e de texto puro (PLAIN_MESSAGE). Tambm pode-se personalizar os ttulos e os cones e at mesmo os sons emitidos.

No sistema Linux devido aos vrios gerenciadores de janelas a aparncia de seu aplicativo muda bastante. Experimente usar os gerenciadores KDE, Gnome, WindowMaker, IceWM, etc para ver como que fica a aparncia de seus programas. Devido a essa filosofia do Linux nossos programas ficam muito mais bonitos e interessantes de usar. Lembrando que no entraremos no conceito tcnico da programao, pois ns somente estamos fazendo uma anlise de um programa em cdigo Java. Eu sei que voc vai fazer a seguinte pergunta: Nossa, tudo isso s para colocar uma mensagem na tela?. Eu digo: S isso, e j pode ir se acostumando que voc vai digitar um bocado para aprender a programar em Java. Em Java quando estamos digitando nossos programas no brao, ou seja, sem contar com a ajuda de uma IDE (ambiente de desenvolvimento), usamos de muita digitao e, portanto MUITO importante desde j que nos acostumemos a corrigir on-time (na hora), os nossos erros, pois se faltar uma vrgula ou ponto e vrgula (com exceo dos comentrios todas as linhas de um programa em Java terminam com ponto e vrgula), teremos que procurar e isso poder gerar certo aborrecimento pelo tempo que vai ser gasto. Pois dificilmente nas primeiras tentativas de programao a gente acerta. Claro, que depois que voc tiver j uma boa base e idia do ambiente Java, voc vai escolher um programa para lhe ajudar a digitar melhor e depois vai escolher uma IDE para da comear a desenvolver suas aplicaes cada vez com um nvel maior e conseqentemente uma maior complexidade.

Fundamentos de Programao Java Para Certificaes JCA/JCP

Imagine um sistema de banco de dados, com validao de usurio, conexes remotas, gerenciamento de backups, emisso de relatrios em texto, em PDF, HTML, etc e etc. Voc acha que isso simples de ser feito? Pois, acredite, no . Isso geralmente e deve ser feito em equipe e dependendo da complexidade de um sistema pode levar muito tempo. Eu no estou querendo lhe desanimar, muito pelo contrrio, estou lhe mostrando o quanto o Java tem para lhe oferecer e voc para aprender, e assim tornar-se um profissional qualificado.

As principais classes e pacotes do Java


A linguagem Java extremamente poderosa e possui inmeras classes e mtodos para podermos desenvolver nossos aplicativos de uma maneira bem mais rpida, flexvel e robusta economizando tempo como faramos na linguagem C/ C++ atravs do uso de bibliotecas e mtodos. Se fizermos uma analogia com C/C++, as classes em Java so semelhantes s bibliotecas e os mtodos so semelhantes s funes e do mesmo modo que podemos criar nossas prprias funes e bibliotecas na linguagem C/C++, tambm podemos fazer isso na linguagem Java. Porm na linguagem Java ns temos os pacotes, que so arquivos contendo classes, interfaces e mtodos para serem usados na linguagem. Os pacotes na linguagem Java devem ser os primeiros a serem declarados logo no incio do cdigo. Os pacotes padro da linguagem Java que so importados para dentro de um cdigo ou aplicao tem a seguinte sintaxe:
import javax.swing.*; import java.awt.*; // Tudo que for Swing. // Tudo que for AWT.

Tambm podemos fazer importaes especficas para somente o que nos interessa, veremos essas importaes no captulo sobre colees.
import java.awt.Graphics; import javax.swing.JOptionPane; // Importa Graphics. // Importa JoptionPane.

Os pacotes de terceiros ou os que voc mesmo criar tem uma outra forma de serem declarados e vem antes do import para pacotes normais, ou seja, deve ser a primeira linha a ser declarada. Podem existir apenas comentrios antes dessa declarao. Embora aqui apaream vrios pacotes, apenas uma declarao de pacote vlida, o restante deve ser feito via importao. O uso de pacotes externos (pacotes prprios ou de terceiros) na linguagem Java tem a seguinte sintaxe:
package edu.org.meuspacotes.*; package edu.org.meuspacotes.CPF; // Tudo de meuspacotes. // Uma classe especfica.

package com.application.collaborate.server.*; package com.application.collaborate.client.*;

Qual a vantagem de usar esses pacotes? Simples. Se for pacote da linguagem Java servir para voc poder programar seno, no tem como, e se for pacotes de terceiros, servir para que voc possa usar uma implementao existente no pacote para um objetivo especfico. Voc tambm pode desenvolver seus prprios pacotes, mas para isso o seu conhecimento em ambiente Java precisa estar bem amadurecido. A vantagem disso que poder redistribu-lo compartilhando assim seus conhecimentos e trocando experincia. Quando usamos uma IDE, ou seja, um ambiente de desenvolvimento de aplicativos como JBuilder, Eclipse ou NetBeans por exemplo, elas usam a regra package <diretrio_da_aplicao> a ser desenvolvida. Veja isso atravs dos fontes de sua aplicao e perceba que todos os demais programas (classes) dessa aplicao estaro fazendo referncia a esse diretrio.
NOTA: Em uma aplicao, por arquivo de classe apenas uma declarao package pode existir, pois na verdade trata-se de um diretrio de onde vo ser buscadas as classes. Tambm possvel coloc-lo como declarao import em alguns casos.

Captulo 1: Introduo Linguagem Java

Tabela 1.1: Principais pacotes da linguagem Java. Pacote


java.awt.* java.beans.* java.io.* java.lang.* java.math.* java.net.* java.rmi.* java.security.* java.sql.* java.text.* java.util.* javax.crypto.* javax.imageio.* javax.naming.* javax.net.* javax.print.* javax.security.* javax.sound.* javax.swing.* javax.xml.* org.omg.* org.w3c.* org.xml.*

Descrio
Classes responsveis pela criao de aplicaes grficas usando AWT Abstract Window Toolkit, ou seja, um kit de ferramentas para construo de aplicativos baseados em janelas. Classes para criao de componentes reutilizveis, os famosos Java Beans. Classes responsveis pelo tratamento de controle de fluxo de dados de entrada e sada. Classes e mtodos responsveis usados na programao do diaa-dia da linguagem Java. Classe responsvel por mtodos matemticos usados na programao. Classes responsveis pelo acesso e trabalho atravs da rede. Classes responsveis por mtodos de execuo remota, os Java RMI. Classes e interfaces responsveis por mtodos de controlam o aspecto sobre segurana no sistema. Classes responsveis por mtodos de acesso a banco de dados usando a linguagem SQL. Classes para mtodos relacionados a formatao e customizao de formatos textos como data, hora, nmeros, streams etc. Classe de colees de framework, modelos de eventos, internacionalizao e mtodos de gerao de nmeros aleatrios, arrays e string tokeninzer. Classe responsvel por mtodos para tratamento de criptografia em Java. Classes e mtodos responsveis para manipulao de imagens, como entrada, sada, tratamento e exibio. Classes e interfaces para acesso ao naming service em Java (JNDI). Classes aplicaes de rede. Classes e mtodos para servios de impresso. Prov um framework (camada) para controle autenticao e autorizao. Classes e mtodos para trabalhar com multimdia. Classes e mtodos para desenvolvimento de aplicaes grficas mais modernas e elaboradas que AWT. Classes e mtodos para processamento em XML. Prov um mapeamento para API Corba am Java. Prov uma interface para DOM que componente API para Java XML. Contm classes e mtodos para processamento em XML.

Como podemos ver, esses so os pacotes bsicos da linguagem Java e acredite tem MUITA coisa para aprender com eles. Poderemos desenvolver qualquer aplicao com esses pacotes, a no ser que precisemos de um pacote muito especfico.

Comentrios em cdigo Java


Como j sabemos, muito importante que na medida em que escrevemos nossos cdigos faamos uso da insero de comentrios para que o cdigo fique mais legvel para ns mesmos e para outras pessoas que podero estar lendo nossos cdigos. Na linguagem Java podemos fazer isso de trs modos distintos. Os comentrios em Java tanto servem para tornar nossos programas mais elegantes quanto para gerar documentao e se quiser saber como fazer isso aconselho-o a estudar um pouco mais sobre o utilitrio javadoc o qual acompanha todos os kits Java. Faa uso deles e vai perceber o quanto eles so importantes. Se souber usar comentrios seus cdigos ficaro mais elegantes. Em Java muito fcil inserir comentrios e podemos coloc-los a qualquer momento e para isso veja os exemplos a seguir: Criar documentao em formato HTML com javadoc:
/** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */

Semelhante a linguagem C e C++:


/* The HelloWorldApp class */ // The HelloWorldApp class

Fundamentos de Programao Java Para Certificaes JCA/JCP

Pronto. Agora no tem mais desculpas para no mais documentar seus cdigos. Voc poder acentuar normalmente as palavras em seus comentrios, mas no em seus programas textos, pois a sada no ser como a esperada a no ser que voc use a classe de codificao de cdigos de pginas para que a sada de seus programas sejam acentuadas no console texto. Geralmente no fazemos isso, pois o console s vai servir para testarmos nosso aprendizado de fundamentos de programao, pois quando usamos o modo grfico a acentuao no apresenta nenhum problema.

Separadores de controle
A linguagem Java oferece um par de seqncias de caracteres de controle de programao unindo-se assim as regras de programao. So separadores simples cuja funo hierarquizar e controlar o fluxo de instrues em um arquivo Java. Esses separadores so: ( ) Parnteses: Tem como funo conter listas de parmetros em uma definio e chamada de mtodos. Tambm podemos utiliz-los para definir precedncia em expresses, controle de fluxo e para efetuar converses (casting) em tipos primitivos de dados; { } Chaves: Usamos para trabalhar e inicializar nossas matrizes/vetores/arrays. Tambm usamos para definio blocos de cdigos, classes e mtodos; [ ] Colchetes: Usamos para declarao de matrizes e tambm usamos quando estamos fazendo referncia aos valores e matrizes e para controle de ndice de argumentos passados via linha de comando; <> Maior e Menor: Usando no Java 5 para definio de tipos genricos, um novo conceito muito interessante e gil para armazenamentos de objetos quaisquer; ; Ponto e vrgula: Usamos para terminar uma linha de instruo em nossos arquivos Java; , Vrgula: Usamos para separao de identificadores em uma declarao de variveis. Tambm usamos dentro um lao for do mesmo modo que usamos na linguagem C/C++; . Ponto: Usamos para separar nomes de pacotes de terceiros e tambm de pacotes internos e usamos tambm para identificar mtodos externos de classes externas na atribuio de ao de objetos.

Convenes de nomenclatura na codificao


A conveno proposta pela SUN Microsystem para uma codificao correta de cdigos em linguagem Java simples de entender, basta que voc compreenda os 5 (cinco) principais pontos chave de uma codificao com relao aos seus nomes. Acompanhe: 1. Classes: Devem ser palavras completas e devem fazer uso de letras minsculas e maisculas sendo que toda classe comea com letra maiscula; 2. Interfaces: Devero seguir a mesma regra das classes; 3. Mtodos: Devero fazer uso de letras minsculas e maisculas sendo que sempre devero comear com letra minscula e se forem formados pela composio de mais de uma palavra a primeira em minscula e as seguintes tm suas iniciais em maisculas; 4. Variveis: As variveis de instncia e de classe seguem a mesma regra aplicada aos mtodos de classe. So aceitos caracteres normais e $ e _ (sublinhado), tambm vlido nmeros exceto no incio e espaos so invlidos; 5. Nomes das variveis constantes: Devero sempre ser declaradas em letras maisculas evitando o uso de constantes internas a linguagem e se forem constantes compostas usam-se o caractere _ para facilitar a depurao; 6. Para nomes de pacotes (colees de classes): Segue a padronizao semelhante a URL como veremos no captulo 10 do estudo sobre orientao a objetos.

Tipos de aplicaes com Java


Eu acredito que nessa altura voc j saiba que tipo de aplicativos poder desenvolver em Java. Sim, podemos desenvolver qualquer aplicativo como fazemos em Visual Basic e Borland Delphi, tudo questo de jeito, experincia, prtica e planejamento.
8

Captulo 1: Introduo Linguagem Java

Ns podemos desenvolver uma aplicao para o modo texto, para o modo grfico usando Java AWT ou Swing e podemos desenvolver aplicao para a Internet atravs do uso de Java Applets. O nico cuidado quando estamos desenvolvendo aplicao em Java Applets que os applets apresentam restries quanto ao local em que esto sendo executado. Se voc for desenvolver uma aplicao que faa uso de acesso a disco (escrita/leitura), por exemplo, os applets no so recomendados, pois remotamente eles no tm esse direito. O lgico seria fazer ento uma aplicao normal, mas que pudesse ser executada remotamente com propriedades de leitura e escrita local. Os tipos de aplicaes que podemos escrever em Java so: 1. Aplicaes em modo texto e aplicaes em modo grfico usando AWT e/ou Swing; 2. Aplicaes grficas que rodam dentro do navegador usando applets; 3. Aplicaes embarcadas (Embeded Applications), ou seja, so as aplicaes que voc encontra nos celulares, palms, alguns relgios e outros dispositivos portteis.

Como escrever um programa Java


Escrever programas ou projetar sistema em Java quer uma srie de procedimentos para que o resultado final siga uma padronizao profissional. Pois isso requer um monte de conhecimento desde as ferramentas de modelagem de dados, UML, IDE e tipo de programao que vai ser usada, ou seja, se vai ser uma aplicao de console, uma aplicao grfica usando AWT/Swing, se vai ser uma aplicao usando Java Applets, Servlets ou mesma se vai ser uma aplicao para celular usando J2ME. Siga esses procedimentos e vai ser muito simples pelo menos saber o que fazer, o que usar e como usar o que depender dos seus conhecimentos dessas ferramentas: 1. Aplicao local, remota ou para micro dispositivos? 2. Usa base dados? Se usa, qual a base? 3. Precisa de modelagem para a base de dados? 4. Precisa de modelagem para a aplicao? 5. Usa alguma IDE? Se usa, qual a IDE oficial? 6. necessario usar uma anlise de sistema? 7. ... Bom, se voc prestou ateno, somente nesses seis itens existe conhecimento que no acaba mais. A outra pergunta : O quanto disso a voc sabe ou domina? Pois , sorte sua, pois geralmente em desenvolvimento Java estamos participando de uma equipe onde cada um tem uma tarefa a ser trabalhada, portanto ache logo a sua posio nessa equipe.

Programao braal versus visual


Agora ns chegamos em um ponto que com certeza voc j est se perguntando h um bom tempo e est cheio de dvidas: Devo programar no brao eu devo usar uma aplicao para me ajudar? No brao pode demorar muito para o que eu quero fazer. Bom, em primeiro lugar eu vou lhe dar umas dicas muito preciosas para encontrar o melhor caminho. Primeiro aprenda o fundamento da linguagem Java e para isso nada melhor que um pequeno editor de cdigos Java. Para Windows existem vrios editores de uso comercial, shareware e freeware (gratuito), para o ambiente Linux tambm. No Linux temos o editor kate e o kwrite/kedit/gedit que j vem com a maioria das distribuies mais recentes e o mais interessante e como no poderia deixar de ver o bom e velho editor VI que faz a colorizao automtica do cdigo. lgico que voc no vai querer desenvolver todo um sistema complexo na mo. No entanto, quando comear a fazer seus programas pequenos no brao isso vai dar bastante base para quando usar uma IDE a sua preocupao vai ser como aprender a usar a IDE, pois o restante j sabe como fazer, entendeu? Sendo assim, nada melhor do que comear a fazer as coisas na mo mesmo.

Fundamentos de Programao Java Para Certificaes JCA/JCP

Figura 1.3: Sistema Linux, editor kate em ao.

Se souber projetar, at mesmo uma aplicao simples conseguir fazer usando um editor simples, acredite. Mas pode escolher qualquer um que achar melhor, e para um primeiro momento a digitao pura do cdigo melhor, pois assim voc vai ficando mais ntimo da linguagem e vai aprendendo como que funciona a filosofia da programao em linguagem Java. Ento, voc percebeu que o fundamento do Java vai ser mesmo no brao, isso bom porque voc vai realmente aprender Java sem os vcios de um ambiente integrado de desenvolvimento (IDE).

Figura 1.3.1: Editor EditPlus (ocupa apenas um disquete).

Depois que estiver bastante familiarizado como cdigo Java no brao mesmo, a ento eu lhe aconselho a usar uma IDE para seu desenvolvimento profissional e de suas aplicaes, mas isso tambm vai depender do que voc quer fazer e com que vai trabalhar.
10

Captulo 1: Introduo Linguagem Java

No sistema Windows tem um aplicativo bem simples e muito bonzinho de usar que Editplus (www.editplus.com). Ele to pequeno que cabe em um disquete, tambm faz colorizao automtica do cdigo Java, alm de outros cdigos. Eu o recomendo para que voc se acostume com o estilo de programao em Java e alm do mais ele um shareware que no expira, ele apenas fica informando que o tempo de uso j venceu, mas permite que mesmo assim voc o continue usando. Se voc for trabalhar com aplicaes corporativas e banco de dados Oracle eu lhe aconselho o JDeveloper 10g (www.oracle. com) que j faz toda a integrao entre parte servidora, parte cliente e parte interface. Mas eu j lhe digo, prepare seu bolso e sua mquina, pois embora a primeira vista ele seja fcil de entender vai precisar fazer um curso sobre como usar o JDeveloper com bancos Oracle, os cursos no so nada baratos, embora o aplicativo seja gratuito digamos assim. E prepare sua mquina, pois eu lhe aconselho no mnimo uns 512 MB s para comear a brincar, uns 768 MB j da para ter uma rotina normal de trabalho, mas se quiser abusar pode dispor de 1 GB de RAM em sua mquina que voc realmente vai desenvolver aplicaes corporativas. Voc poder usar o JBuilder da Borland (www.borland.com) para aplicaes no to robustas e pesadas pois a curva de aprendizado do JBuilder menor que a do JDeveloper e voc consegue fazer coisas realmente com qualidade usando o JBuilder nas verses mais recentes. Voc tambm poder usar o Eclipse (www.eclipse.org) que o que a maioria dos usurios Java acaba aprendendo. O projeto Eclipse est bem maduro e esse framework de desenvolvimento Java a cada dia fica mais completo e robusto. O NetBeans (www.netbeans.org) alm de ser de uso livre muito bom e tambm apresenta uma curva de aprendizado pequena em relao aos outros e ainda vem incluso nas ltimas verses do kit de desenvolvimento do Java distribudo pela SUN. Sua interface passou por uma remodelagem para que ficasse mais intuitiva e fcil para o usurio. muito interessante desenvolver usando o NetBeans, pois com ele podemos criar aplicaes completas. O NetBeans nas ultimas verses como 5/6 ou superior trs uma excelente idia chamada de Matisse que um free layout auto ajustvel, o desenho de formulrios d-se de modo livre como se fosse em Delphi, mas quando um componente chega prximo ao outro ou na borda do formulrio automaticamente aparecerem guias de ajustes precisos para posicionamento do componente, isso era o que estava h tempos faltando em uma IDE de alto nvel. No entanto eu lhe aconselho que antes que voc opte por alguma dessas IDEs que procure se identificar com a faixa de mercado que est atuando ou trabalhando e depois procure se familiarizar com cada uma delas, por exemplo, tire uma semana para cada uma e nessa semana explore o mximo que puder. No entanto, se tem tempo para estudar as vrias IDEs Java que tem por a, procure na Internet que voc vai achar excelentes ferramentas para desenvolver em Java, tudo uma questo de tempo.

Meu primeiro programa: Ol Mundo!


Acredito que voc percebeu que j apareceram alguns exemplos de programas no decorrer da leitura deste captulo, mas ainda no havamos feito os nossos programas, pois os outros eram apenas exemplos. Primeiramente para gravar os nossos exerccios do livro eu sugiro que se crie um diretrio com o nome de estudos. Em MS-DOS use o comando md c:\estudos e depois trabalhe dentro desse diretrio ou podemos criar esse diretrio/ pasta pelo Windows Explorer. Para fazer isso usando o sistema Linux, tambm simples, use o comando mkdir estudos, no se preocupe com o local, se estiver conectado como usurio root (administrador) esse diretrio ficar em /root/estudos e se estiver conectado como usurio normal, o diretrio ficar dentro do local dos usurios comuns que o /home ficando assim /home/adilson/ estudos, por exemplo, se for para o usurio adilson. OK! Chega de conversa vamos criar nosso primeiro programa em Java, ele vai ser bem simples seguiremos o exemplo do HelloWord.java porm vamos cham-lo de OlaMundo.java. Se estiver usando o Windows poder usar o bloco de notas e quando salvar, salve como o nome desse exemplo e no tipo do arquivo escolha *, assim ele ser gravado em formato texto puro. Mas se tiver usando o sistema Linux verifique se o utilitrio kate est instalado, pois ele colore automaticamente os cdigos em Java. Se no tiver, use o kedit, kwrite ou gedit que j vai ajudar bastante. Mas se voc for bem radical use o editor vi, apesar de ser em modo texto esse tambm faz a colorizao automaticamente dos cdigos.
11

Fundamentos de Programao Java Para Certificaes JCA/JCP

DICA: Defina bem a estrutura de seus programas em Java e evite usar arquivos muito grandes. No interessante usar um arquivo com mais de 2.000 (dois mil) linhas, se isso acontecer tente dividi-lo em classes para melhor gerenciamento.

Se estiver usando o Linux e for usar o editor vi use o usando o comando vi OlaMundo.java para criar seu arquivo e depois de digitado aperte a seqncia de teclas ESC:wq!. Assim voc salva e sai do editor.
/** /* // // Programa: Objetivo: Compilar: Executar: OlaMundo.java */ Mostrar a frase Ola Mundo! Na tela */ javac verbose OlaMundo.java java OlaMundo {

public class OlaMundo { public static void main(String[] args) System.out.println("Ola Mundo!"); } }// Fim do programa.

Tome cuidado para no errar na digitao e a frase Ola Mundo! entre aspas duplas e por enquanto sem acento, pois voc ainda no aprendeu a colocar acentuao em Java para o modo texto, pois sai uns caracteres estranhos. Para o modo grfico a acentuao normal. Lembre-se: As chaves no precisam necessariamente estar na mesma linha da declarao da classe e do mtodo principal, isso uma questo de gosto e de visualizao, no decorrer dos exemplos do livro voc ver dos dois jeitos, ou seja, abaixo da declarao e junto com as declaraes de classe e de mtodos.
/** Programa: OlaMundo2.java */ public class OlaMundo2 { public static void main(String[] args) { System.out.println("Ola Mundo!\n--------------------------------"); System.out.println("Aprendendo programar em JAVA...."); } }// Fim do programa.

Figura 1.4: Jedit (Windows), roda tambm no Linux.

H outro editor interessante que o Jedit (www.jedit.org), voc pode baixar a verso para MS Windows e rodar tambm no sistema Linux, pois ele tem a extenso .jar. Para executar no Linux simples, use o comando java jar /...caminho.../ jedit.jar. Onde caminho o diretrio que voc o instalou l no Windows. Eu gostei dele simplesmente por esse motivo.
12

Captulo 1: Introduo Linguagem Java

Como compilar e executar um programa Java


A primeira coisa que precisamos saber que o nome do arquivo a ser salvo DEVE ser o mesmo nome da classe principal se essa for uma classe pblica. a classe principal que informa o nome da aplicao, se sua classe principal tem um nome e seu arquivo salvo tem outro, mesmo que todo o seu programa esteja correto no vai conseguir compilar. Acompanhe:
# javac OiMundo.java OiMundo.java:3: class OlaMundo is public, should be declared in a file named OlaMundo.java public class OlaMundo ^ 1 error

No exemplo anterior o nome do arquivo OiMundo.java mas ele possui uma classe principal que se chama OlaMundo, ento, por conveno devemos gravar o arquivo como OlaMundo.java seno teremos erro de compilao. Bom, aps digitar um programa e verificar que no tem nenhum erro de digitao, sei que est ansioso para ver esse negcio funcionado. A compilao de um programa Java segue a seguinte sintaxe:
# javac opes arquivo.java

...e no momento devemos estar dentro do diretrio onde iremos compilar nosso programa. possvel estar fora do diretrio de compilao ou ento informar para onde que vo parar os arquivos .class que so os arquivos fonte .java depois de compilados. Calma l. Se olharmos no nosso diretrio poderemos verificar que o nosso arquivo OlaMundo. java est prontinho esperando para ser compilado. Para compilar o arquivo use o comando javac OlaMundo.java, e se tudo ocorreu bem, agora existe mais um arquivo chamado OlaMundo.class, esse o arquivo que foi compilado e agora vai ser interpretado (executado) pela JVM. Para executar agora o seu programa apenas use o comando java OlaMundo (sem o sufixo .class), automaticamente ser executado o arquivo .class que o arquivo compilado. Viu s que coisa mais simples do mundo. Se desejar ver mais detalhes sobre como a compilao est funcionando use o comando javac verbose OlaMundo.java, assim veremos o compilador passando por todas as classes internas do Java necessrias para o funcionamento do seu programa.
C:\estudos>javac -verbose OlaMundo.java [parsing started OlaMundo.java] [parsing completed 171ms] [search path for source files: [., C:\Arquivos de programas\QuickTime\QTSystem\Q TJava.zip]] [search path for class files: [C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib \rt.jar, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib\jsse.jar, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib\jce.jar, C:\Arquivos de programas\Java\jd k1.5.0_10\jre\lib\charsets.jar,... ... [wrote OlaMundo.class] [total 2781ms]

Voc pode compilar qualquer programa fonte .java mas somente poder executar o programa que possuir o mtodo main() e que haver apenas um por programa fonte, pois o restante sero usados como instncias e bibliotecas. Se tentar executar o programa sem o mtodo main() ser lanada uma exceo em tempo de run-time:
# java OlaMundoSemMain Exception in thread "main" java.lang.NoSuchMethodError: main

O compilador Java oferece algumas outras opes para voc compilar seus programas. Essas opes esto explicadas na tabela seguinte.

13

Fundamentos de Programao Java Para Certificaes JCA/JCP

Tabela 1.2: Quadro de opes (algumas) de compilao. Opo


-classpath caminho -d diretrio -g -nowarn -O -verbose

Descrio
Determina o path (caminho) no qual o compilador vai procurar por classes. Determina o diretrio no qual o compilador armazenar os arquivos .class de sada de compilao. Informa ao compilador para criar o arquivo de informao para debug. Informa ao compilador para no mostrar quando da compilao de um arquivo. Informa ao compilador para aperfeioar a compilao de um programa. Muito til, pois informa ao compilador para exibir as informaes sobre os procedimentos de compilao.

Mas se por algum motivo precisarmos compilar para ser usado com a JVM 1.4 estando o sistema com a JVM 1.5, usamos a seguinte linha de comando (O diretrio das bibliotecas para JVM 1.4 deve estar no sistema).
# javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip -extdirs "" ArqAntigo.java

Acompanhe aqui alguns exemplos. Informando ao compilador para incluir a classe classes.zip no arquivo Teste.java. A importncia disso que podemos fazer reaproveitamento de cdigos, por exemplo, vamos supor que voc criou uma classe para verificar CPF, RG, CNPJ, etc.
# javac -classpath c:\java\lib\classes.zip;c:\classes Teste.java

Informando ao compilador para incluir os arquivos compilados (de sada) .class no diretrio denominado compilados, desse modo todos os seus executveis interpretados estaro em um nico lugar.
# javac -d c:\classes\compilados applet.java

Usando essa idia poderamos ter a seguinte situao, um diretrio chamado sources para os fontes e outro chamado classes para os ByteCodes. Veja o exemplo para Windows e Linux:
C:\>estudos\classes\ C:\>estudos\sources\ /opt/estudos/classes/ /opt/estudos/sources/

Para saber a verso instalada do JSDK em seu computador:


# java -version java version "1.5.0_10" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03) Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode, sharing)

Se voc fez um update para a mais recente verso do Java ter esse resultado:
C:\Documents and Settins\adilson>java -version java version "1.7.0-ea" Java(TM) SE Runtime Environment (build 1.7.0-ea-b23) Java HotSpot(TM) Client VM (build 12.0-b01, mixed mode, sharing)

Geralmente, um aplicativo stand-alone (chamado via linha de comando ou atalho na rea de trabalho) composto por vrias classes. Como cada classe compilada para um arquivo .class distinto, necessrio saber qual classe possui o mtodo esttico main(String args[ ]) e passar o nome dessa classe como parmetro para o programa java, sem a extenso .class. Veja os exemplos de como executar uma aplicao em java.
java NomeDaClasse java pacote.subpacote.NomeDaClasse java -classpath c:\classes;c:\bin;. pacote.Classe java -cp c:\classes;c:\bin;. pacote.Classe java -cp %CLASSPATH%;c:\mais pacote.Classe java -cp biblioteca.jar pacote.Classe java -jar executavel.jar

Para rodar aplicaes grficas, use javaw (Windows):


javaw -jar executavel.jar javaw -cp aplicacao.jar;gui.jar

14

Captulo 1: Introduo Linguagem Java

DICA: O comando java quando executado de dentro de um terminal no permite a digitao de comandos neste terminal, porm o comando javaw carrega o programa java e permite que comandos sejam usados no terminal.

Muitas vezes, as classes Java podem ser agrupadas em pacotes (diretrios) que podem estar ou no compactadas. Se o programa Java estiver dentro de um pacote no compactado, deve-se incluir o nome do pacote no parmetro passado para o comando java, estando fora do pacote (o diretrio atual deve ser o diretrio que contm o pacote). Por exemplo, o comando a seguir executa o aplicativo TesteDeClasse, contido no diretrio minhaClasse.
# java minhaClasse.TesteDeClasse

Para executar um aplicativo Java stand-alone, necessrio ter o JRE Java Runtime Environment instalado na mquina, que pode ser baixado da Internet na prpria pgina da SUN. possvel compilar o aplicativo em Java de modo normal para modo nativo em Windows, gerando assim um executvel .exe, mas mesmo que o aplicativo seja compilado em modo nativo necessrio ter a JRE.
NOTA: O propsito de se criar uma aplicao nativa em Windows ou Linux a execuo mais rpida, mas isso comprometer a portabilidade da aplicao e uma vez nativo, a aplicao ser nativa no sistema operacional onde foi compilada.

Figura 1.5: Sem JRE aplicaes em Java (.exe e .jar) no funcionam.

Se o programa Java estiver dentro de um pacote compactado (.zip ou .jar), deve-se usar um comando como o que est a seguir, passando o parmetro jar tanto para arquivos .jar quanto para arquivos .zip:
# java -jar TesteDeClasse.jar ou # java -jar TesteDeClasse.zip

H uma outra maneira de compilar seus programas em Java. Quando ns usamos rotinas de controles de erros como try/exceptions ou assertions podemos ter um maior controle sobre futuros erros em nossos programas. Quando fazemos uso de assertions o que geralmente usado quando j temos uma boa base sobre controle de erros possvel primeiramente verificar se possveis erros podem ocorrer. Atravs do pacote java.lang.AssertionError que podemos atravs da palavra reservada assert inserir esse tipo de controle em nosso cdigo. O uso de assertions tambm conhecido como uso de assertivas, informa que mesmo que um cdigo tenha sido compilado com esse tipo de uso, quando da hora da compilao voc dever explicitamente forar a sua utilizao, pois por padro as assertivas no so ativadas.
As assertivas no so compiladas nem executadas por padro e possvel instruir a JVM desativar assertivas para uma classe e ativar para um dado pacote em uma mesma linha de comando. Mas, no se preocupe com isso agora, pois primeiramente precisamos aprender os fundamentos da programao e l na Parte 2 do nosso estudo veremos como tudo isso funciona. Para habilitar ou desabilitar o uso das assertivas em seus programas veja os comandos a seguir:

1. java -ea ou -enableassertions: Habilita o uso de assertion; 2. java -da ou -disableassertions: Desabilita o uso de assertion; 3. java -ea:br.com.unipar: Habilita para o pacote br.com.unipar; 4. java -ea -das: Habilita em mbito geral e desabilita nas classes do sistema; 5. java -esa ou -enablesystemassertions: Habilita em todas as classes do sistema;
15

Fundamentos de Programao Java Para Certificaes JCA/JCP

Uma idia legal que acontece com a linguagem Java e a qual eu achei muito interessante a compilao on-line, ou seja, voc manda seu cdigo fonte para uma pgina da Internet e l um sistema se encarrega de compilar o seu cdigo. Isso interessante se voc no tem espao em sua mquina para instalar um J2SE ou J2EE completo, ou ento quer fazer isso para seus estudos, pois voc poderia estar em um cyber caf ou lan house e nessas mquinas no ter nenhum ambiente Java. Hoje j temos uma boa medida de pginas com esse propsito, algumas so livres (uso gratuito), porm outras cobram um taxa para fornecimento do servio, basta efetuar uma pesquisa no google e encontrar vrias pginas com esse propsito. Com certeza quando da digitao dos nossos primeiros programas em Java, sempre erramos, porm, at pegarmos o jeito percebemos que o compilador Java mostra erros no momento da compilao, mas em uma outra hora o programa parece estar certo e mesmo assim aparecem erros. Como identificar esses erros? Bom, ns temos praticamente dois tipos de erros em Java: 1. Compiler Error: Esse um dos erros mais comuns, ou seja, no momento da compilao o compilador percebeu um erro no cdigo e no pode prosseguir com a compilao e retorna um erro. Exemplo: Mtodo no esttico querendo acessar um atributo com visibilidade ou acesso restrito a esse tipo de mtodo; 2. Run-Time Error: Esse tambm um erro comum. Aqui o compilador passa batido, mas quando da execuo do programa interrompido abruptamente e para. Exemplo: Uma diviso por 0 (zero). Bom, isso o bsico que deveremos saber por enquanto, claro que vamos nos aprofundar nesses conhecimentos no decorrer da leitura e exerccios do captulo. Agora j pode falar que voc est esperto na compilao de programas em Java, certo? Com um pouco mais de prtica poder melhorar ainda mais, por exemplo, mudar a cara de uma aplicao grfica passando argumentos via linha de comando. Assim uma aplicao grfica poder ter a cara do Windows, do Motif, do Java padro, do Mac OS etc. Quer saber como? Ainda no hora, mas d uma olhada no programa LookAndFeel.java que voc vai entender do que eu estou lhe falando, observe:
// Isso semelhante aos skins de alguns programas. import javax.swing.*; // Importa pacote grfico. import java.awt.*; public class LookAndFeel { public static void main (String[] args) { // Bloco para escolha do Look And Feel. Try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e){} // Modelo para CDE/Motif. UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); // Modelo para MS Windows. UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); // Modelo para Mac OS X. UIManager.setLookAndFeel("com.sun.java.swing.plaf.mac.MacLookAndFeel"); //...e para o sistema operacional que estiver rodando a aplicao... UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); */ JFrame janela = new JFrame (":: Usando skins em Java"); // Janela aplicao. janela.setSize(500,70); // A janela pode ser fechada pelo boto X. janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Cria um objeto container associado ao frame. Container c = janela.getContentPane(); c.setLayout(new FlowLayout()); // Adicionar botes no objeto container.

16

Captulo 1: Introduo Linguagem Java

c.add(new c.add(new c.add(new c.add(new c.add(new

JButton("Cadastrar")); Jbutton("Alterar")); JButton("Pesquisar")); Jbutton("Apagar")); Jbutton("Imprimir"));

// Mostrar o Frame completo na tela. janela.setVisible(true); } }// Fim do programa.

Figura 1.6: Resultado do programa com uso de skin padro.

Para que voc possa mudar o skin (pele) de sua aplicao s substituir no bloco try por alguma linha do comentrio. Faa isso e acompanhe o resultado. A seguinte figura tem com o Look And Feel do Mac:

Figura 1.6.1: Uma aplicao com cara de Mac OS X.

Para ter uma idia da importncia desses recursos, imagine que est usando o ambiente Windows e pode desenvolver uma aplicao com a cara do Gnome do sistema Linux conforme a figura seguinte.

Figura 1.7: Uma aplicao com a cara do gerenciador de janelas Gnome.

O Borland Delphi tem uns componentes de terceiros que tambm fazem isso e um dos mais famosos o VCLSkin e para Java existem vrios, um mais lindo que o outro. Mas esses skins podem ser simples ou no de adicionarmos em nossos cdigos, cada um de um jeito. O ponto de partida para inmeros links www.javootoo.com l voc encontra at uma pr visualizao de cada um deles. Escolha o melhor.

17

Fundamentos de Programao Java Para Certificaes JCA/JCP

Como gerar a documentao


Algo muito importante que precisamos saber como gerar a documentao padronizada dos nossos futuros sistemas. Agora no momento em que nossos programas esto pequenos parece que no h sentido. Mas imagine que voc tenha que dar manuteno em um sistema grande. Se tivesse uma documentao sobre o sistema seria muito mais importante, pois atravs dela mais fcil estudar o sistema em si e saber o que ele faz, ou seja, o que cada classe, mtodo faz no sistema. Para gerar a documentao dos nossos sistemas utilizamos o javadoc que uma ferramenta para gerar documentao da API a partir dos comentrios no cdigo. Esses comentrios so escritos usando marcaes simples (tags) definidas na sintaxe Java. Entre elas, as mais utilizadas so: 1. @author: Define o autor da classe; 2. @version: Define a verso da classe; 3. @param: Define um parmetro de um mtodo; 4. @return: Define o retorno do mtodo; 5. @throws (ou @exception): Indica as excees tratadas ao chamar o mtodo. A documentao produzida no formato HTML e muito embora ensinar como documentar um projeto no seja o escopo deste livro vamos fazer um pequeno exerccio e gerar a documentao para ele. A documentao gerada idntica a API do Java, assim, voc se acostuma com as duas coisas. O primeiro passo lembrar que a linguagem Java tem um tipo especial de comentrio que semelhante ao da Linguagem C/ C++, tudo que estiver dentro desses comentrios ser usado para gerar sua documentao ento se quisermos que na documentao aparea a informao do que a classe faz ou a importncia de um mtodo e o que ele faz dentro do sistema, nos colocamos esses tipos de comentrios acima das classes e dos mtodos que queremos gerar esse tipo de informao, veja:
/** Isso um comentrio para o Javadoc em uma linha. */ /** Isso um comentrio para o Javadoc em duas linhas. */ /** Isso um comentrio para o <b>Javadoc</b> em duas linhas e com tags em HTML. */

Interessante saber que podemos tambm usar as tags da linguagem HTML para melhorar o visual da documentao, mas cuidado para no fugir do padro. H tambm tags especificas para o utilitrio javadoc que usado para gerar a documentao. Bom, se voc entendeu, analisaremos o programa AloMundoDoc.java que bem simples e servir para nos dar uma base de como gerar a documentao.
/** <b>AloMundo - Documentao</b> * @see java.lang.Object * @author Adilson Bonan */ // Cria classe pblica para o programa. public class AloMundoDoc { /** Texto que vai ser exibido. */ static String msg = "Criao de documentao para programa em Java."; /** Executa implicitamente o mtodo construtor. */ AloMundoDoc(){} /** Cria um mtodo pblico para mostrar a mensagem. <br> Esse mtodo recebe uma varivel de classe como parmetro. @param msg uma String a ser passada. */ public static void Alo(String msg) { System.out.println(msg); } /** Mtodo principal do programa.*/ public static void main(String[] args){ Alo(msg); } } // Fim do programa.

18

Captulo 1: Introduo Linguagem Java

Agora para gerar a documentao correta usamos um utilitrio chamado javadoc com o parmetro -verbose para verificarmos por onde ela passou nos pacotes e -author para que conste na documentao o nome do autor do programa assim:
C:\estudos\oo\cap1>javadoc -verbose -author AloMundoDoc.java Loading source file AloMundoDoc.java... [parsing started AloMundoDoc.java] [parsing completed 120ms] Constructing Javadoc information... [search path for source files: .,C:\Arquivos de programas\Java\jdk1.6.0_10] [search path for class files: C:\Arquivos de programas\Java\jdk1.6.0_10\jre\lib\ resources.jar,C:\Arquivos de programas\Java\jdk1.6.0_10\jre\lib\rt.jar,C:\Arquiv os de programas\Java\jdk1.6.0_10\jre\lib\sunrsasign.jar,C:\Arquivos de programas ... Standard Doclet version 1.6.0_10-rc Building tree for all the packages and classes... Generating AloMundoDoc.html... [loading java\io\Serializable.class(java\io:Serializable.class)] Generating package-frame.html... Generating package-summary.html... Generating package-tree.html... Generating constant-values.html... Building index for all the packages and classes... Generating overview-tree.html... Generating index-all.html... Generating deprecated-list.html... Building index for all classes... Generating allclasses-frame.html... Generating allclasses-noframe.html... Generating index.html... Generating help-doc.html... Generating stylesheet.css... [done in 3054 ms]

Percebemos aqui que foi criado uma srie de arquivos HTML e o que nos interessa o index.html que pode ser aberto em qualquer navegador.

Figura 1.8: A documentao do programa AloMundoDoc.java.

Se for necessrio criar a documentao de uma classe qualquer em outro diretrio usamos javadoc MinhaClasse.java -d diretrio-destino. Quando a opo -d no usada, os arquivos de documentao so criados no diretrio corrente. Para criar a documentao para vrias classes basta usar o coringa assim javadoc *.java. Para produzir uma documentao que contm caracteres acentuados devemos usar a opo -charset, assim javadoc -charset iso-8859-1 MinhaClasse.java. Por padro, o utilitrio javadoc coloca apenas a documentao associada aos mtodos pblicos. Para incluir os mtodos privados devemos usar a opo -private.
19

Fundamentos de Programao Java Para Certificaes JCA/JCP

Usando passagem de parmetros


Olha s que interessante apesar de simples essa idia. Vamos supor que ns quisssemos passar algo como valores, caracteres ou strings via linha de comando assim como nos comandos do DOS ou do Shell no sistema Linux. O que o programa faz ler a linha de comando, verificar se aquela opo existe e caso positivo executar tal operao. Caso negativo emitir uma mensagem de erro/aviso ou nenhuma mensagem. Para entender como funciona a passagem de parmetros veja parte do corpo da programao a seguir. A leitura da passagem de parmetros d-se em (String[ ] args) e se voc conseguir entender isso, o que muito fcil, ento voc conseguir manipular os parmetros passados.
// Java 4 ou inferior. public static void main (String[] args){ ... } // Java 5 ou superior. public static void main (String... args){ ... }

DICA: O primeiro argumento args[0], o segundo args[1] e o ensimo argumento args[n], ou seja, a linha de comando um array de strings e se for usar nmeros deve-se usar mtodos apropriados de converso, lembre-se disso.

A checagem do nmero de parmetros fornecidos constitui boa programao e verificar esse valor no incio da execuo e emitir mensagem de erro caso incorreto uma das preocupaes do seu programa. Para passarmos parmetros para nosso programa simples, apenas seguimos a seguinte idia:
# java programa parametro1 parametro2 ... parametroN

Observaes importantes sobre parmetros: Como passar e ler um parmetro, como passar e ler N parmetros; Como saber o total de parmetros, como retornar tamanhos de parmetros; Como tratar a passagem de parmetros; Como criar blocos de excees para parmetros. Se dominarmos essa parte, j teremos feito muita coisa, pois isso vai ajudar muito quando estivermos aprendendo algoritmos onde precisaremos passar informaes via linha de comando. Agora vejamos o programa Args0.java que muito simples, pois ele no faz controle de quantos parmetros foram passados e no usa controle de excees. No se esquea que para compilar use o comando javac Args0.java e para executar use java Args0.
public class Args0 { public static void main(String[] args) { System.out.println("Voce digitou: "+args[0]); } }// Fim do programa.

Observe a sada desse programa se no passarmos nenhum parmetro. Ser gerado um erro ArrayIndexOutOfBoundsException e isso por enquanto quer dizer que devemos tratar essa passagem de parmetro ou com uma declarao if ou com blocos try/catch. Assim poderemos checar previamente se o usurio forneceu ou no um parmetro.
# java Args0 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Args0.main(Args0.java:8)

Agora veja a sada com dois parmetros fornecidos, repare que apenas o primeiro foi impresso, pois o args[0] imprime somente o primeiro. Viu como simples.
# java Args0 Meu Argumento Voce digitou: Meu

20

Você também pode gostar