Você está na página 1de 36

Java

JVM
As aplicaes em Java rodam sem nenhum envolvimento com o sistema
operacional, elas conversam sempre com a JVM (Java Virtual Machine).
Essa caracterstica permite que a JVM colete mtricas, aloque memria
dinamicamente, etc. A JVM isola totalmente a aplicao do sistema
operacional. Se a JVM for encerrada abruptamente, somente as aplicaes
rodando nela sero encerradas, no afetando outras JVMs rodando nem o
sistema operacional.
A JVM no interpreta o cdigo java, mas sim um cdigo de mquina
especfico chamado bytecode. So menos de 256 opcodes disponveis, de
um byte cada.
Ao detectar hotspots (trechos do cdigo muito executados) na aplicao, a
JVM pode, quando julgar necessrio, compilar dinamicamente esses trechos
(durante a execuo) para melhorar a performance da aplicao. Essa tarefa
realizada pelo JIT (just in time compiler).
A JVM uma especificao, o que quer dizer que alm de ser independente
de hardware e sistema operacional, a plataforma Java independente de
vendor (fabricante), podendo ser usada uma implementao da JVM de
outro vendor que no a Oracle.

Rodar programas java


Compilar -> javac programa.java. Caso as classes estejam em um
mesmo arquivo, ele compilar todas e gerar um arquivo .class para
cada uma delas.
Rodar -> java programa
Bytecode -> javap c programa

Detalhes da codificao em Java


Terminar comandos com ponto e vrgula
Case sensitive
No esquecer public, static ou String[] args no mtodo main

Tipos primitivos
int
double
boolean

char apenas um caractere

Casting
Apesar de uma varivel do tipo double poder receber o valor de uma
varivel int, o contrrio no vlido. Para contornar isso pode-se realizar o
casting.
double d3 = 3.14;
int i = (int) d3;
Com isso i recebe o valor 3. O casting no arredonda o double, mas
retorna a parte inteira do nmero.
Uma varivel float no pode receber um double sem perda de informao.
Para fazer isso necessrio incluir um f (maisculo ou minsculo) aps o
nmero.
float x = 0.0f;
Outra possibilidade:
double d = 5;
float f = 3;
float x = f + (float) d;
O casting se faz necessrio porque o Java, ao realizar as operaes,
sempre armazena no maior tipo envolvido nessas operaes.
O nico tipo primitivo que no pode ser atribudo a nenhum outro o
boolean.
Para os tipos maiores no necessrio o casting, pois o mesmo implcito
ou automtico. J para tipos menores necessrio o casting de acordo com
a tabela:

If e else
if (a > b) {
c = a;
} else {
c = b;
}
Esse bloco if/else pode ser substitudo pelo operador condicional
ternrio (ternary operator):
c = (a > b) ? a : b;
As expresses booleanas podem ser concatenadas atravs dos operadores
lgicos:
E &&
OU ||
NOT !

For e while
for (inicializacao; condicao; incremento) {
codigo;
}

while (condicao) {
codigo;
}
Do..while?
Switch?
Atribuio e Incremento
i++ ps incremento, realiza a operao e depois incrementa.
++i pr incremento, incrementa e ento realiza a operao.
+=
soma o valor antigo com o informado e armazena na prpria
varivel.
-=
subtrai o valor antigo do informado e armazena na prpria
varivel.

Break e continue e return

A especificao Java define trs tipos de sentenas de branching (quebra)


para blocos de instrues.

Break: termina as instrues for, while, do-while ou switch e


transfere o fluxo de controle para a sentena imediatamente posterior
ao bloco de repetio. Possui duas formas:
o labeled: normalmente usado em laos aninhados, transfere o
fluxo para fora do bloco apontado pela label.
o unlabeled: transfere o fluxo para fora do bloco que a contm.

Continue: quebra a iterao corrente do lao, transferindo o fluxo de


controle para um novo teste da condio contida nas instrues for,
while , or do-while. Como o break tambm pode ser labeled e
unlabeled.
Return: quebra a sequncia do fluxo de controle do bloco corrente
(geralmente mtodo), transferindo o fluxo de controle para o bloco
(mtodo) que invocou o primeiro.

Escopo das variveis


o nome dado ao trecho do cdigo onde determinada varivel existe e
onde possvel acess-la. As variveis declaradas em um bloco s

Arrays
Declarando um vetor (array) de inteiros:
int[] idades;

Arrays so sempre objetos, logo a varivel


referncia. Para usar o array preciso criar um objeto:

idades uma

idades = new int[10];


No Java, os ndices do array vo de 0 a n-1.
acessado atravs do atributo length. A partir do
que um array foi criado, ele no pode mudar de

Seu tamanho
momento
tamanho.

Os arrays de referncias so usados para criar arrays


onde na verdade o array guarda as referncias para
objetos.

de objetos,
esses

Um array de tipos primitivos guarda valores, um array de objetos


guarda referncias.
Do Java 5.0 em diante, arrays podem ser percorridos atravs do enhancedfor, que um for modificado que pode ser usado em casos onde no h
necessidade de usar a varivel ndice para outro fim a no ser o de indicar a
posio do elemento no vetor:
for (int x : idades) {
System.out.println(x);
}
Imprime todos os elementos do vetor idades. Para us-lo deve-se declarar o
tipo do vetor, a varivel x, e o vetor aps os dois pontos. Dentro do for o x
substitui o vetor.
Com esse recurso possvel percorrer vetores de tamanho desconhecido
sem o uso do length.
Um array bidimensional em Java um array de arrays. Esse tipo de array
no precisa ser retangular, ou seja, cada linha pode ter um nmero
diferente de colunas.

Mtodo main
O mtodo main deve ser declarado da seguinte maneira:
public static void main (String[] args) {
}
O mtodo main recebe um array de Strings como argumento, que pode
ser passado pelo usurio na invocao do programa e usado no cdigo
como entrada.

Formatao de sada no System.out.printf


O exemplo imprime o saldo com duas casas decimais:
System.out.printf("O saldo : %.2f", c.getSaldo());

Excees
Uma exceo um evento que ocorre durante a execuo do programa que
quebra seu fluxo normal de execuo.
Existem trs tipos de exceo em Java:
Checked exceptions: so as excees verificveis. Normalmente os
programas (bem escritos) so capazes de se recuperar desse tipo de
exceo.
Errors: so os erros. Esse tipo de exceo externo aplicao, no
podem ser previstos, e a aplicao no pode se recuperar deles.
Runtime exceptions: so as excees em tempo de execuo. Esse
tipo de erro interno aplicao, mas ela no pode se recuperar
dele.
Excees do tipo ArithmeticException verificam so lanadas quando
operaes matemticas no permitidas so realizadas. Um bom exemplo
desse tipo de exceo a diviso por zero. Em situaes onde a entrada de
dados digitada pelo usurio, como por exemplo, a entrada de parmetros
da classe so lidos usando-se a classe Scanner, e, caso o usurio digite uma
String em vez de um nmero, ocorrer uma exceo do tipo
InputMismatchException.

try: instruo que gera a exceo. Indica que parte de um cdigo em


um mtodo pode gerar uma exceo.
finally: instruo para desalocar e fechar recursos.
catch: lidar com a exceo partir de um local central.

double resultado = new Operation().calc(10.0,20.0,1);

possvel haver sobrecarga de um mtodo em uma classe que implementa


um mtodo de mesmo nome de uma interface.

String = uma classe em java


void =
null = uma palavra-chave em Java, que indica referncia para nenhum
objeto.

