Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
Tipos primitivos
int
double
boolean
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.
Arrays
Declarando um vetor (array) de inteiros:
int[] idades;
idades uma
Seu tamanho
momento
tamanho.
de objetos,
esses
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.
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.
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-
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
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
//Retorna TRUE
//Retorna TRUE
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
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
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?
J2EE
A plataforma J2EE contm uma srie de especificaes e containers, cada
uma com funcionalidades distintas.
Estes containers ou API so:
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.
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
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.
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:
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
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.
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
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.
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.
Processam requisies;
Constroem respostas;
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.