Академический Документы
Профессиональный Документы
Культура Документы
Londrina
2011
2:
1. ndice
1.
ndice ........................................................................................................... 1
2. Introduo ...................................................................................................... 3
2.1. Nomenclaturas ................................................................................................... 4
2.2. Verses do Java................................................................................................. 4
2.3. O Que Devo Baixar ............................................................................................ 5
3:
2. Introduo
Ol pessoal, nesta apostila vou passar para vocs alguns conceitos da
linguagem de programao Java, e alguns comandos e Classes que
utilizaremos no decorrer deste curso.
Muitos associam Java, como a WEB ou com jogos para Celulares, ou
ainda como uma maneira de deixar as paginas da WEB mais bonitas e com
efeitos especiais. Na verdade, isso s uma pequena parte do que a
linguagem Java pode nos proporcionar. Podemos citar diversas qualidades da
linguagem Java, mais selecionei apenas algumas delas:
Orientado a Objetos;
Reaproveitamento de cdigos;
No tem Ponteiros;
Gerenciamento de Memria;
Grande quantidade de comunidades, bibliotecas, frameworks e
APIs.
Baixo custo de tecnologia.
Multi-Plataforma.
4:
2.1. Nomenclaturas
Antes de darmos continuidade preciso esclarecer alguns detalhes e
nomenclaturas sobre a linguagem Java que utilizaremos no decorrer desta
apostila.
JVM A maquina virtual do Java (Java Virtual Machine), o
responsvel por executar o seu bytecode em um determinado sistema
operacional/hardware.
JRE Ambiente de execuo do Java (Java Runtime Environment).
Este pacote formado pela JVM e as bibliotecas, ou seja, tudo o que
voc precisa para executar uma aplicao Java.
JDK Kit de desenvolvimento de Java (Java Development Kit). Este kit
j vem com a JVM, JRE, Bibliotecas, APIs e compilador do Java.
JSE (Java Standard Edition) Contm as APIs padro do Java.
(Desktop e servidores)
JEE (Java Enterprise Edition) Contm as APIs mais avanadas para
a programao Java. (Web, segurana, etc).
JME (Java Micro Edition) Contm as APIs referentes a dispositivos
mveis (celulares, pdas, smartfones, etc)
Biblioteca Conjunto de classes com um objetivo em comum.
API Conjunto de bibliotecas com um objetivo em comum.
Framework Estrutura de programao que ajuda o programador a
desenvolver uma determinada aplicao.
IDE (Integrated Development Environment) Ambiente integrado de
desenvolvimento que auxilia o programador (Netbeans, Eclipse,
JDeveloper, JBuilder, etc).
Bytecode Cdigo em java compilado pelo compilador, que ser
interpretado pela JVM
Applets So programas executados por um navegador de paginas da
internet (Browser).
5:
Depois vieram o Java 1.3 e 1.4, e o Java 1.5 passou a se chamar Java
5, tanto por uma questo de marketing e porque mudanas significativas na
linguagem foram includas. nesse momento que o 2 do nome Java
desaparece. Agora se acostuma a colocar o nome referente ao numero que
aparece aps o Java 1.X, desta forma o Java 6 a verso 1.6 do Java.
Atualmente o Java se encontra na verso 1.8u11, ou seja, houve at o
momento 11 atualizaes na verso 1.8.
A verso 1.6 e 1.7 do Java ainda continua tendo atualizaes. At o
presente momento est na verso 1.6u45 e 1.7u62
3. Um Breve Histrico
Segundo a Sun Microsystem, os estudos e pesquisas sobre a linguagem
Java tiveram inicio em 1991, por um pequeno grupo de engenheiros da prpria
Sun denominado Green Project, que pretendia criar uma nova gerao de
computadores portteis inteligentes, capazes de se comunicar de muitas
formas, ampliando suas potencialidades de uso. Decidiram tambm criar uma
nova plataforma para o desenvolvimento destes equipamentos, de forma que
seu software pudesse ser portado para os mais diferentes tipos de
equipamentos. Para tal desenvolvimento, inicialmente escolheram a linguagem
C++, aproveitando suas caractersticas, e a experincia dos integrantes do
grupo no desenvolvimento desta linguagem. Porm, nem mesmo o C++
permitia realizar com facilidade tudo aquilo que o grupo desejava. Diante
destas dificuldades tecnolgicas e a falta de uma linguagem que pudesse
6:
suprir as necessidades do projeto, o Coordenador James Gosling, decidiu
ento pela criao de uma nova linguagem de programao que pudesse
conter tudo aquilo que era considerado importante e que ainda assim fosse
simples, porttil e fcil de programar. Surgiu assim a linguagem interpretada
chamada Oak (carvalho em ingls) que ganhou este nome devido ao fato de
existir uma arvore destas em frente ao escritrio de Gosling.
Aps alguns anos de trabalho no desenvolvimento e aperfeioamento
desta linguagem, surge a primeira grande oportunidade de aplicao. O
desenvolvimento de uma tecnologia para TV a cabo interativa, porm como se
tratava de uma licitao pblica a Sun Microsystems acabou sendo vencida
pela SGI (Silicon Graphics Inc.) fazendo com que a Oak ficasse sem uso
definido at 1994.
Por problemas de copyright, o Oak, teve que ser rebatizado, recebendo
desta forma o nome de Java, e aps 1994, quando estimulados pelo grande
crescimento da Internet, Jonathan Payne e Patrick Naughton desenvolveram o
programa navegador WebRunner (apresentado formalmente pela Sun
Microsystems como HotJava), capaz de efetuar o download e a execuo de
cdigo Java via Internet.
No dia 23 de maio de 1995, a Sun Microsystems apresenta formalmente
o Java para o mundo, poucos meses depois a Netscape Corp. lana uma nova
verso de seu navegador tambm capaz de efetuar o download e a execuo
de pequenas aplicaes Java ento chamadas de applets.
Em uma iniciativa tambm indita a Sun Microsystems decide
disponibilizar o Java gratuitamente para a comunidade de desenvolvimento de
software, embora detenha todos os direitos relativos linguagem e as
ferramentas de sua autoria. Surge assim o Java Developers Kit 1.0 (JDK 1.0).
As plataformas inicialmente atendidas foram: Sun Solaris e Microsoft Windows
95/NT. Progressivamente foram disponibilizados kits para outras plataformas
tais como Linux, Apple Macintosh, Novel, AIX, HPUX, e outros. (JANDL, 2002).
7:
3.1. Princpios Bsicos e Principais Caractersticas da Linguagem
3.1.1 Portabilidade
A independncia de plataforma uma das principais vantagens do Java
em relaes a outras linguagens de programao, principalmente quando se
deseja que um programa seja executado em vrios tipos de plataformas
diferentes.
Quando se escreve um programa em uma linguagem como o C, C++,
Pascal, Visual Basic, C#, etc, os compiladores ou interpretadores destas
linguagens geram um programa executvel de baixo nvel, popularmente
conhecido como linguagem de mquina. Entretanto, este programa executvel
que foi gerado em um sistema operacional especfico, e em uma plataforma de
processador especfico, s poder ser executado em computadores com as
mesmas caractersticas, sendo assim, se um programa for escrito em C++, e
gerado o seu executvel em um computador cujo o sistema operacional seja
Linux com arquitetura de Processador Intel ou compatvel, este programa s
poder ser executado em outro computador com sistema operacional Linux e
com a mesma arquitetura de processador. Caso haja a necessidade deste
programa ser executado em outro tipo de plataforma, necessrio obter um
compilador em C++ para a plataforma desejada e re-compilar o programa, e
em alguns casos realizar algumas alteraes no cdigo do programa fonte.
8:
A situao diferente quando se escreve um cdigo de programao
em Java. Programadores Java, em todo o mundo costuma dizer a seguinte
frase: Escreva uma vez, execute em qualquer lugar. (OAKS, 1999).
O ambiente de desenvolvimento do Java composto por duas partes,
um compilador e um interpretador. O compilador compila o cdigo de
programao em um programa intermedirio chamado de Java bytecode e
armazenado em um arquivo com extenso .class destinado a uma nica
plataforma, a Maquina Virtual Java que seria o interpretador do bytecode. A
JVM nada mais do que um computador dentro de outro (computador virtual
interno), possibilitado que um bytecode seja executado em qualquer
computador, bastando apenas que este computador tenha uma JVM instalada
(JANDL, 2002). Nos dias de hoje, j existe JVM para vrios tipos de
plataformas, inclusive celulares, pagers, televisores, etc.
das
diferenas
bsica
entre
programao
estruturada
9:
de execuo o que se denomina Thread, tornando um importante recurso de
programao para aplicativos mais sofisticados. (JANDL, 2002)
3.1.5. Segurana
10:
Nos dias atuais, pelo fato do Java estar fortemente associado Internet,
um dos aspectos mais divulgados da linguagem sua segurana. Segundo
Schneier (200, p.170), a linguagem Java a nica linguagem de programao
projetada especialmente para o cdigo mvel, e com a segurana em mente.
Por isso oferece vrias camadas de controle de segurana que protegem
contra cdigos maliciosos, permitindo que os usurios rodem tranqilamente
programas de origem desconhecida, como os applets. (KNUDSEN, 1998).
Outra camada de proteo para segurana comumente chamada de
modelo de caixa de areia (sandbox), onde, por exemplo, um aplicativo applet
Java de origem desconhecida pode se executado, porm mantido isolado
dentro desta caixa de areia, podendo ser executado com segurana evitando
danos ao ambiente que esta sendo executado.
Segundo Schneier (2001, p.170) a caixa de areia protegida por trs
mecanismos:
Verificador de cdigo de bytes: sempre que um browser faz um
download de um applet Java, o verificador de cdigo analisa o cdigo primeiro.
O verificador garante que o cdigo de bytes esteja formatado corretamente e
no possua qualquer um dos vrios problemas comuns.
Carregador de classe: esse componente determina como e quando um
applet pode ser includo no ambiente Java, certificando-se de que o applet no
substituir algo importante que j exista.
Gerenciador de segurana: como um monitor de referncia. Ele
consultado sempre que o applet Java tenta algo questionvel como abrir ou
gravar um arquivo ou abrir uma conexo na rede, por exemplo. Dependendo de
como o applet foi instalado, essas permisses sero aceitas ou negadas.
Para Oaks (1999, p. 02), o termo segurana tem suas restries no
uso, entretanto as diferentes expectativas podem encaminhar para os
seguintes itens quando se trata de programas escritos na linguagem Java:
Seguros contra programas maliciosos: Programas no devem ter
permisso para danificar o ambiente computacional de um usurio, incluindo
11:
cavalo de tria (trojans), bem com programas nocivos que podem duplicar-se
(vrus de computador).
No-intrusos: Deve-se evitar que os programas descubram informaes
privadas do computador host ou na rede de um computador host.
Autenticados: A identidade das partes envolvidas no programa deve ser
verificada.
Criptografados: Os dados que o programa envia e recebe devem ser
criptografados.
Examinados: As operaes potencialmente sensveis devem sempre ser
conectadas.
Bem-definidos: Uma especificao de segurana bem-definida deve ser
seguida.
Verificados: As regras de operao devem ser definidas e verificadas.
Bem-comportados: Deve-se evitar que os programas consumam muitos
recursos do sistema.
12:
4. Viso Geral da Linguagem de Programao Java
4.1. Criando uma classe em Java.
Para se criar uma classe publica em Java o nome desta classe deve ter
o mesmo nome do arquivo. Conforme o exemplo abaixo, a classe Pessoa
obrigatoriamente tem que estar no arquivo Pessoa.java.
public class Pessoa{
// atributos
// mtodos
}
Quando compilamos a classe Pessoa, se no ocorrer nenhum erro de
compilao, o compilador vai gerar um arquivo Pessoa.class. Este arquivo
Pessoa.class o nosso bytecode, e ser interpretado pela JVM(Java Virtual
Machine) Maquina virtual do Java. Outros compiladores de linguagem como o
C,
C++
poderia
gerar
um
executvel
Passoa.exe,
porm
com
um
13:
Nmeros Inteiros: Utilizado para armazenar um espao na memria destinada
a receber nmeros inteiros.
Tipo
Valor Mnimo
Valor Mximo
Bits
byte
-128
+127
short
-32.768
+32.767
16
int
-2.147.483.648
+2.147.483.647
32
long
-9.223.372.036.854.775.808
+9.223.372.036.854.775.807
64.
Tipo
Dgitos de Preciso
Bits
float
32
64
Tipo
Bits
char
16
Tipo
Valores
Bits
14:
boolean
true ou false
abstract
throw
return
native
if
else
catch
void
synchronized
protected
goto
var
public
long
for
double
case
try
switch
private
int
generic
Rest
15:
Contedo: o valor que esta varivel vai receber, pode ser atribudo no
instante da declarao da varivel, ou a qualquer momento aps a
declarao;
Abaixo est uma tabela da declarao de varivel dos tipos primitivos com e
sem atribuio dos valores no momento da declarao.
16:
5.0. Classes do pacote Java.
Muito bem, agora que j sabe os tipos primitivos da linguagem Java,
est na hora de entrar em detalhes em algumas classes que utilizaremos com
muita freqncia durante o desenvolvimento de um sistema. claro que no
vai ter como passar todas as classes e todos os mtodos destas classes, pois
no este o intuito deste contedo web, sugiro para que quiser se aprofundar
mais no assunto ler o livro do DEITEL Java como programar, que eu passei
na bibliografia bsica no incio do semestre.
Antes de apresentar a primeira classe a ser mais detalhada, gostaria de relembrar a linha de comando de sada do Java, ou seja, que ir imprimir no
console. A seguir voc ver algumas maneiras de utilizao desta linha de
comando.
1. System.out.println("Imprime esta frase no console);
2. int numero = 135;
System.out.println("O nmero : +numero);
3. int idade = 30;
System.out.println("Voc tem +idade+ anos);
17:
5.1. Classe String
Segundo Deitel, uma string uma seqncia de caracteres tratada como
uma unidade nica. Sua representao feita dentro de aspas dupla (), desta
forma tudo o que voc escrever dentro destas aspas duplas, considerado
uma string, inclusive nmeros e caracteres especiais.
Vocs puderam observar que o Java no tem um tipo de dados primitivo que
representa uma seqncia de caracteres, desta forma foi desenvolvida e
distribuda junto com o Kit de Desenvolvimento do Java (JDK) uma classe que
represente uma seqncia de caracteres, e por se tratar de uma classe, ela
possui diversos mtodos que auxiliam a sua utilizao.
Existem diversas formas de se instanciar a classe String, pois ela possui
diversos mtodos construtores, segue o exemplo de apenas 3 formas de
instanci-la:
length();
18:
System.out.println("O tamanho da string : +qtde);
trim();
equals(String outraString);
Por se tratar de uma classe, a no tem como voc comparar uma string
com outra, utilizando o operador de comparao (==). Para se comparar duas
strins, necessrio utilizar o mtodo equals(). Este mtodo retorna um valor
booleano, ou seja, se as duas string forem iguais ele retornar true, e se no
forem iguais ele retornar false. Observem no exemplo a seguir que a varivel
ehString receber o valor false, pois as duas strings no so iguais porque uma
tem alguns caracteres com letra maiscula que a outra no tem:
boolean ehString;
String st1 = Programao Orientada a Objetos;
String st2 = programao orientada a objetos;
ehString = st1.equals(st2);
System.out.println("O valor de ehString : +ehString);
19:
equalsIgnoreCase(String outraString);
charAt(int index)
20:
String st1 = "Programao Orientada a Objetos";
boolean ehVerdade;
ehVerdade = st1.estartsWith("Pro");
System.out.println("O valor de ehVerdade : "+ehVerdade);
endsWith(String outraString)
Utilizado para verificar se a string principal termina com a string passada por
parmetro na assinatura do mtodo. Este mtodo retornar um valor booleano
de acordo com o ocorrido, ou seja, se a string principal terminar absolutamente
igual a string passada por parmetro, o mtodo retornar o valor true, caso
contrario retornar o valor false. No exemplo a seguir o mtodo retornar um
valor false.
toLowerCase()
21:
String st1 = "Programao Orientada a Objetos";
String st2 = st1. toUpperCase();
System.out.println("O valor de st2 : "+ st2);
A classe String possui muito mais mtodos, porm por hora estes que
aqui foram explicados servem para realizar a maioria das atividades. Caso
queiram se aprofundar mais sobre os mtodos da classe String, sugiro a leitura
do livro do Deitel Java como programar, 6Ed., paginas 1013 at 1022.
6.0. Operadores
6.1. Operadores Aritmticos
Operadores aritmticos so utilizados para realizar clculos entre dois
ou mais nmeros ou variveis numricas. A tabela abaixo ilustra a maioria
destes operadores.
+
*
/
%
++
--
Adio
Subtrao
Multiplicao
Diviso
Resto Diviso
Incremento
Decremento
9 + 5 = 14
95= 4
2*3=6
10 / 2 = 5
10 % 3 = 1
X++ ou ++X
X-- ou X
X+Y
X-Y
X*Y
X/Y
X%Y
X=X+1
X=X-1
Um detalhe que deve ser observado que tem uma diferena simples
no incremento e decremento, se for colocado a varivel seguido dos
operadores (++) ou (--) ele pega o valor da varivel e depois faz o calculo, e se
for colocado os operadores antes do varivel, primeiro faz o calculo e depois
que ele pega o valor da varivel. Por exemplo:
int x = 0, y = 0;
y = x++;
System.out.println("O valor de x : "+ x +\ne o valor de y : +y);
22:
Desta forma o valor de (y) ser zero (0), pois pegou o valor de (x) antes
de incrementar o valor de (x). J valor da varivel (x) ser de um (1). No
exemplo a seguir, tanto (x) quanto (y) ter o mesmo valor de um(1)
int x = 0, y = 0;
y = ++x;
System.out.println("O valor de x : "+ x +\ne o valor de y : +y);
>
<
>=
<=
==
!=
Maior que
Menor que
Maior ou igual a
Menor ou igual a
Igual a
Diferente
x>y
x<y
x >= y
x <= y
x == y
x != y
23:
7.0. Comandos de Controle de Programas
Toda linguagem de computador precisa oferecer no mnimo trs formas
bsicas de controle:
1 Executar uma srie de instrues (sequncia)
2 Repetir uma seqncia de instrues at que certa condio seja
encontrada (repetio)
3 Praticar teste para decidir entre aes alternativas (seleo)
Seleo simples if
if(condio booleana){
cdigo de programao
}
24:
seleo aninhada if ... else ... if ... else. Como est dando para
perceber, existem inmeros possibilidades e formas de se utilizar este
comando, porem a sua sintaxe inicial deve sempre ser respeitada, ou
seja, devemos lembrar-nos de abrir e fechar chaves para indicar o inicio
e o final de um bloco de cdigos, e devemos abrir e fechar parnteses
para indicar a condio booleana que permitir ou no a execuo deste
bloco. Veja a seguir como ficaria estas formar do comando na linguagem
de programao Java.
if (x == y){
System.out.println("O valor de x igual o de y");
}
if ( (x == y) && (x > 10) ){
System.out.println("O valor de x e y so iguais; e x maior que
10");
}
if ( (x == y) || (x > 10) ){
System.out.println("Ou o valor de x e y so iguais; ou x maior
que 10");
}
if (x == y){
System.out.println("O valor de x igual o de y");
}else{
System.out.println("O valor de x no igual o de y");
25:
comando break. Se no tiver este comando o compilador no sabe onde
parar, e executa tudo o que estiver na seqncias.Existe tambm um
coando default que serve para que se todas as condies anteriores
forem falcas, o compilador executar a condio default. Normalmente
deixe este comando por ltimo, e no precise utilizar o comando break,
pois no tem mais nada a ser executado dentro do switch.
Sintaxe:
switch(operador){
case 1:
comandos;
break;
case 2:
comandos;
break;
default:
comandos;
}
Exemplo:
switch (operador) {
case 1:
System.out.println("O valor do x 1");
break;
case 2:
System.out.println("O valor do x 2");
break;
default:
System.out.println("O valor do x no nenhuma das
alternativas anteriores");
}
26:
comandos de repetio, so conhecidos tambm por loopings ou laos. So
eles: while, do while e o for.
Sintaxe:
while(condio){
Comandos;
}
Exemplo:
while (x <= 10){
System.out.println("Passe aqui enquanto x for menor ou igual a 10");
x++;
}
Sintaxe:
do{
Comandos;
}While(condio);
Exemplo:
do{
System.out.println("Passe aqui enquanto x for menor ou igual a 10");
x++;
} while (x <= 10);
27:
Sintaxe:
For(inicio;condio;incremento){
Comandos;
}
Exemplo:
int cont = 0;
for (cont = 0; cont <= 20; cont++) {
System.out.println("Me imprima de zero a 20 vezes");
}
Ou
for (int cont = 0; cont <= 20; cont++) {
System.out.println("Me imprima de zero a 20 vezes");
}
Ou
for (int cont = 0; cont <= 20; cont = cont +2) {
System.out.println("Me imprima de zero a 20 pulando de 2 em 2");
}
Ou
for (int cont = 20; cont <= 0; cont = cont--) {
System.out.println("Me imprima de 20 a zero");
}
28:
A expresso de inicio deste comando, geralmente um comando de
atribuio que usado para colocar um valor na varivel de controle do lao. A
condio uma expresso relacional que determina quando o lao acaba. O
incremento define como a varivel de controle do lao varia cada vez que o
lao repetido. Essas 3 sees so separadas por ponto e vrgula. Uma vez
que a condio se torne falsa, a execuo do programa continua no comando
seguinte ao for.
Todos estes comandos (if, while, switch, for, etc) podem ser
combinados, isso vai depender da sua lgica de programao, e a necessidade
de utiliz-los. A seguir, vou passar alguns exerccios para fixar melhor o que foi
explicado neste contedo web.
29:
8.0. Exerccios:
1. Imprima todos os nmeros de 150 a 300.
2. Imprima a soma de 1 at 1000.
3. Imprima todos os mltiplos de 3, entre 1 e 100.
4. Faa um programa que armazene em variveis o salrio bruto mensal
de um funcionrio. Calcule quanto este funcionrio ganha por ano,
levando em considerao que ele ganha 13 Salrio mais 1/3 de frias.
Caso ele ganhe mais de R$ 13.000,00 por ano, retire 20% do salrio
bruto para IRPF, e caso ele ganhe menos de R$ 7.000,00 Adicione um
salrio mnimo (R$ 465,00) Prmio do PIS.
5. Faa um programa armazene em variveis dois nmeros reais e um
caractere de operador aritmtico. Utilizando o comando switch, de
acordo com o operador aritmtico, faa o calculo equivalente. (+ - * e /).
Lembre-se no existe diviso por 0(zero) ento no caso do operador de
diviso, verifique se o divisor maior que zero antes de realizar o
calculo.
6. Utilizando o comando for, faa um programa que imprima na tela
somente os nmeros pares de 1 at 100.
7. Faa um programa que armazene em variveis 4 notas de um aluno(O
nmero escolhido no pode ser menor que zero, e tambm no pode ser
maior que 100). Calcule a mdia anual deste aluno, e se a mdia anual
for maior ou igual a 60, imprima na tela que ele passou de ano, caso
contrrio, imprima que ele est reprovado.
Desafio:
Existe em Java um comando que captura informaes via teclado, ou seja,
comando de entrada de dados equivalente ao scanf() da linguagem C. Faa os
exerccios acima entrando os valores via console ao invs de armazenar os
valores nas variveis. Uma dica uma dos comandos o System.in, porm ele
30:
tem que trabalhar em conjunto com uma classe. Existe mais de uma classe
para trabalhar em conjunto, descubra qual a mais fcil e eficiente para realizar
este desafio.