Se, em algum caso, voc tentar acessar um atributo ou mtodo de algum


que est se referenciando para null, voc receber um erro durante a
execuo (NullPointerException, que veremos mais frente). Da para
perceber, ento, que o new no traz um efeito cascata, a menos que voc
d um valor default (ou use construtores, que tambm veremos mais a
frente).
As convenes de escrita de cdigo Java so bastante seguidas. Uma delas
que os nomes das variveis sempre so escritos com letras minsculas
(cliente, nome, casa). Para nomes compostos a primeira palavra em
minsculo e as seguintes iniciando com letra maiscula (nomeLugar,
caminhoDeCasa).

MeioDeLocomocao meio;
Bicicleta b1, b2;
Moto m1, m2;
Motorizado motor;
b1 = new Bicicleta();
meio = b1;
b2 = (Bicicleta)meio;
m1 = new Moto();
motor = m1;
m2 = (Moto)meio;
a) compila e executa.
b) no compila, devido a erro na linha 8.
c) compila, mas no executa, lanando uma exceo na linha 8.
d) compila, mas no executa, lanando uma exceo na linha 11.
e) compila, mas no executa, lanando uma exceo na linha 12.
Em linguagens mais antigas, como C e C++, objetos podem ser alocados
tanto na pilha (variveis locais de funo, parmetros de funo, etc)
quanto no heap. Geralmente essa linguagens fazem uso extensivo do heap
para alocar dados dinamicamente, como listas encadeadas, por exemplo.
Em Java, por outro lado, todos os objetos so alocados no heap. Isso faz com
que seja possvel inicializ-los com o valor nulo, representado pela palavra-

chave null. Tipos primitivos, porm, possuem uma faixa de valores


preestabelecida, e essa faixa no comporta o valor null.

O operador <<< no existe em Java; o que existe o operador >>>.


Java possui trs tipos de operadores para realizar shift.
<< Shift esquerda, com sinal: o valor de n << s o mesmo de n *
2^s.
>> Shift direita, com sinal: o valor de n >> s o mesmo de n /
2^s
>>> Shift direita, sem sinal: a diferena entre este shift e o anterior
que este realiza extenso de sinal. Para operandos positivos ele
equivalente a >>.

Operadores JAVA
Podem ser unrios, binrios ou ternrios (utilizam um, dois ou trs
operandos, respectivamente).
Aritmtico: + (adio), - (subtrao), * (multiplicao), / (diviso), % (resto
da diviso)
Atribuio: = (atribuio), += (atribuio com adio), -= (atribuio com
subtrao), *= (atribuio com multiplicao), /= (atribuio com diviso),
%= (atribuio com resto da diviso), &= (atribuio com E), ^= (atribuio
com OU exclusivo), |= (atribuio com OU inclusivo), <<= (atribuio com
deslocamento de bits esquerda com sinal), >>= (atribuio com
deslocamento de bits direita com sinal), >>>= (atribuio com
deslocamento de bits direita sem sinal).
Relacional: < (menor), > (maior), <= (menor ou igual), >= (maior ou
igual), instanceof (instncia de).
Igualdade: == (igual), != (diferente).
Lgico: && (E), || (OU).
Bitwise (bit a bit): & (E bit a bit), | (OU bit a bit), ^ (OU exclusivo bit a bit).
Postfix: var++ (usa e incrementa), var-- (usa e decrementa).
Unrio: ++var (incrementa e usa), --var (decrementa e usa), +var (no tem
efeito?), -var (inverte o sinal), ~ (complemento), ! (negao).
Shift aritmtico: << (deslocamento de bits esquerda com sinal), >>
(deslocamento de bits direita com sinal).
Shift lgico: >>> (deslocamento de bits direita sem sinal).
Para o operador /=, caso a varivel e o operando sejam inteiros, o resultado
da diviso (valor atribudo varivel) ser inteiro. O mesmo ocorre quando
o operando de casa decimal. Caso a varivel seja de ponto flutuante, a

diviso resulta em um valor de casa decimal. O operador %= funciona de


forma anloga ao operador /=.
Lembrando que deslocamento de bits s pode ser feito em tipos inteiros.
Resta confirmar se no deslocamento de bits, o bit mais direita vai para a
extrema esquerda, e vice-versa.
+var converteria var em int, caso o mesmo fosse byte, short ou char, de
acordo com apostila da UFSC (a confirmar).

http://javafree.uol.com.br/artigo/6944/Cap-3-Operadores-e-atribuicoes.html
http://www.universidadejava.com.br/docs/operadoresdeatribuicao#TOCOperador-de-atribui-o-com-m-dulo

Orientao a objetos
Em um sistema orientado a objetos muito mais importante a maneira
como os objetos se comunicam, do que como eles executam.
Classe
uma receita de bolo, descreve como devem ser implementados os objetos
e o que eles devem conter. Todos os objetos de uma mesma classe tm uma
srie de atributos e comportamentos em comum, mas no so iguais,
podem variar nos valores desses atributos e em como realizam esses
comportamentos.
Quando uma varivel declarada dentro do escopo da classe chamada de
varivel de objeto ou atributo.
Na linguagem Java, se a definio de uma classe no utiliza explicitamente
a palavra-chave extends, ela estende implicitamente a classe Object.

Objeto
Se a classe uma receita de bolo, o bolo um objeto. a implementao
da especificao contida na classe.
Ao declarar uma varivel para associ-la a um objeto, na verdade, essa
varivel no guarda o objeto, e sim uma maneira de acess-lo, chamada de
referncia. No correto dizer que essa varivel um objeto, ela uma
varivel referncia. Em Java, uma varivel nunca um objeto. Todo
objeto em Java acessado por uma varivel referncia. Essa referncia
parecida com um ponteiro, mas voc no pode manipul-la como um
nmero ou us-la para aritmtica, ela tipada.
Uma vez que as variveis de referncia guardam apenas o local da memria
onde o objeto est alocado, para verificar se dois objetos tm o mesmo
contedo, necessrio comparar atributo por atributo.
Para instanciar uma classe, criando um novo objeto, e atribuindo uma
referncia a esse objeto:
Conta minhaConta;
minhaConta = new Conta();
Ou
Conta minhaConta = new Conta();
O new retorna um valor de referncia para a varivel. Quando damos new
em um objeto, ele o inicializa com seus valores default, 0 para nmeros,
false para boolean e null para referncias.

Se por exemplo em uma classe Conta for declarado um objeto Cliente, com
o new:
Cliente titular = new Cliente();
Todas as instncias da classe Conta, j tero um novo Cliente associado.
Caso no isso no seja desejvel, deve-se declarar apenas a referncia:
Cliente titular;
Nesse caso o atributo titular da classe Conta no referencia lugar nenhum
(seu valor null). O atributo s ir referenciar um objeto quando for
instanciado (new).

Atributo
As variveis do tipo atributo recebem um valor padro. Nmeros recebem 0
e boolean recebem false. possvel definir valor padro na declarao.

