10

Click here to load reader

Framework JEE JBoss Seam - Leandro Ferreira

Embed Size (px)

Citation preview

Page 1: Framework JEE JBoss Seam - Leandro Ferreira

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

Page 2: Framework JEE JBoss Seam - Leandro Ferreira

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

Page 3: Framework JEE JBoss Seam - Leandro 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

Page 4: Framework JEE JBoss Seam - Leandro Ferreira

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.

Page 5: Framework JEE JBoss Seam - Leandro Ferreira

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.

Page 6: Framework JEE JBoss Seam - Leandro Ferreira

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:

Page 7: Framework JEE JBoss Seam - Leandro Ferreira

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

Page 8: Framework JEE JBoss Seam - Leandro Ferreira

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

Page 9: Framework JEE JBoss Seam - Leandro Ferreira

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;

Page 10: Framework JEE JBoss Seam - Leandro Ferreira

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