Sie sind auf Seite 1von 82

“Java

Vir tua l
Mac hine s
(JVMs)
Li vres ”

Paloma Costa
ja vaw oman@ po talja va.co m.br
http:// ja vaw oman.objectis .net

Java Livre - Paloma Costa 1


Paloma Costa
■ Java Developer e Tester Automatization

■ Técnica em Processamento de Dados

■ Estudante de Matemática e Ciências da Computação

■ Integrante da Coordenação de Software Livre RS


Fórum Internacional de Software Livre (Responsável
pelos
Grupos de Usuários)

■ Usuária GNU/Linux desde 2001- Debian

■ Trabalha nos projetos de pesquisa e desenvolvimento


da
HP(TecnoPUCRS)

■ Portal: http://javawoman.objectis.net
Java Livre - Paloma Costa (Material das 2
Objetivo

■ Apresentar os conceitos iniciais


da linguagem e guiar os
participantes em seus primeiros
passos.

Java Livre - Paloma Costa 3


Tendências e caminhos
■ Java no Ambiente Servidor (J2EE)
Tecnologias servidores, como JSP, Servlets, JSF e
EJB, JBOSS, Gerônimo, Tomcat/Apache.
■ Desenvolvimento Desktop (J2SE)
As Tecnologias e APIs para a criação de aplicações
locais com Java. Algumas bibliotecas são Swing e
Awt.
■ Java em pequenos dispositivos
(J2ME)
O uso de Java em plataformas móveis como em
telefones celulares, palms e JavaCard.

Java Livre - Paloma Costa 4


Principais Projetos Java
■ Brasilia
● Banco do Brasil
● Caixa Econômica Federal
● Serpro – Serviço Federal de Processamentos de
Dados
● Banco Central

■ Recife
● CESAR (Centro de Estudos avançados de
Recife)

■ Porto Alegre
● TecnoPuc – Parque Tecnológico da PUCRS

Java Livre - Paloma Costa 5


Padrões de
Compatibilidade
■ Liberdade de escolha – JCP
■ Especificações existentes – Sun, IBM,BEA
e Apple
■ Testes de compatibilidade – JCK
■ Tiger – 45 mil testes
■ Foco – compatibilidade e multiplataforma

Java Livre - Paloma Costa 6


A JVM como Software Livre

■ Promover a participação do
desenvolvedor.
■ Alinhar-se ao redor dos projetos
existentes.
■ Trabalhar na implementação de
JVMs e bibliotecas básicas de
JAVA sob licenças livres.

Java Livre - Paloma Costa 7


Projetos em Andamento

■ KAFFE
■ GCJ
■ Classpath
■ E mais dez iniciativas de
implementações de máquinas
virtuais Java sob licença Livre.

Java Livre - Paloma Costa 8


■Por que ainda não há
uma JVM completa,
livre e certificada?

Java Livre - Paloma Costa 9


● É muito difícil
● Falta investimento
● A Sun fornece a fonte de sua
implementação
● Licença SCSL
● Visa compatibilidade
● A licença do Tiger

Java Livre - Paloma Costa 10


Características do Java
■ Familiar com C
■ Puramente Orientada a Objetos
■ Possui uma coleção de API´s
■ Multiplataforma, independente de arquitetura
■ Mantida pelo JCP(Java Community Process)
■ Maior segurança
■ Simples e Robusta
■ Extensível e dinâmica
■ Bem estruturada
■ Distribuída
■ Suporte nativo e Multithread
■ Garbage Collection
■ Altamente tipada

Java Livre - Paloma Costa 11


API´s

■ Uma coleção de API´s são


bibliotecas que são usadas
para construir aplicações.
■ São organizadas em pacotes e
usadas pelos ambientes de
execução(JRE)

Java Livre - Paloma Costa 12


O Ambiente Java
■ J2SE
● Kit de ferramentas para compilar, executar e depurar
aplicações java $JAVA_HOME/bin no PATH do sistema
■ JRE
Serve para executar aplicações java
● Variável JAVA_HOME
● Windows: set JAVA_HOME=c:\j2sdk1.4.0
● Linux : JAVA_HOME=/usr/java/j2sdk1.4.0
● export JAVA_HOME

Java Livre - Paloma Costa 13


O Ambiente Java

ByteCodes

J J J J J J J J
V A V A V A V A
M V M V M V M V
A A A A
C C C C

Outros
Win32 MacOS Linux SO

JVM = Java Virtual Machine JAVAC = Java Compiler

Java Livre - Paloma Costa 14


Programação Orientada
a Objetos
■ Existem diversas motivações
para utilizar a POO:
● desenvolvimento mais rápido e
barato
● processo mais simples de design

● existência de recursos
sofisticados de programação

Java Livre - Paloma Costa 15


Programação Orientada
a Objetos
■ Por outro lado exige:
●mudança de paradigma
com relação a
interpretação dos
problemas

Java Livre - Paloma Costa 16


Programação Orientada
a Objetos
■ A POO é centrada no projeto e
implementação de objetos.
■ Como segundo objetivo
pretende-se que tais objetos
sejam reusáveis.
■ Um terceiro objetivo é que o
projeto seja reusável (design
pattern)!
Java Livre - Paloma Costa 17
Programação Orientada
a Objetos
■ A POO requer assim:
● o emprego de uma nova técnica
de projeto,
● o uso de novas ferramentas de
desenvolvimento e
● a aplicação de novas bibliotecas
nesta tarefa.

Java Livre - Paloma Costa 18


Conceitos-Chave
■ Uma classe é um modelo, um
conceito abstrato para
famílias de objetos. As classes
podem se relacionar embora
sejam distintas.
■ Um objeto é um representante
real, uma entidade concreta
de uma classe e pode ser
distinguido dos demais objetos
de sua classe e de outras.
Java Livre - Paloma Costa 19
Conceitos-Chave
■ Classes=Tipos: o conceito de
classe é semelhante a um tipo.
■ Objetos: São entidades
concretas que pertencem a
uma classe, i.e., são de um
certo tipo.
■ Mensagens: São pedidos de
ação (acompanhados ou não
de dados) que podem ser
enviados para objetos.
Java Livre - Paloma Costa 20
Orientação à Objetos
■ Modelo de programação mais natural
do que a programação
estruturada/funcional.
■ Entende tudo como objetos,
associando características (atributos)
e capacidades (métodos)
pertencentes
Objeto a certos
Características + tipos.
Capacidades

Java Livre - Paloma Costa 21


Características da OO
■ A OO nos oferece 5
características
importantíssimas:
● Identidade
● Abstração
● Encapsulamento
● Herança
● Polimorfismo
Java Livre - Paloma Costa 22
Características de
Linguagens OO

1.Tudo deve ser tratado como um


objeto.
2.Todo objeto é de um tipo específico.
3.Cada objeto tem uma “memória”, que
pode ser composta de outros objetos.
4.Um programa é um conjunto de
objetos que trocam mensagens.
5.Todos os objetos de um mesmo tipo
podem receber as- Paloma
Java Livre mesmas
Costa 23
Um Primeiro Objeto
■ Uma lâmpada é um
objeto que possui certas
características e
comportamentos.
■ As idéias mais gerais
sobre as lâmpadas
determinam um tipo
particular de objeto, o
tipo lâmpada.
Java Livre - Paloma Costa 24
Um Primeiro Objeto
■ Uma lâmpada em
especial tem
características bem
determinadas embora
exiba comportamento
semelhante.
■ Uma lâmpada pode estar
acesa ou apagada,
caracterizando dois
Java Livre - Paloma Costa
estados distintos
25
Um Primeiro Objeto
■ Uma lâmpada pode ser
ligada, o que faz seu estado
se tornar acesa.
■ Podendo igualmente ser
desligada, tornando seu
estado apagada.
■ Associamos ao objeto
lâmpada operações que a
colocam num certo estado
entre dois possíveis.
Java Livre - Paloma Costa 26
Um Primeiro Objeto
■ Mesmo não conhecendo os
princípios físicos que
explicam o funcionamento
de uma lâmpada, ela pode
ser usada desde que
tenhamos acesso às
operações que modificam
seu estado de
funcionamento, ou seja, as
operações de:
● ligar
Java Livre - Paloma Costa 27
Um Primeiro Objeto
Conceitualmente:

■ Tipo do Objeto:
Lâmpada

■ Interface: ligar()

desligar()
Java Livre - Paloma Costa 28
Um Primeiro Objeto
Programaticamente:
public class Lampada {
public void ligar() {
acesa = true;
}
public void desligar() {
acesa = false;
}
private boolean acesa;
}
Java Livre - Paloma Costa 29
Um Primeiro Objeto
Usando a classe:
// declarando um objeto
Lampada l;
// instanciando
l = new Lampada();
// usando o objeto
l.ligar();
l.desligar();

Java Livre - Paloma Costa 30


Estrutura de Uma
Classe Java
■ Uma classe Java define um tipo
de objeto e possui sempre um
especificador de acesso e um
nome.
■ Pode possuir atributos
(características) e métodos
(operações).

Java Livre - Paloma Costa 31


Estrutura de Uma
Classe Java
■ A classe pode possuir diversos
métodos, ou seja, funções
(operações) internas sobre
seus estados.
■ A classe também pode possuir
diversos campos (atributos ou
variáveis internas) para
representar seus estados.

Java Livre - Paloma Costa 32


Estrutura de Uma
Classe Java
// nível de acesso e nome
acesso class NomeDaClasse {
// declaração dos campos da classe
// acesso, tipo e nome
acesso tipo nomeDoCampo

// declaração dos métodos da classe


// acesso, retorno, nome e lista de parâmetros
acesso tipo nomeDoMétodo
(lista_parâmetros) {
}
}
Java Livre - Paloma Costa 33
Atributos
■ São variáveis que pertencem a
uma classe.
■ Também conhecidos como
variáveis-membro.
■ Indicam valores (dados) que
serão armazenados pelos
objetos.
■ Podem representar estados de
um objeto.
Java Livre - Paloma Costa 34
Métodos
■ São operações implementadas
para uma classe.
■ Modificam o estado de um
objeto.
■ Representam uma ação do
objeto ou transformação ao
qual este se sujeita.

Java Livre - Paloma Costa 35


Construtores
■ Métodos especiais que criam
objetos (criam instâncias de
uma classe = objeto).
■ Tem sempre o mesmo nome
que a classe.
Lampada l = new Lampada();

Java Livre - Paloma Costa 36


Notação UML
Nome do Pacote Nome da Classe

Atributos

Legenda:
(+) público
( ) pacote
(#) protegido Operações
(-) privado

Java Livre - Paloma Costa 37


Um Programa Simples
public class LampTest {
static public void main (String args[]) {
Lampada lamp = new Lampada();
System.out.println("Lampada Criada");
lamp.ligar();
System.out.println("Lampada Ligada");
lamp.desligar();
System.out.println("Lampada
Desligada");
}
} Java Livre - Paloma Costa 38
Executando
■ Numa janela DOS (ou outro
console):
>javac LampTest.java

>java LampTest
Lampada criada
Lampada ligada
Lampada desligada
Java Livre - Paloma Costa 39
Sobrecarga
■ Forma mais simples do
polimorfismo
■ Conhecida também como
method overload
■ Significa a existência de
métodos com o mesmo nome
mas com diferentes
assinaturas (signatures)
Java Livre - Paloma Costa 40
Sobrecarga
■ A assinatura de um método é a
lista dos tipos de seus
parâmetros formais.
■ public long twice (int x)
■ public long twice (long x)
■ public long twice (String x)

Java Livre - Paloma Costa 41


Sobrecarga
■ Este mecanismo permite
flexibilizar a construção de
classes pois:
■ permite uso dos mesmos
nomes representativos para
diferentes situações (mais
simples de usar)
■ reduz a passagem de
parâmetros aos necessários
Java Livre - Paloma Costa 42
Sobrecarga de
Construtores
■ Tal como métodos comuns,
construtores podem ser
sobrecarregados
■ Podem ser adicionados vários
construtores a uma mesma
classe, desde que com
diferentes assinaturas
(construtores parametrizados)
Java Livre - Paloma Costa 43
Sobrecarga de
Construtores
■ API do Java usa
extensivamente este
mecanismo, principalmente
para construtores:
■ Exemplo: classe
java.lang.String
● 11 diferentes construtores
● 4 implementações distintas para
o método indexOf
Java Livre - Paloma Costa 44
Herança
■ Segunda característica mais
importante da OO
■ Significa a construção de tipos
de dados (classes) baseada em
outros tipos já existentes,
■ onde as características
ancestrais são compartilhadas
pelos descendentes.
Java Livre - Paloma Costa 45
Herança
■ A classe de
origem é
chamada de
classe base ou
superclasse.
■ A nova classe
criada é chamada
de classe
derivada ou
Java Livre - Paloma Costa
subclasse.
46
Herança
// SuperClass.java
public class SuperClass {

}
// SubClass.java
public class SubClass extends SuperClass
{

}

Java Livre - Paloma Costa 47


Herança
■ Por que usamos?
Porque simplifica e flexibiliza o
projeto do software.
■ Para que usamos?
Para permitir reusabilidade do
código e do projeto
■ Quando usamos?
Quando percebemos a existência
de uma relação “é um” (is a)
Java Livre - Paloma Costa 48
Herança
■ Uma bola de futebol “é uma”
bola que por sua vez “é uma”
esfera.
■ Um gerente administrativo “é
um” administrador que “é um”
empregado.
■ Um automóvel marca M “é um”
automóvel que “é um” veículo.
■ Um pardal “é uma” ave que “é
Java Livre - Paloma Costa
um” animal vertebrado. 49
Herança

Java Livre - Paloma Costa 50


Herança
■ Extensão
● Novas classes ampliam de forma
especializada as operações e
atributos existentes na classe base.
■ Restrição
● Subclasses ocultam/alteram as
operações e atributos da
superclasse (overhiding) sem
modificar sua interface.
Java Livre - Paloma Costa 51
Herança

Implem. Instância Implem. Instância


Classe Classe SubClasse SubClasse

public

package

protected

private

Java Livre - Paloma Costa 52


Herança

Java Livre - Paloma Costa 53


Herança
// LiquidificadorGenerico.java
public class LiquidificadorGenerico {
// atributos
protected int velocidade;
protected int velocidadeMaxima;
// construtores
public LiquidificadorGenerico();
public LiquidificadorGenerico(int v);
// metodos
protected void ajustarVelocidadeMaxima(int v);
protected void ajustarVelocidade(int v);
public int obterVelocidadeMaxima();
public int obterVelocidade();
}
Java Livre - Paloma Costa 54
Herança
// LiquidificadorAnalogico.java
public class LiquidificadorAnalogico
extends LiquidificadorGenerico {

// construtor
public LiquidificadorAnalogico();

// metodos
public void aumentarVelocidade();
public void diminuirVelocidade();
}

Java Livre - Paloma Costa 55


Herança
// LiquidificadorDigital.java
public class LiquidificadorDigital
extends LiquidificadorGenerico{

// construtor
public LiquidificadorDigital();

// metodo
public void trocarVelocidade(int v);
}

Java Livre - Paloma Costa 56


Herança

Java Livre - Paloma Costa 57


Parte II
■ Tipos Primitivos
■ Declarações de
Variáveis
■ Comentários
■ Operadores e
Precedência
■ Estruturas de
Controle
■ Controle de
Java Livre - Erros
Paloma Costa 58
Tipos Primitivos
■ Inteiros ■ Ponto Flutuante
● byte ● float
● short ● double
● int ■ Caractere
● long ● char
■ Lógico
● boolean

Java Livre - Paloma Costa 59


Declaração de
Variáveis
■ Sintaxe:
Tipo nome1 [, nome2 [, nome3 [...,
nomeN]]];
■ Exemplos:
● int i;
● float total, preco;
● byte mediaGrupoTarefa2;
● double valorMedio;

Java Livre - Paloma Costa 60


Palavras Reservadas

abstract continue finally interface public throw


boolean default float long return throws
break do for native short transient
byte double if new static true
case else implements null super try
catch extends import package switch void
char false instanceof private synchronized while
class final int protected this

Java Livre - Paloma Costa 61


Comentários
// comentário de uma linha
/* comentário
de múltiplas linhas */
/** comentário de documentação
* que também pode
* ter múltiplas linhas
*/

Java Livre - Paloma Costa 62


Operadores
■ Aritméticos
● +, -, *, / (aritmética simples)
● % (resto da divisão inteira)
● - e + (sinal)
● ++ (incremento)
● -- (decremento)
■ Atribuição
●=
Java Livre - Paloma Costa 63
Operadores
public class Aritmetica {
static public void main (String args[]) {
int a = 5, b = 2; // Decl de 2 variaveis
// Exemplos de operacoes sobre variaveis
System.out.println("a = " + a);
System.out.println("-b = " + (-b));
System.out.println("a + b = " + (a + b));
System.out.println("a * b = " + (a * b));
System.out.println("a / b = " + (a / b));
System.out.println("a % b = " + (a % b));
System.out.println("a++ = " + (a++));
System.out.println("--b = " + (--b));
}
}
Java Livre - Paloma Costa 64
Operadores
■ Relacionais
●>
●<
● >=
● <=
● ==
● !=

Java Livre - Paloma Costa 65


Operadores
public class Relacional {
static public void main (String args[]) {
int a = 15; int b = 12;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("a == b -> " + (a == b));
System.out.println("a != b -> " + (a != b));
System.out.println("a < b -> " + (a < b));
System.out.println("a > b -> " + (a > b));
System.out.println("a <= b -> " + (a <= b));
System.out.println("a >= b -> " + (a >= b));
}
}
Java Livre - Paloma Costa 66
Precedência dos
Operadores
▲ . [] ()
▲ ++ -- ~ instanceof clone new -
▲* / %
▲+ -
▲ << >> >>>
▲ < <= > >=
▲ == !=
▲&
▲^
▲|
▲ &&
▲ ||
▲ ?:
▲ = op=
▲,

Java Livre - Paloma Costa 67


Fluxo de Execução

Fluxo Fluxo Desvio do


Sequêncial de Repetitivo de Fluxo de
Execução Execução Execução

Java Livre - Paloma Costa 68


Diretivas
■ Isoladas ■ Bloco
{
diretiva1; diretiva1;
diretiva2; diretiva2;
diretiva3; diretiva3;
 
diretivaN; diretivaN;
}
Java Livre - Paloma Costa 69
Repetição Simples
for (inic; condição; incr/decr)
diretiva;
inicialização

verdadeiro
Expressão
Diretiva
Lógica
falso

Incremento/
decremento

Java Livre - Paloma Costa 70


Repetição Simples
public class ExemploFor {
public static void main (String args[])
{
int j;
for (j=0; j<10; j++) {
System.out.println(“”+j);
}
}
}

Java Livre - Paloma Costa 71


Desvio de Fluxo
if (expressão)
diretiva1; Expressão falso
Lógica
else verdadeiro

diretiva2; Diretiva 1
verdadeiro Expressão falso
Lógica

Diretiva 1 Diretiva 2

Java Livre - Paloma Costa 72


Desvio de Fluxo
public class ExemploIf {
public static void main (String args[]) {
if (args.length > 0) {
for (int j=0;j<Integer.parseInt(args[0]);j++) {

System.out.print("" + j + " ");


}
System.out.println("\nFim da Contagem");
}
System.out.println("Fim do Programa");
}
}
Java Livre - Paloma Costa 73
Repetição Condicional
while (condição)
diretiva;
Expressão falso
Lógica
verdadeiro

Diretiva

Java Livre - Paloma Costa 74


Repetição Condicional
public class ExemploWhile {

public static void main (String args[]) {


int j = 10;
while (j > Integer.parseInt(args[0])) {
System.out.println(""+j);
j--;
}
}
}

Java Livre - Paloma Costa 75


Tratamento de Erros

try
diretiva_normal;
catch (exception1)
diretiva_de_tratamento_de erro1;
catch (exception2)
diretiva_de_tratamento_de erro2;

Java Livre - Paloma Costa 76


Tratamento de Erros
public class ExemploTryCatch {
public static void main (String args[]) {
int j = 10;
try {
while (j > Integer.parseInt(args[0])) {
System.out.println(""+j); j--;
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(”Sem argumento.");
} catch (NumberFormatException e) {
System.out.println(”Inteiro válido.");
}
}
}

Java Livre - Paloma Costa 77


Java Tools
■ Performance Controlado
Hat.dev.java.net
■ Modificações no Banco de Dados
squirrel-sql.dev.java.net
■ Ferramenta que faz build continuamente
hudson.dev.java.net
■ Cashing automático para Banco de Dados
whirlycache.dev.java.net
■ JUGS
java.net
■ Java Doc (pluguin para eclipse)
www.javadoconline.com.br

Java Livre - Paloma Costa 78


Java Tools
■ Localiza Texto para comparar ajuda na
tradução
resourcebundleceditor.dev.java.net
■ Ajuda na tradução dos mais diversos arquivos
Open language tools
■ Mostra o tráfico de rede
tcpmon.dev.java.net
■ Localiza a documentação do projeto
ashkelon.sourceforge.net
■ Monta formulários
abeille.dev.java.net
■ Para montar protótipos (eclipse não usa)
napkinlaf.sourceforge.net
Java Livre - Paloma Costa 79
Dicas de Livros
■ Dante Explica Java v5: J2ME,
J2SE e J2EE Everton Barbosa
Gomes
■ Guia completo de estudos para
Certificação em Java 2 Philip
Heller
■ Padrões de Projeto em Java
Steven John Metsker
■ Java: Como programar Harvey
M.Deitel e -Paul
Java Livre J.Deitel
Paloma Costa 80
Referências
■ Portal Java http://www.portaljava.com.br
■ Java Magazine http://www.javamagazine.com.br
■ GUJ http://guj.com.br
■ Sou Java http://www.soujava.org.br
■ Revista MundoJava http://www.mundojava.com.br
■ Wikipédia pt.wikipedia.org
■ Java Free http://www.javafree.com.br
■ DFJUG http://www.dfjug.org
■ Imasters htpp://www.imasters.com.br

Java Livre - Paloma Costa 81


Perguntas

■Muito
Obrigada!

Java Livre - Paloma Costa 82

Das könnte Ihnen auch gefallen