Mtodo
a maneira de fazer uma operao com um objeto. O nome de um mtodo
no pode comear com um nmero.
O que um mtodo faz sempre mais importante do que como ele faz:
mudar a implementao fcil, j mudar a assinatura de um mtodo vai
gerar problemas.
Caso seja usada a palavra void na declarao do mtodo, quer dizer que
nenhuma informao ser retornada de sua execuo. Para escrever um
mtodo com retorno, declara-se o tipo desejado como retorno no lugar de
void.
O que vai dentro dos parnteses o argumento ou parmetro do mtodo.
Varivel comum (temporria ou local), deixa de existir aps a execuo do
mtodo.
A palavra-chave this usada para acessar um atributo. No entanto, seu uso
opcional. Uma forma interessante de usar o this na criao de um
mtodo envolvendo operaes com parmetros de, por exemplo, dois
objetos do mesmo tipo, onde, ao invs de criar o mtodo recebendo os dois
parmetros envolvidos relativos a cada objeto, usa-se o this para
referenciar um dos objetos, recebendo o parmetro apenas do outro objeto.
Um mtodo pode chamar ele mesmo. Essa caracterstica chamada de
recurso.
String

Para comparar variveis String, usa-se a propriedade == ou o mtodo


equals().
String s1 = TESTE;
String s2 = TESTE;
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));

//Retorna TRUE
//Retorna TRUE

Ao criar A classe String cria um pool na memria e

Modificadores de nvel de acesso


Na linguagem Java, modificadores de nvel de acesso, ou apenas
modificadores de acesso, so palavras reservadas que, ao serem
prefixadas em classes, atributos ou mtodos, determinam se outras classes
ou membros de classe podem usar um determinado atributo ou invocar um
mtodo (define escopo).
A linguagem define quatro modificadores de acesso, que tambm podem
ser chamados de modificadores de visibilidade, pois seu uso afeta a
forma como o elemento que o declara estar visvel para outros elementos.
Public: o menos restritivo de todos, a classe ou membro estar
visvel (poder ser acessado) a todas as outras classes, subclasses e
pacotes do projeto Java.
Protected: o membro estar visvel a subclasses e as outras classes
que pertencem ao mesmo pacote. Para subclasses fora do pacote, o
membro s pode ser acessado atravs de herana, e no por uma
chamada a instncia de sua superclasse.
Package (default): o membro estar visvel a todas as classes e
subclasses pertencentes ao pacote em que ele se encontra.
Private: o mais restritivo, o membro estar visvel apenas para a
classe em que este atributo se encontra. Na orientao a objetos,
prtica quase obrigatria proteger os atributos com private.
Existem dois nveis de controle de acesso:
top-level (nvel de classe): O Acesso determinado para uma classe
inteira, podendo ser definido pelos modificadores public, private ou
package (sem modificador explcito).
member-level: O Acesso determinado para atributos ou mtodos
de uma classe, so usados os modificadores private, protected,
public, package (sem modificador explcito).
A figura abaixo apresenta os nveis de acesso ou visibilidade dos
modificadores.

Deve-se sempre expor o mnimo possvel de funcionalidades, para criar um


baixo acoplamento entre as classes. muito comum, apesar de no ser
regra, os atributos de uma classe serem private e os mtodos public. Dessa
forma, a conversa de um objeto com outro feita por troca de
mensagens, isto , acessando seus mtodos.

Encapsulamento
Mecanismo que permite esconder os detalhes internos de
implementao dos objetos do mundo externo. alcanado aplicando-se
modificadores de visibilidade ou acesso. Seus principais benefcios so:
reduo dos impactos propagados a partir de mudanas
diminuio do acoplamento (dependncia) entre classes e objetos
simplificao das interfaces entre os objetos
Uma regra de negcio encapsulada no precisa ser mudada em vrios
lugares, mas em apenas um lugar.
Em sentido estrito, o modificador que indica que um membro encapsulado
o private. Contudo, o conceito pode ser estendido para nveis de proteo,
incluindo, assim, outros modificadores: protected e package.
O conjunto de mtodos pblicos de uma classe chamado de interface
da classe, uma vez que essa a nica maneira de se comunicar com os
objetos dessa classe. Sempre que vamos acessar um objeto, utilizamos sua
interface.

Getters e Setters
Uma vez que os atributos de uma classe esto normalmente encapsulados,
uma forma de permitir e controlar o acesso a eles a criao de mtodos
getters, para ler atributos; e setters, para escrever atributos. A conveno
para esses mtodos colocar a palavra get ou set antes do nome do
atributo. No caso de atributos booleanos, usa-se is ao invs de get.

Construtores

Sempre que o new chamado, ele executa o construtor da classe. O


construtor da classe um bloco declarado com o mesmo nome da classe.
Tem como finalidade criar um novo objeto (instncia) da classe que o
contm. chamado no incio do processo de criao do objeto, podendo
receber argumentos e dessa forma inicializar os atributos da instncia. D
possibilidades ou obriga o usurio da classe a passar argumentos para o
objeto em sua criao.
Construtores possuem declarao semelhante a mtodos. Contudo,
importante ressaltar que conceitualmente um construtor no um
mtodo, conforme apontado abaixo:

Mais de um construtor pode ser criado em uma classe, e o apropriado


escolhido no momento do new. Um construtor s roda durante a criao do
objeto, no podendo ser chamado depois de construdo o objeto. No
entanto, durante esse processo um construtor pode chamar outro. O uso de
construtores pode evitar chamar vrios setters atravs da passagem de
parmetros inicializveis.

Quando um programa cria um objeto da subclasse, o construtor da


subclasse imediatamente chama o construtor da superclasse
(explicitamente, via super ou implicitamente). Ao se instanciar um objeto da
subclasse o construtor noargs da superclasse carregado no heap
Uma classe onde no foi declarado nenhum construtor, implica que a classe
far uso do construtor definido por padro pela linguagem. Sempre que uma
nova classe declarada sem nenhum construtor, o compilador cria
automaticamente um para a classe. Esse construtor criado pelo compilador
no recebe argumentos e tambm invoca o construtor sem argumentos da
superclasse. importante ter certeza que a superclasse possua um
construtor desse tipo, do contrrio ser gerado um erro de compilao.

Atributos e mtodos de classe


Quando declaramos um atributo como static, ele deixa de ser um atributo
de cada objeto, e sim um atributo da classe, a informao fica guardada
pela classe, no mais individual para cada instncia dessa classe. Para

acessarmos um atributo esttico, usamos o nome da classe ao invs da


palavra-chave this.
Um mtodo declarado como static tem comportamento semelhante, se
torna um mtodo de toda a classe.
Mtodos e atributos estticos s podem acessar mtodos e atributos
estticos da mesma classe. Dentro de um mtodo esttico no temos
acesso referncia this, pois o mesmo chamado atravs da classe e
no do objeto.

Herana
Para relacionarmos duas classes de maneira que uma herde todos os
mtodos e atributos da outra usamos a palavra-chave extends. Na
herana, a classe filha tambm herda os atributos e mtodos privados,
porm s consegue acess-los indiretamente. O modificador de acesso
protected, permite acesso aos atributos pela prpria classe, por suas
subclasses e as classes no mesmo pacote.
Uma classe pode ter vrias filhas, mas pode ter apenas uma me, a
chamada herana simples do Java. Java no permite herana mltipla. No
deve ser feita herana quando a relao no for estritamente um.
A herana aumenta o acoplamento entre as classes, uma vez que o
relacionamento entre classe me e filha muito forte. Por esse motivo o
programador da classe filha precisa conhecer tambm a implementao da
classe me, e vice-versa, dificultando assim mudanas pontuais no sistema.

