Click here to load reader
Upload
leandro-ferreira
View
584
Download
1
Embed Size (px)
Citation preview
Governo do Estado de Mato Grosso Centro de Processamento de Dados do Estado de Mato Grosso
Missão : “Coordenar o Sistema Estadual de Informação e Prover Soluções de Tecnologia da Informação para a Administração Pública”.
Framework JBoss Seam
Versão 1.0
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 2 de 10
Histórico de Revisão
Data Versão Descrição Autor 27/01/2011 1.0 Embasamento técnico sobre a utilização do
Framework JBoss Seam no desenvolvimento de aplicações web 2.0.
Leandro Silva Ferreira
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 3 de 10
Índice
1. OBJETIVO .............................................................................................................................................. 4
2. DEFINIÇÃO ............................................................................................................................................ 4
3. PRINCÍPIOS ........................................................................................................................................... 4
3.1 MODELO UNIFICADO DE COMPONENTES ............................................................................................ 4
3.2 INTEGRAÇÃO DO JSF COM EJB 3.0 ..................................................................................................... 5
3.3 AJAX INTEGRADO ............................................................................................................................. 5 3.4 GERENCIAMENTO DE PRIMEIRA CLASSE PARA PROCESSOS DE NEGÓCIO ........................................... 5
3.5 GERENCIAMENTO DECLARATIVO DE ESTADO .................................................................................... 5
3.6 BIJECTION .......................................................................................................................................... 5
3.7 GERENCIAMENTO DE ÁREA DE TRABALHO E NAVEGAÇÃO MULTI-JANELA ....................................... 6
3.8 PREFERE ANNOTATIONS À XML ........................................................................................................ 6 3.9 FACILIDADE PARA REALIZAR TESTES DE INTEGRAÇÃO ...................................................................... 6 3.10 HÁ MAIS EM UMA APLICAÇÃO WEB DO QUE FORNECER PÁGINAS HTML ............................................ 6
4. CARACTERÍSTICAS ............................................................................................................................ 6
5. POR QUE UTILIZAR? .......................................................................................................................... 7
6. DIFERENCIAIS ...................................................................................................................................... 7
7. SINCRONIZAÇÃO DE MODELO DE DADOS .................................................................................. 8
8. VALIDAÇÃO INTELIGENTE .............................................................................................................. 9
9. SEAM-GEN ............................................................................................................................................. 9
10. INTERFACE RICA ............................................................................................................................ 9
10.1 RICH FACES ........................................................................................................................................ 9
11. CONCLUSÃO ................................................................................................................................... 10
12. REFERÊNCIAS ................................................................................................................................ 10
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 4 de 10
1. Objetivo
O objetivo deste documento é apresentar o framework baseado em Java “JBoss
Seam”.
2. Definição
O JBoss Seam é uma poderosa plataforma de desenvolvimento open source para
construção de aplicações web com interface rica em Java. Integra tecnologias como
Asynchronous JavaScript e XML (AJAX), Java Server Faces (JSF), Java Persistence
(JPA), Enterprise Java Beans (EJB 3.0) e Business Process Management (BPM) em uma
solução completa através da utilização de ferramentas sofisticadas.
O Seam foi desenvolvido para eliminar a complexidade em níveis de arquitetura e
API. Oferece aos desenvolvedores total controle sobre a implementação da lógica de
negócio sem se preocupar com a exposição das informações e/ou configuração
excessiva de arquivos XML, dispondo de anotações para classes Java e componentes
bem definidos para a camada de apresentação.
Gavin King, criador do Hibernate e JPA, líder do projeto Seam e líder da
especificação da JSR 299: Web Beans, escreveu a proposta que visa padronizar e
simplificar a forma de desenvolvimento sugerida pelo Seam, uma API para criação de
aplicações web de fácil manutenção e ótima produtividade.
Apesar de ser totalmente gratuito e com o código fonte aberto, o projeto é
financiado pelo JBoss Group, divisão da Red Hat, que oferece suporte, consultoria e
treinamentos oficiais para a solução open source.
3. Princípios
A seguir são detalhados os princípios pelos quais o JBoss Seam é baseado.
3.1 Modelo Unificado de Componentes
O Seam define um modelo uniforme de componentes para toda a aplicação. Não
faz distinção entre os componentes da camada de apresentação e os componentes da
lógica de negócios, possibilitando que a arquitetura da aplicação seja concebida
livremente, ao invés de forçar a utilização de um esquema não-natural conforme é
comum nos frameworks usados atualmente.
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 5 de 10
3.2 Integração do JSF com EJB 3.0
Segundo a documentação oficial do Seam, o JSF e o EJB3 são dois dos melhores
novos recursos do Java EE 5. O EJB3 representa o modelo de componentes para o
negócio do lado do servidor e da lógica de persistência. Por outro lado, o JSF representa
o modelo de componentes ricos para a camada de apresentação.
3.3 AJAX Integrado
O Seam suporta as melhores soluções open source de JSF com AJAX: JBoss
RichFaces e ICEfaces. Estas soluções permitem adicionar capacidade de AJAX para a
interface do usuário sem a necessidade de escrever qualquer linha de código JavaScript.
3.4 Gerenciamento de Primeira Classe para Processos de Negócio
De acordo com a documentação, o Seam fornece gerenciamento transparente
dos processos de negócio através do jBPM fazendo com que seja muito fácil implementar
fluxos de trabalho complexos, colaboração e gerenciamento de tarefas através da
utilização de jBPM e Seam.
3.5 Gerenciamento Declarativo de Estado
Além dos conceitos de gerenciamento de transações declarativas e segurança
declarativas, bem como a gestão declarativa do contexto de persistência, o JBoss Seam
ainda apresenta o gerenciamento de transações a nível de estado de aplicação.
Tradicionalmente, as aplicações J2EE implementam o gerenciamento de estado
manualmente, obtendo e enviando atributos da sessão do servlet e da requisição. Esta
abordagem de gerenciamento do estado é a fonte de muitos erros e de vazamentos de
memória quando as aplicações não conseguem limpar os atributos da sessão, ou quando
os dados da sessão estão associados com diferentes fluxos de trabalho colidindo em
uma aplicação multi-janela. O Seam tem o potencial de eliminar quase totalmente essa
classe de erros.
3.6 Bijection
O Seam criou o conceito de Bijection (bijeção), que é uma generalização de
Dependency Injection (injeção de dependência) ou Inversion of Control (inversão de
controle), que é bastante familiar no mundo Java.
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 6 de 10
3.7 Gerenciamento de Área de Trabalho e Navegação M ulti-Janela
As aplicações Seam permitem ao usuário alternar livremente entre várias abas do
navegador, cada uma associada a uma conversação diferente, seguramente isolada. As
aplicações podem ainda oferecer a vantagem do Workspace Management
(gerenciamento da área de trabalho) permitindo ao usuário alternar entre as
conversações (workspaces) em uma única aba do navegador.
3.8 Prefere Annotations à XML
Tradicionalmente, a comunidade Java tem se mantido em estado de profunda
confusão sobre precisamente qual o tipo de meta-informação contar como configuração.
O J2EE e os populares "containers leves" têm fornecido deployment descriptors
baseados em XML, tanto para as coisas que são realmente configuráveis entre diferentes
implantações do sistema, quanto para qualquer outro tipo de declaração que não pode
ser facilmente expressa em Java. As annotations do Java 5 mudaram tudo isso.
3.9 Facilidade para realizar Testes de Integração
Os componentes Seam, sendo simples classes Java, são, por natureza testáveis
por unidade. Mas para aplicações complexas, o teste unitário sozinho é insuficiente. O
teste de integração tem sido tradicionalmente uma tarefa difícil e confusa para aplicações
web em Java. Entretanto, o Seam fornece testabilidade para as aplicações como uma
característica do cerne do framework. O desenvolvedor pode escrever facilmente testes
com o JUnit ou TestNG que reproduzem uma interação completa com o usuário,
exercitando todos os componentes do sistema fora da visão (página JSP ou Facelets).
3.10 Há mais em uma aplicação web do que fornecer p áginas HTML
A documentação oficial do Seam afirma que os frameworks web de hoje pensam
pequeno demais. Eles permitem capturar a entrada do usuário em um formulário dentro
dos objetos Java e então deixam o desenvolvedor pendurado. Um framework web
verdadeiramente completo deve abordar problemas como persistência, concorrência,
assincronicidade, gerenciamento de estado, segurança, email, mensagens, PDF e
geração de gráficos, workflow, wiki text rendering, webservices, cache e mais.
4. Características
Um framework completo para o desenvolvimento web, endereçando e integrando
questões como:
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 7 de 10
• Persistência de dados;
• Concorrência;
• Gerenciamento de estados;
• Segurança;
• Email;
• Geração de PDFs e gráficos;
• Workflow;
• Web Services;
• Cache de fragmentos de páginas;
• Captcha;
• BPM;
• AJAX;
• NÃO obriga a utilização do JBoss Application Server, sendo compatível
com os maiores servidores de aplicações do mercado, como: BEA
Weblogic, IBM Websphere, Oracle OAS, SUN Glassfish, podendo ainda
ser configurável para rodar no Apache Tomcat;
• É open source (assim como todos os outros projetos JBoss) de utilização
gratuita e sem custos de licença;
5. Por que utilizar?
Precisamos de um framework que integre a vasta gama de
tecnologias/frameworks da plataforma Java, em um modelo unificado de
desenvolvimento, agregando questões como segurança, controle de acesso, geração de
PDFs, gráficos, envio de emails, busca avançada de conteúdo, interface rica que se
adapte a realidade atual da Web 2.0, com foco em produtividade, deixando o
desenvolvedor se preocupar com o negócio e não com questões de arquitetura.
O JBoss Seam é esse framework!
6. Diferenciais
• Framework com 06 anos de existência, mantido por um dos grupos mais
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 8 de 10
tradicionais de software livre da linguagem Java, a JBoss Community;
• Criado e mantido por Gavin King, o criador do Hibernate;
• Comunidade extremamente ativa com mais de 8.500 usuários registrados;
• Preparado para fácil utilização de testes unitários e de integração;
• Baseia-se somente em especificações oficiais Java:
• WebBeans JSR-299, a qual deu origem;
• JPA JSR-220;
• Common Annotations JSR-250;
• JSF JSR-127;
• EJB 3.0 JSR-175/220;
• Bean Validation JSR-303;
• Por basear-se somente em especificações oficiais Java, permite que
outras tecnologias que implementem as especificações possam ser
utilizadas em conjunto e plugadas na aplicação, como o Hibernate Envers
por exemplo, utilizado na auditoria de sistemas;
• É focado para o desenvolvimento de aplicações Enterprise;
• Faz todo o “trabalho sujo” de integração de tecnologias Java como JSF,
JPA, EJB, JBPM, XHTML, JAAS, AJAX, JBOSS RULES, HIBERNATE,
HIBERNATE SEARCH, etc., deixando o desenvolvedor concentrado no
domínio de negócios;
• Já vem preparado para desenvolvimento de aplicações distribuídas por
natureza;
• Forte integração com AJAX, sem a utilização de Java Script;
7. Sincronização de Modelo de Dados
Um dos artifícios da utilização do JBoss Seam em conjunto com o Hibernate, é a
possibilidade de :
• Gerar as tabelas no banco de dados, bem como seus relacionamentos,
sequences, constraints, etc., a partir das classes negociais do sistema,
refletindo na melhor representação de um modelo Orientado a Objetos em
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 9 de 10
uma arquitetura Relacional.
• Possibilidade de efetuar engenharia reversa e gerar as classes negociais a
partir das tabelas no banco de dados.
8. Validação Inteligente
Onde colocar as regras de validação? Na camada de apresentação? Sim,
precisamos informar os erros de validação para o usuário. Mas, também temos de
garantir as regras/restrições na camada de persistência.
Sendo assim, a melhor opção é colocar a validação nas classes de domínio e
reaproveitá-las na camada de apresentação com a utilização de AJAX! Esse artifício,
combinado com o uso do Hibernate, permite que as regras de validação negociais, sejam
geradas como constraints no banco de dados.
9. Seam-Gen
Utilitário interno do framework para geração automática de
CRUDs (Inclusão/Consulta/Atualização/Exclusão) que permite:
• Geração a partir de entidades existentes (top down)
• Ou, por engenharia reversa da base de dados (botton up)
• Identifica relacionamentos complexos
• Gera a interface gráfica coerente com o modelo de dados
• Fácil modificação do código gerado: Código próximo ao criado
manualmente
10. Interface Rica
10.1 Rich Faces
O RichFaces é um framework open source que implementa a especificação JSF
JSR-127 e tem como objetivo prover uma gama de componentes visuais para serem
utilizados na camada de visualização de uma aplicação.
Suas principais características são:
• Baseia-se na utilização de AJAX (WEB 2.0) sem a utilização de JavaScript;
• Alto grau de integração com o JBoss Seam;
Framework JBoss Seam Data da revisão: 27/01/2011
CEPROMAT/UGPTI Framework JEE JBoss Seam - Leandro Ferreira.docx Página 10 de 10
• Biblioteca com dezenas de componentes visuais com os mais variados
objetivos;
• Extremamente leve por não requerer que toda a tela seja carregada
novamente para iterações com o usuário, renderizando somente os
componentes que devem ser atualizados;
• Possibilita a criação de Skins, onde o design da aplicação pode ser
personalizado de acordo com as preferências do usuário;
• Consegue-se obter os mesmos resultados de interação com o usuário que
uma aplicação desktop desenvolvida em Delphi ou Visual Basic;
11. Conclusão
O JBoss Seam não é tímido ao resolver os problemas da plataforma Java,
principálmente pelo fato de promover o uso de arquiteturas simples, encorajando os
desenvolvedores a removerem camadas desnecessárias e a utilizarem componentes
contextuais, conseguindo assim eliminar a complexidade e tornando as já comprovadas
tecnologias mais simples e acessíveis.
Apesar de ser totalmente gratuito e com o código fonte aberto, o projeto é
financiado pelo JBoss Group, divisão da Red Hat, que oferece suporte, consultoria e
treinamentos oficiais para a solução open source.
12. Referências
• Página principal do JBoss Seam. - www.jboss.com/products/seam
• Página sobre o framework JBoss Seam. - www.seamframework.org
• Página oficial da tecnologia JavaServer Faces. -
java.sun.com/javaee/javaserverfaces
• Página oficial da tecnologia Enterprise JavaBeans. -
java.sun.com/products/ejb
• Página oficial do servidor de aplicação Glassfish. - glassfish.java.net
• Página oficial da IDE Open-Source NetBeans. - www.netbeans.org
• Página oficial da JSR Web Beans. - jcp.org/en/jsr/detail?id=299
• Rich Faces - http://livedemo.exadel.com/richfaces-demo/index.jsp