Reescrita de mtodo
No Java, ao herdar um mtodo, o mesmo pode ser alterado, mantendo o seu
nome e acesso. Isso chamado de reescrita ou sobrescrita de mtodo
(override).
Pode-se deixar explcito no cdigo que determinado mtodo a reescrita de
um mtodo da superclasse atravs da anotao @Override, colocada
acima do mtodo. Por questes de compatibilidade isso no obrigatrio.
No entanto, caso um mtodo seja anotado, ele necessariamente precisa
estar reescrevendo um mtodo da classe me.
Dependendo da situao, pode ser interessante chamar o mtodo reescrito
a partir da subclasse. Quando os mtodos das subclasses so escritos como
uma funo do mtodo da superclasse, eventuais alteraes necessrias
podero ser feitas unicamente na classe me, no precisando alterar os
mtodos das classes filhas. Isso pode ser feito atravs da palavra super.

Polimorfismo
a capacidade de um objeto poder ser referenciado de vrias formas. Essa
capacidade faz uso da caracterstica do Java de decidir pela invocao do
mtodo em tempo de execuo. A JVM descobre em tempo de execuo
qual mtodo deve ser invocado a partir do tipo do objeto, e no pela
forma como ele referenciado.
No importa como um objeto referenciado, o mtodo invocado ser
sempre o desse objeto.
O polimorfismo, juntamente com a reescrita de mtodos tem o poder de
diminuir o acoplamento entre as classes, evitando que novos cdigos
resultem em modificaes em diversos lugares.
bem comum em Java declarar o objeto com seu tipo mais genrico e
instanci-lo com o tipo mais especfico. Esse artifcio extremamente til
para realizar polimorfismo paramtrico, onde o objeto, apesar de ser do
tipo mais especfico, pode ser passado como parmetro para qualquer
funo que espere um objeto do tipo mais genrico.

Classes abstratas
uma classe que apenas idealiza um tipo, define apenas um rascunho.
Classes abstratas so aquelas que geralmente dizem respeito a um
conceito genrico do mundo real, cuja instanciao no faz sentido na
maioria das vezes. Na verdade, as classes abstratas servem como base para
outras classes, essas sim instanciveis a partir da classe abstrata e que
dizem respeito a conceitos concretos do mundo real.
No Java, faz sentido referenciar uma classe abstrata, mas no instanci-la.
Os objetos devem ser criados a partir das subclasses dessa classe abstrata.
Para garantir que uma classe no seja instanciada, usa-se o modificador
abstract na declarao de uma classe.
Apesar de no serem instanciveis, as classes abstratas so referenciveis,
o que permite o polimorfismo e a herana de atributos e mtodos. A
impossibilidade de instanciar um objeto a partir de uma classe abstrata
confere maior consistncia ao sistema.
Apesar de no ser possvel dar new em uma classe abstrata
ClasseAbstrata, possvel dar new em ClasseAbstrata[10] pois esse
comando no instancia a classe, apenas cria um array com referncias para
classes especializadas de ClasseAbstrata.

Mtodos abstratos
Assim como acontece com as classes, pode-se tambm definir mtodos
como abstratos, atravs da declarao da palavra-chave abstract na
assinatura do mtodo, e colocando ponto e vrgula no lugar das chaves.
Um mtodo abstrato s pode ser definido em uma classe abstrata e tal
mtodo determina que ele sempre ser reescrito pelas classes filhas
concretas (no abstratas), caso contrrio elas no compilaro. Elas herdam
a responsabilidade de ter esse mtodo.
Um mtodo abstrato no tem corpo, pois nunca chamado. O programa
que chama esse mtodo ser sempre redirecionado para uma das classes
filhas. Uma vez que o mtodo abstrato, certo que suas subclasses tm
esse mtodo, o que garante que a invocao do mtodo no vai falhar.
A nica possibilidade de uma classe filha no reescrever um mtodo
abstrato da classe me, se essa classe filha for declarada como abstrata.
Uma classe que estende de uma classe normal pode ser abstrata. Ela no
poder ser instanciada, mas a classe me sim.
Uma classe abstrata no precisa necessariamente ter um mtodo abstrato.

Sobrecarga de mtodo
Em Java, mtodos podem ter o mesmo nome, desde que no sejam
ambguos, isto , que exista uma maneira de distingui-los no momento da
chamada. Esse processo chamado de sobrecarga de mtodo (overload).

Interfaces
As interfaces podem ser usadas quando subclasses de uma mesma
superclasse possuem comportamentos diferentes, mas precisam ser
referenciadas de uma mesma maneira. Isso feito criando um contrato,
que assinado apenas pelas subclasses interessadas, conferindo a quem
assinar esse contrato um status, que pode ser usado para referenciar as
subclasses. O contrato define tudo o que a classe deve fazer para obter
determinado status.
interface Autenticavel {
boolean autentica(int senha);
}
Interface a maneira atravs da qual pode-se conversar com um objeto. A
interface do exemplo pode ser lida como: quem desejar ser autenticvel
precisa saber autenticar dado um inteiro e retornando um booleano. Quem

assina esse contrato se responsabiliza por implementar o mtodo


autentica().
Uma interface pode definir uma srie de mtodos, mas nunca
implement-los. Ela expe o que o objeto tem que fazer, e no como
ele faz ou o que tem. Como ele faz vai ser definido na implementao da
interface.
A classe que implementar a interface est assinando o contrato. Nesse
momento ela precisa implementar os mtodos pedidos na interface. Para
isso usado o termo implements na classe. Os mtodos de uma interface
so pblicos e abstratos, sempre.
O implements pode ser lido como: A classe Gerente se compromete a ser
tratada como Autenticavel, sendo obrigada a ter os mtodos necessrios,
definidos neste contrato.
Com o uso de interfaces, ganha-se mais uma forma de referenciar uma
classe, aumentando o polimorfismo. Ao criar uma varivel do tipo
Autenticavel, criada uma referncia a qualquer objeto de uma classe
que implemente Autenticavel, direta ou indiretamente.
A interface se preocupa com o que um objeto faz, enquanto a
implementao se preocupa em como ele faz. Ao seguir essa regra, o
sistema ter grande desacoplamento, tornando-o mais fcil de manter e
modificar.
Diferentemente das classes, uma interface pode herdar mais de uma
interface. como um contrato que s vale quando outros contratos sejam
fechados. No herda mtodos e atributos, mas responsabilidades.

JavaBean
Um JavaBean nada mais do que uma classe com todos os seus atributos
private, com setters e getters, e um construtor vazio (padro).
Singleton design pattern

Herana x composio
Alternativas ao uso do atributo protected na herana. Preciso realmente
afrouxar o encapsulamento do atributo por causa da herana? Como fazer
para o atributo continuar private na me e as filhas conseguirem de alguma
formar trabalhar com ele?

Conceitos a serem trabalhados


Persistncia
Deploy a instalao da aplicao em um servidor de aplicaes, ou seja,
instalar a aplicao para disponibiliz-la aos usurios.

J2EE
A plataforma J2EE contm uma srie de especificaes e containers, cada
uma com funcionalidades distintas.
Estes containers ou API so:

JDBC (Java Database Connectivity) utilizado no acesso a bancos


de dados;
Servlets so utilizados para o desenvolvimento de aplicaes Web
com contedo dinmico. Ele contm uma API que abstrai e
disponibiliza os recursos do servidor Web de maneira simplificada
para o programador.
JSP (Java Server Pages) uma especializao do servlet que
permite que contedo dinmico seja facilmente desenvolvido.
JTA (Java Transaction API) uma API que padroniza o tratamento
de transaes dentro de uma aplicao Java.
EJBs (Enterprise Java Beans) utilizados no desenvolvimento de
componentes de software. Eles permitem que o programador se
concentre nas necessidades do negcio do cliente, enquanto
questes de infra-estrutura, segurana, disponibilidade e
escalabilidade so responsabilidade do servidor de aplicaes.
JCA (Java Connector Architecture) uma API que padroniza a
ligao a aplicaes legadas.
JPA (Java Persistence API) uma API que padroniza o acesso a
banco de dados atravs de mapeamento Objeto/Relacional dos
Enterprise Java Beans. Assim como o Hibernate, qualquer outro
framework pode implementar o JPA.

JMS (Java Message Service) uma API para middleware


orientado a mensagens. Atravs dela possvel realizar a
comunicao de forma assncrona entre duas ou mais aplicaes.

Servlet - Gera contedo dinmico por meio de um modelo de requisioresposta


JDBC - Permite executar comandos SQL a partir de mtodos de classes Java
EJB - Implementa lgica de negcios
JPA - uma especificao baseada no conceito de POJOs para padronizar o
mapeamento objeto/relacional (O/R) em Java
JTA - Fornece uma interface padro para a demarcao de transaes
JMS - Permite que componentes de aplicao JEE possam criar,
enviar,receber e ler mensagens
JSF - framework MVC para desenvolvimento de aplicaes web e
um modelo de interfaces grficas baseado em eventos

No confundir com:
JCompany uma soluo para o desenvolvimento de aplicaes JEE.
JBoss um servidor de aplicao de cdigo fonte aberto baseado na
plataforma JEE.
Hibernate um framework para o mapeamento objeto-relacional escrito
na linguagem Java. Implementa especificaes JPA
Eclipse apenas uma IDE.

No JBoss, um load balancer pode ser implementado


por software ou hardware, sendo que um load balancer externo implementa
o seu prprio mecanismo para entender a configurao do cluster e prover
sua forma de balanceamento de carga efailovere.
No JBoss, a alta disponibilidade est baseada em funcionalidades, tais como,
criao de cluster, cache, failover, balanceamento de carga e
implementao em ambientes distribudos.
Criao, edio e excluso de perfis e grupos de usurios, atribuio de
perfis aos usurios e validao de e-mail no cadastro de novos usurios, so
algumas das ferramentas disponveis na administrao do JBoss.
No WebSphere, a capacidade de fornecer um ambiente de alta
disponibilidade est embasada nas no Business Events, atravs da
explorao da funcionalidade natural do Application Server Network
Deployment.

Servidores de aplicao
Um software servidor de aplicao oferece um ambiente para a
instalao e execuo de certos tipos de aplicaes, centralizando e
dispensando a instalao da aplicao nos computadores clientes e
disponibilizando uma plataforma que separa do desenvolvedor
de software algumas das complexidades de um sistema computacional,
atendendo, assim, algumas questes comuns a todas as aplicaes,
como, por exemplo, segurana, acesso facilitado a bancos de dados,
redundncia, garantia de disponibilidade, balanceamento de carga e
tratamento de excees. Dentre os principais servidores para aplicaes
Java EE esto o JBoss e o Tomcat (?).
Os servidores de aplicaes podem hospedar uma grande quantidade de
aplicativos e fornece a eles um ambiente de execuo otimizado para um
processamento eficiente de rotinas. Os servidores costumam fornecer
APIs para que os desenvolvedores tenham acesso a funcionalidades
fornecidas, abstraindo desses desenvolvedores as complexidades
inerentes. Entre essas funcionalidades, o desenvolvedor pode ter acesso
a ambientes de processamento paralelo, indicando um trabalho
computacional a ser feito e os parmetros associados, sem se preocupar
com as complexidades de distribuio desse trabalho entre ncleos de
processamento, agendamento de trabalhos, entre outras dificuldades.
Muitas aplicaes usam um servidor HTTP ou web como o meio de
comunicao com o usurio, permitindo que esse usurio acesse a
aplicao atravs de um browser. O servidor web, logo, parte do
mecanismo de apresentao e disponibilizao dos dados ao cliente. A
lgica de negcios desenvolvida pelo servidor de aplicaes, que se
comunica com o servidor web para receber as requisies e fornecer
respostas.
Assim, modelos (lgicas de negcio) podem ser combinados com dados
para gerar arquivos HTML dinamicamente. A ideia que o servidor web
faz o download da pgina HTML gerada pelo servidor de aplicao e
assim envia essa pgina como resposta a uma requisio de um usurio.
Um servidor de aplicao JEE age como uma mquina virtual estendida
que voltada para a execuo de aplicaes e que trata de forma
transparente as conexes com o banco de dados e com o cliente.
Uma vantagem do uso de servidores de aplicao JEE a centralizao
da configurao. Por exemplo, o servidor Apache que compatvel com o
JEE. Tem sua configurao totalmente centralizada no
arquivo httpd.conf.
Se um servidor de aplicao JAVA est com a HEAP configurada com
valor abaixo do necessrio, possvel que, por esse motivo, ocorram
erros de java.lang.OutOfMemoryError nas aplicaes.

JBOSS uma implementao da Red Hat, que dispe de EJB, JSF e JPA.
Outras implementaes do JEE:

Apache Geronimo
GlashFish (Sun)
Object Jonas

WAMP servidor que instala o Apache, MySQL e PHP no ambiente


Windows.

Uma aplicao java web roda dentro de um container web de um servidor


web. Um container web fornece um ambiente de execuo por meio de
componentes que fornecem contexto de naming e gerenciamento do ciclo
de vida de servlet. O Tomcat um container web e portanto um servidor de
aplicaes java web. Contudo, incorreto afirmar que o Tomcat um
servidor de aplicaes JEE. Neste caso, alm de implementar um container
web o servidor de aplicaes JEE tambm implementa um container EJB.
Como o Tomcat no implementa container EJB ele no pode ser considerado
um servidor de aplicaes JEE.
O Tomcat, servidor de aplicaes Java para Web, um software livre de
cdigo aberto, que surgiu do conceituado projeto Apache Jakarta, com o
apoio e endosso oficial da Sun Microsystems como implementao de
referncia para as tecnologias Java Servlet e JavaServer Pages (JSP). Alm
de implementar a API de Servlets e JavaServer Pages, pode atuar
diretamente como servidor HTTP.
Na arquitetura do servidor Tomcat, o container Web denominado
Catalina.
Segundo documentao do Tomcat, o projeto Tomcat iniciou como uma
implementao de referncia da Sun para as especificaes servlet e jsp e
que teve seu cdigo base doado para Apache foundation em 1999. Contudo,
atualmente a implementao de referncia da Sun para servlet e jsp o
GlassFish.
Outro ponto importante que, segundo a prpria Sun, o Tomcat 5.0 para
Java WSDP no destinado a ambientes de deployment ou de produo.
Arquitetura Java EE

Os servidores de aplicao Tomcat e JBoss so concebidos para operar


nativamente com o framework de desenvolvimento J2EE, alm de possurem
suporte para diversos sistemas gerenciadores de bancos de dados, tais
como SQL Server, Oracle, DB2 e PostgreSQL.

JBoss
O JBoss um container J2EE open source. No uma aplicao rgida,
indivisvel, mas sim uma famlia de servios inter-relacionados que
correspondem a cada item da coleo J2EE. Essa famlia de servios interrelacionados chamada de Configurao do Servidor.
O Jboss pode ser utilizado em qualquer sistema operacional que suporte
Java. As fbricas e os destinos de conexo so objetos administrados e
configurados pelo administrador de JMS.
O arquivo que carrega a interface de linha de comando (CLI) do JBoss o
jboss-admin.bat.
Uma vez instalado o JBoss, a estrutura de diretrios contm, entre outras
pastas, a pasta server/, que onde configuramos o JBoss e realizamos o
deploy das nossas aplicaes. H trs configuraes de servidor na pasta
server/: minimal, default e all.
O arquivo principal da Configurao do Servidor jboss-service.xml, no
diretrio default/conf/. Os diretrios conf/, deploy/ e lib/ esto sempre
presentes em todas Configuraes de Servidor. O diretrio default/deploy/
onde realizaremos o deploy das aplicaes, contm arquivos SAR, WAR e
EAR. Enquanto o JBoss roda, ele constantemente verifica esse diretrio em
busca de mudanas na configurao. Qualquer alterao em arquivos de
configurao desse diretrio reconhecida pelo JBoss, que se ajusta a elas
automaticamente. Esse processo de adicionar e remover servios durante a
execuo do JBoss chamado hot deployment, pode ser feito da mesma
forma com arquivos EAR e WAR, e d grande flexibilidade e robustez ao
servidor. Contudo, esperado o cold deployment para aplicaes de
produo, ou seja, para-se o JBoss, realiza-se o deploy, e ento reinicia-se o
servidor de aplicao.
Uma configurao de servidor personalizada por facilmente ser criada
atravs da cpia de uma dessas pastas, seguida da atribuio de um nome
nico para ela e ento a adio e remoo de servios conforme desejado.
JBoss baseado em uma arquitetura de microkernel JMX (Java Management
Extensions), onde todos os mdulos que compem o servidor, alm das
prprias aplicaes, so componentes (MBeans) plugados ou
substitudos dinamicamente, em runtime, sem a necessidade de paradas do
servidor. Pode-se iniciar e parar servios, obter mtricas, e at mesmo
mudar parmetros em execuo. MBeans so os servios que
implementam a interface JMX, chamados de managed beans,. Cada um
dos servios J2EE que rodam dentro do JBoss um MBean. Log4j, Tomcat e
Hibernate so todos MBeans. O ciclo de vida dos demais componentes ou
servios do servidor JBoss comandado pelo microkernel JMX.

Usando um browser que aponta para o


endereo http://<HOSTNAME>:<PORTA>/jmx-console/, em
que <HOSTNAME> o endereo IP da mquina na qual se encontra
instalado o servidor JBoss e <PORTA> o nmero da porta de
gerenciamento configurada no servidor Jboss, ser possvel acessar a uma
pgina HTML a partir da qual se pode navegar para uma pgina que
permitir a interrupo e o reincio do funcionamento da aplicao
instalada. No entanto, por padro, o console JMX bloqueado e nem mesmo
um usurio admin pode acess-lo. Para permitir acesso ao console JMX,
deve-se ir ao diretrio JBOSS_DIST/jboss-as/server//conf/props/ e
descomentar o admin userid e cdigo password no arquivo jmx-consoleusers.properties. Isto permitir que o usurio admin acesse o console JMX
usando a combinao de nome de usurio e senha especificada no
arquivo jmx-console-users.properties.
O JBoss utiliza o framework Hibernate como sua implementao da Java
Persistence API (JPA).
Os servios de autenticao, autorizao e comunicao segura so
disponibilizados pelo framework SX.
No JBoss a interface de segurana AuthenticationManager responsvel
por validar credenciais associadas com objetos, ou seja, ele apenas valida,
no controla o acesso.
O uso de interceptadores (interceptors) para implementar um modelo de
controle de comportamento de aplicaes com base na orientao a
aspectos uma caracterstica suportada pela tecnologia JBoss. Esses
interceptadores so os EJBs propriamente ditos, os quais trabalham
justamente orientados a aspectos.
Existem 6 nveis de log no Jboss FATAL, TRACE, DEBUG, INFO, ERROR, WARN

Servlet Container
O servlet container o ncleo da tecnologia J2EE que d poder camada
web. Ele considerado um container pois JSPs e servlets no podem rodar
como aplicaes autnomas eles devem implementar interfaces especiais
dentro do container. O container escuta requisies HTTP em uma dada
porta, encaminha o dado recebido para seus componentes personalizados, e
usa a sada resultante para criar um documento HTML bem formado para
ento devolv-lo ao browser web como resposta. Tomcat 5.5.9 o servlet
container padro incluso no JBoss 4.0.2. Graas ao sistema modular do
JBoss, trocar o Tomcat por outro servlet container fcil.
Aplicaes de trs camadas
As partes de uma aplicao J2EE recaem sobre trs camadas bsicas:

A camada de apresentao a coleo de componentes J2EE que


englobam a UI. Para aplicaes web, essa camada inclui componentes
como Servlets e JSPs.
A camada de negcio assim chamada pois onde vive a lgica do
seu negcio. Inclui EJBs e MDBs.
A camada de persistncia onde os seus dados de longo prazo so
armazenados. Os dados podem ser armazenados como XML,
JavaBeans serializados, ou at mesmo arquivos de texto ASCII.

Em uma aplicao bem planejada, componentes de cada camada so


altamente coesos e fracamente acoplados. Por altamente coeso,
entende-se que cada componente deve fazer apenas uma coisa. Por
fracamente acoplado, entende-se que componentes atravessando as
camadas no devem depender uns dos outros de maneira desnecessria.
Camadas fracamente acopladas encorajam o reuso.
A camada de apresentao
Os princpios de alta coesividade e fraco acoplamento so to aplicveis
dentro desta camada quanto atravs das camadas. Na camada de
apresentao, isso conhecido como o padro MVC
(Model/View/Controller = modelo/viso/controlador).

A viso a tela propriamente dita. implementada atravs de JSPs,


CSS e taglibs como JSTL. Preocupa-se em formatar os dados de uma
maneira agradvel.
O modelo so os dados. Em uma tela, o modelo um POJO (Plain old
Java Object). um simples JavaBean com um nome XBean aleatrio.
XBean nada mais do que uma classe com variveis membro e os
accessors e mutators associados. Pode-se usar uma linguagem de
programao orientada a objetos para construir objetos que tem um
significado semntico mais profundo do que uma pilha de tipos de
dados primitivos.
O controlador intermedia a comunicao entre a viso e o modelo.
Em uma aplicao web, o controlador geralmente um servlet. O
controlador cria o XBean, o processa e redireciona ao JSP apropriado.
Finalmente, necessrio adicionar o servlet ao web.xml.

Deploy de uma aplicao como um arquivo WAR


O arquivo WAR, como o nome indica (Web ARchive), uma coleo de
arquivos da camada de apresentao. O agrupamento desses arquivos em
um nico arquivo torna fcil realizar o deploy de uma aplicao web
completa.
No esprito da alta coesividade, o arquivo WAR no deve conter arquivos
pertencentes a outras camadas (como EJBs ou cdigo de persistncia). J o
arquivo EAR um meta-wrapper, agrupando seus WARs da camada de

apresentao com JARs adicionais que apoiam as camadas de persistncia e


negcio.
Analisando o arquivo WAR
O URL da aplicao web o mesmo do nome do arquivo WAR. Este URL
chamado de Raiz de Contexto. No entanto, possvel definir qualquer Raiz
de Contexto, independente do nome do WAR. Para fazer isso, necessrio
empacotar tudo em um EAR.
A raiz do arquivo WAR a raiz da aplicao web. O arquivo index.jsp a
pgina inicial da aplicao. Esta informao est especificada no arquivo
web.xml.
As classes compiladas e bibliotecas JARs esto armazenadas no diretrio
WEB-INF. Os arquivos do WEB-INF esto ocultos da visualizao pblica
usurios da web no podem ver o contedo do diretrio ou de qualquer dos
seus subdiretrios atravs de seus browsers. Eles podem, contudo, realizar
uma chamada a um recurso armazenado em WEB-INF (como um servlet),
desde que ele esteja configurado no web.xml. importante estar
familiarizado com o arquivo WEB-INF/web.xml. Ele o principal arquivo
descritor de deployment web.
Web.xml
Em um primeiro momento, o arquivo web.xml identifica somente a welcome
file list. prtica comum nomear o arquivo principal como index.jsp, mas
possvel usar qualquer nome arbitrrio desejvel desde que ele esteja
listado no web.xml. Este arquivo tende a crescer com o desenvolvimento do
projeto. Web.xml onde so identificados os servlets, pesquisas JNDI e
opes de segurana, entre muitas outras coisas.
A seo <servlet> do arquivo web.xml possibilita criar uma alias para a
classe, o que funciona como uma proteo contra mudanas no nome de
classes e pacotes, alm de possibilitar a troca constante de diferentes
classes de servlets para fins de testes, atravs da simples mudana em uma
linha no web.xml.
A seo <servlet-mapping> torna pblicos recursos ocultos de WEB-INF. O
parmetro <url-pattern> permite definir qualquer nome desejvel.
Jboss-web.xml
Web.xml o descriptor de deployment padro para aplicaes web. Por
definio, ele tido como padro para todos os Servlet containers. O outro
lado da moeda que ele no permite configuraes especficas de
container. Jboss-web.xml preenche essa lacuna. Como o nome sugere, as
configuraes presentes neste arquivo so especficas para deployments do
JBoss.

WARs versus EARs


O arquivo WAR um meio conveniente de agrupar todas as partes de uma
aplicao web. Todos servlet containers sabem como realizar o deploy de
um arquivo WAR eles expandem o pacote, procuram o diretrio WEB-INF e
leem o web.xml encontrado l para posteriores instrues de deploy.
O arquivo EAR fornece o mesmo tipo de funcionalidade para uma aplicao
J2EE completamente desenvolvida. O JBoss expande o EAR, encontra os
descritores de deployment necessrios e procede a partir da.
EAR
Um EAR como uma caixa de ovos mantm tudo organizado. Enquanto a
caixa no agrega nenhum valor ao seu omelete, ela torna a tarefa de levar
os ovos do mercado para casa to fcil que voc no pensaria em
transportar ovos de nenhum outro jeito.
Cada ovo em sua caixa de EARs uma pea especfica do quebra-cabeas
J2EE. Estes ovos (ou JARs) se apresentam em trs variedades chamadas
mdulos:

Mdulo web um arquivo WAR contendo componentes da camada de


apresentao.
Mdulo EJB um arquivo EJB JAR contendo componentes
intermedirios de camada (EJBs, MDBs, etc.)
Mdulo Java um arquivo JAR comum contendo classes e bibliotecas
que so compartilhadas pela aplicao inteira.

Um arquivo EAR pode conter pelo menos um destes mdulos. Pela mesma
razo, qualquer um deles pode ser seguramente omitido caso no seja
necessrio.
Application.xml
Assim como um arquivo WAR contm um descritor de deployment web.xml,
um arquivo EAR contm um arquivo chamado application.xml.
essencialmente uma listagem do pacote, dizendo ao servidor J2EE
exatamente quais arquivos o EAR contm e onde pode encontr-los,
tomando como referncia a raiz do EAR. Os elementos no arquivo
application.xml devem ser bastante autoexplicativos. Fica armazenado no
diretrio META-INF do EAR.
O mdulo Web permite especificar um outro valor <context-root>. A raiz
de contexto o URL da pgina web. Se o deploy tratar-se de um nico
arquivo WAR, o nome do WAR ser usado como URL. Quando o arquivo WAR
deployed dentro de um EAR, este elemento sobrescrever o nome fsico
do WAR e definir qualquer nome de URL desejado.
O <security-role> um outro elemento importante do arquivo
application.xml. Ele descreve as funes de segurana usadas por toda a

aplicao J2EE tanto para componentes web e EJB. Definir funes de


segurana no application.xml centraliza a segurana declarativa J2EE em
um nico lugar, evitando a duplicao dessa informao em web.xml ou
ejb-jar.xml.
JAR comum
Um objeto compartilhado pelas camadas um candidato perfeito
categoria JAR comum. Adicionalmente aos objetos de domnio
personalizado, JAR comum um timo lugar para armazenar bibliotecas
comuns como Log4j ou JDOM. Enquanto WARs e EJB JARs tem diretrios lib,
elas so melhores usadas como bibliotecas especficas de camada. Por
exemplo, os JARs JSTL pertentem ao WAR eles no tm outro propsito
seno apoiar a criao de pginas web. Por outro lado, log de dados algo
que acontece por toda a base de cdigo isso realmente pertence a um JAR
comum.
Automatizao do deploy
Automatizar o deployment para um servidor de testes certamente ajudar a
acelerar as interaes no desenvolvimento. Mas deployments para um
servidor de produo devem ser levadas um pouco mais a srio. Atualizar
uma aplicao de produo algo que deve ser feito deliberadamente, em
outras palavras, deve ser feito mo. Se uma tarefa for criada para o
deploy da aplicao em um servidor de produo, quase certo que ela
ser executada acidentalmente no momento mais inoportuno.

JBoss AS 7
O Standalone Mode foi adicionado na verso 7 do JBoss. Quando o
gerenciamento centralizado no necessrio, ou se voc for um
desenvolvedor trabalhando em um projeto usando JBoss Developer Studio
(JBDS), o modo standalone o mais correto.
O Domain Mode uma das novidades trazidas pelo JBoss AS7. Este modo
fornece um nico ponto de controle chamado de controlador de domnio
para executar e gerenciar uma coleo de servidores.
Permite iniciar vrias instncias e tambm oferece uma maneira
centralizada de gerenciamento dos recursos facilitando a administrao das
instncias JBoss.
O Domain Mode pode ser visto como uma unidade de instncias que
compartilham recursos e configuraes e so administradas por um
processo chamado Domain Controller.
Para iniciar o JBoss AS 7 no Domain Mode deve-se executar, de acordo com
o sistema operacional, o script (que geralmente encontra-se na pasta
JBOSS_HOME/bin) domain.sh no Linux ou domain.bat no Windows.

Para carregar um snapshot ao inicializar o servio do Jboss, deve-se utilizar


a opo
--server-config.
Para serem gerados snapshots da instncia Jboss que estiver em execuo,
necessrio executar o comando
take-snapshot.
No JBoss AS7, a carga de classes (class loading) baseada em mdulos, que
devem definir dependncia explcita em relao a outros mdulos.
A parte mais significativa da configurao realizada nos arquivos
domain.xml e standalone.xml a configurao de um (no standalone.xml)
ou mais (no domain.xml) perfis (profiles). Um perfil um conjunto nomeado
de configuraes de subsistema. Um subsistema um conjunto adicional de
recursos para o servidor ncleo por uma extenso.

JBoss Seam 2
Framework para desenvolvimento de aplicaes Java EE, que integra
tecnologias JSF e EJB 3, entre outras, resultando num framework unificado,
completo e sofisticado. Foi desenvolvido para eliminar a complexidade em
nveis de arquitetura e API.
No h distino entre os componentes da camada de apresentao e da
camada de negcios no Seam. A integrao feita preferencialmente por
anotaes, uma vez que o EJB 3.0 adota as anotaes e configurao por
exceo em XML, entretanto o JSF ainda muito dependente de
configuraes em arquivos XML. Para isso, o Seam estendeu as anotaes
providas pelo EJB 3.0 de forma eliminar os rudos das declaraes dos
managed beans no JSF e reduzir o cdigo XML necessrio para a
configurao.
O modelo de componentes do JBoss Seam tem como caracterstica o uso
direto de componentes Enterprise JavaBeans como beans acoplados s
pginas JavaServer Faces.
Tomcat
O Tomcat tem a capacidade de atuar como servidor web/HTTP autnomo, ou
pode funcionar integrado a um servidor web dedicado, como o Microsoft IIS,
ou ainda como parte integrante de um servidor de aplicaes mais amplo,
como JBoss AS, provendo os recursos de Java Servlet e JSP.
O Tomcat um servidor de aplicaes Java para web. software livre e de
cdigo aberto, surgido dentro do conceituado projeto Apache Jakarta e que
teve apoio e endosso oficial da Sun Microsystems como Implementao de

Referncia (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP).


Atualmente, o Tomcat tem seu prprio projeto de desenvolvimento
independente, dentro da Apache Software Foundation. O Tomcat robusto e
eficiente o suficiente para ser utilizado mesmo em um ambiente de
produo.
Tecnicamente, o Tomcat um Continer Web, parte da plataforma
corporativa Java Enterprise Edition (Java EE, anteriormente denominada
J2EE) que abrange as tecnologias Servlet e JSP, incluindo tecnologias de
apoio relacionadas como Realms e segurana, JNDI Resources e JDBC
DataSources. O Tomcat tem a capacidade de atuar tambm como servidor
web/HTTP autnomo, ou pode funcionar integrado a um servidor web
dedicado, como Apache httpd ou Microsoft IIS, ou ainda como parte
integrante de um servidor de aplicaes mais amplo, como JBoss AS,
provendo os recursos de Java Servlet e JSP.
O Tomcat porm no implementa um continer EJB. Para aplicaes Java
Enterprise Edition (Java EE) que utilizam Enterprise JavaBeans (EJB), voc
deve procurar um servidor de aplicaes Java EE completo, como JBoss AS
(software livre), GlassFish (software livre), Apache Geronimo (software livre),
IBM WebSphereBEA WebLogic (comercial), Oracle AS (comercial), ou o Java
EE SDK que inclui Sun Java System Application Server Platform Edition
(gratuito), entre outros.

Fail-over
a capacidade de um servidor de aplicao J2EE de dar prosseguimento a
determinado servio em situao de pane no sistema.

JSP
JSPs so arquivos HTML simples com possibilidade de usar templates que
nos possibilita inserir dados dinamicamente em tempo de execuo.
JSP e JSTL
possvel inserir cdigo Java diretamente em JSPs, apesar de no
recomendado. Primeiramente, este scriptlet no compilado at a
execuo. Isso significa que os usurios sentiro na pele os pontos e
vrgulas esquecidos e as chamadas a mtodos com erros de digitao.
Tambm encoraja o reuso copiar e colar. Sem cdigo compilado, voc no
pode test-lo completamente, gerar o JAR, e reus-lo nas aplicaes. E mais
importante, scriptlets no so baseados em tags. Ao confiar neles, voc
mistura programao com tecnologias baseadas em tags.

A soluo para todos esses problemas so as Tag Libraries (taglibs). Taglibs


so classes Java compiladas que emitem fragmentos de HTML bem
formados. Uma vez identificada uma taglib sob sua JSP, voc pode misturar
as novas tags juntamente com as tags JSP nativas. Uma vez que as taglibs
so armazenadas em um arquivo JAR, elas podem ser distribudas
facilmente e reusadas pelas aplicaes.
A JSP Standard Tag Library (JSTL) permite que voc use tags personalizadas
para realizar as tarefas dinminas que voc normalmente realizaria usando
cdigo ou scriptlets inserir dados em uma pgina dinamicamente, realizar
laos do/while e usar blocos if/then, por exemplo. Dois arquivos JAR
compem o JSTL standard.jar e jstl.jar.

CSS
CSS no uma tecnologia J2EE ele parte do padro HTML. Embora
discusses sobre Java no o mencionem muito, o CSS deveria ser uma parte
indispensvel de qualquer toolkit de desenvolvimento J2EE. Ele permite a
voc separar detalhes de apresentao dos seus dados centralizando as
instrues de estilo em um nico arquivo.
Isto traz vrios benefcios durante o processo. Mantm seu cdigo HTML
claro e conciso ao eliminar toda a formatao de marcao. Permite a voc
criar estilos semnticos e descritivos ao invs de confiar em estilo fsico. E
mais importante, ele permite a voc modificar o visual e centralizar o
processo ao modificar um nico arquivo. O uso do CSS para obter esses
resultados em um web site chamado de skinning.
Em um arquivo CSS, voc pode definir estilos de renderizao tanto para
tags pr-definidas como para nomes personalizados. Se voc deseja aplicar
o estilo a mltiplas tags, comece o estilo nomeado com um ponto, criando
uma classe CSS. Se voc deseja limit-la a um nico usurio por pgina
(como rodap, copyright, etc.), comece o estilo nomeado com um #, o que
cria um ID CSS. Alm de usar o CSS para estilos, voc pode us-lo para
posicionar seus elementos HTML com preciso na tela.

Servlets
Na plataforma Java, a primeira e principal tecnologia capaz de gerar pginas
dinmicas so as Servlets, que surgiram no ano de 1997. A prpria
linguagem Java usada para isso, criando uma classe com capacidade de
gerar contedo HTML. O nome "servlet" vem da ideia de um pequeno
servidor (servidorzinho, em ingls) cujo objetivo receber chamadas HTTP,
process-las e devolver uma resposta ao cliente. Servlets devem lidar com
os mecanismos do ciclo de requisio/resposta HTTP. Eles no devem
realizar tarefas da camada de persistncia.

Servlets so classes Java que dinamicamente:

Processam requisies;

Constroem respostas;

Estendem as capacidades dos servidores que hospedam aplicaes


que so acessadas por meio de um modelo de requisio-resposta;

Geram contedo dinmico (normalmente para pginas HTML) e


interage com os clientes;

Embora os servlets possam responder a qualquer tipo de pedido, eles


so normalmente usados para estender as aplicaes hospedadas em
servidores web;

Pode ser considerado um applet que executado no lado servidor;

DAO
Um DAO (Data Access Object) uma camada de abstrao ele esconde a
persistncia especfica real atrs de uma interface comum.
XDoclet
XDoclet uma coleo de tarefas Ant que geram cdigo durante o processo
de build. s vezes o XDoclet pode gerar o cdigo necessrio ou o descritor
de deployment usando somente o cdigo fonte. Outras vezes, ser
necessrio adicionar comentrios personalizados para conduzir o XDoclet na
direo correta.
Anotaes so typesafe e conferem maior probabilidade de sucesso no
deployment sem a necessidade de uso do XDoclet.

Web Services
UDDI obrigatrio (concursos). Contm os servios disponibilizados por
provedores. Denominaes: Registro de servios, catlogo de servios,
WSDL
SOAP
Exemplo:
O cliente precisa fazer uma consulta de CPF, ele vai ento ao UDDI (registro
de servios) e descobre que o TCU (provedor) faz isso. Ento ele vai ao TCU
(atravs do SOAP) e obtm o WSDL (descrio do servio) para saber o que
necessrio para realizar esse tipo de consulta junto ao TCU. A partir da ele
faz as consultas de CPF normalmente junto ao TCU.

Você também pode gostar