Universidade Federal de Santa Catarina – UFSC
Centro Tecnológico – CTC
Departamento de Informática e Estatística - INE
Disciplina: INE5638 – Introdução a Projetos
Um estudo de camadas de apresentação WEB
com integração com EJB
Aluno:
Thiago Roberto dos Santos
0413844-9
Orientador:
Vitório Bruno Mazzola
SUMÁRIO
SUMÁRIO ..................................................................................................................................................... 2
1. INTRODUÇÃO ..................................................................................................................................... 3
1.1. PROBLEMA ......................................................................................................................................... 3
1.2. OBJETIVOS ......................................................................................................................................... 3
1.3. JUSTIFICATIVA .................................................................................................................................... 3
2. CONCEITOS FUNDAMENTAIS ........................................................................................................ 5
2.1. JAVA ................................................................................................................................................... 5
2.2. PLATAFORMA JAVA ........................................................................................................................... 5
2.3. JAVA EE ............................................................................................................................................. 5
2.4. SERVLETS........................................................................................................................................... 5
2.5. JAVA SERVER PAGES (JSP) ............................................................................................................. 6
2.6. BIBLIOTECAS DE TAGS (TAG LIBS) ................................................................................................... 6
2.6.1.
JAVA STANTARD TAG LIBRARY (JSTL) ....................................................................................... 6
2.7. EJB .................................................................................................................................................... 7
2.8. API DE PERSISTÊNCIA JAVA (JPA) .................................................................................................. 7
2.9. EJB SESSION BEANS ........................................................................................................................ 8
2.9.1.
STATELESS SESSION BEANS......................................................................................................... 8
2.9.2.
STATEFULL SESSION BEAN ........................................................................................................... 8
2.10.
PADRÕES DE PROJETO .................................................................................................................. 8
2.11.
PADRÃO MVC ................................................................................................................................ 8
2.11.1. MODELO ......................................................................................................................................... 9
2.11.2. VISÃO ............................................................................................................................................. 9
2.11.3. CONTROLADOR .............................................................................................................................. 9
2.12.
ARQUITETURA JSP MODELO 2 ..................................................................................................... 9
2.13.
FRAMEWORK ................................................................................................................................ 10
3. METODOLOGIA E CRITÉRIOS ...................................................................................................... 11
3.1. METODOLOGIA ................................................................................................................................. 11
3.1.1.
IDENTIFICAÇÃO DE CARACTERÍSTICAS DAS FERRAMENTAS........................................................ 11
3.1.2.
ESTUDO DAS CARACTERÍSTICAS ESPECÍFICAS DAS FERRAMENTAS .......................................... 11
3.1.3.
DESENVOLVIMENTO DE UMA APLICAÇÃO .................................................................................... 11
3.2. CRITÉRIOS ........................................................................................................................................ 11
3.2.1.
VELOCIDADE DO DESENVOLVIMENTO .......................................................................................... 11
3.2.2.
INTEGRAÇÃO COM EJB3 ............................................................................................................. 12
3.2.3.
CONTROLE DE ESTADOS .............................................................................................................. 12
3.2.4.
FACILIDADE DE USO ..................................................................................................................... 12
3.2.5.
CURVA DE APRENDIZADO E DOCUMENTAÇÃO ............................................................................ 12
3.2.6.
UTILIZAÇÃO NO MERCADO ........................................................................................................... 12
4. FRAMEWORKS AVALIADOS ........................................................................................................ 14
4.1. WEBWORK .................................................................................................................................... 14
4.2. STRUTS ............................................................................................................................................. 14
4.3. SPRING ............................................................................................................................................. 14
4.4. TAPESTRY ........................................................................................................................................ 15
4.5. JBOSS SEAM.................................................................................................................................... 15
5. REFERENCIAS ................................................................................................................................. 16
1. INTRODUÇÃO
1.1. Problema
Tem se tornado cada vez mais comum a escolha do ambiente WEB para o
desenvolvimento
de
aplicações
corporativas.
Em
decorrência
disso,
a
complexidade das aplicações tem crescido muito rapidamente.
Na plataforma Java, o modelo de objetos de negócio e o mapeamento objeto
relacional vêm sendo bem atendidos pela especificação EJB3. Contudo, existe
muito trabalho repetitivo na construção de interfaces com o usuário e no
tratamento das entradas do sistema, o que prolonga o tempo de desenvolvimento
e dificulta a manutenção.
Visando facilitar o desenvolvimento da camada de apresentação, surgiram
vários frameworks para diminuir a codificação repetitiva. A grande oferta de
soluções dificulta a escolha e a identificação da mais adequada para uma
determinada aplicação ou conjunto de aplicações.
1.2. Objetivos
Este trabalho tem como principal objetivo identificar as tecnologias para
camada de apresentação mais adequadas para sistemas gerenciais de pequeno e
médio porte que utilizem a tecnologia EJB para a camada de negócio e
persistência de dados.
De maneira complementar, o trabalho também objetiva:

Identificar critérios adequados para avaliação e comparação das
tecnologias estudadas.

Identificar características comuns aos frameworks.

Elaborar um quadro comparativo dos frameworks
1.3. Justificativa
Devido ao grande número de organizações que disponibilizam serviços para
Internet e Intranet, o desenvolvimento de aplicações WEB tornou-se um ramo
muito importante na indústria de software.
A mudança de ambiente trouxe de volta uma série de problemas já
resolvidos pelas aplicações tradicionais. Várias soluções já estão disponíveis para
resolver tais problemas, mas, devido a grande oferta, é difícil escolher uma
solução perene para a organização. Até mesmo identificar quais são as opções
disponíveis e estáveis é uma tarefa complexa. Um estudo para identificação e
comparação de frameworks seria bastante útil para auxiliar as organizações
nessas tarefas.
2. CONCEITOS FUNDAMENTAIS
2.1. Java
Java é uma linguagem de programação orientada a objeto desenvolvida na
década de noventa por James Gosling, na SUN Microsystems. Java tem sintaxe
similar às linguagens C e C++. Ela é compilada em bytecodes, que podem ser
executados por uma máquina virtual ou por hardware específico.
2.2. Plataforma Java
Plataforma Java é uma plataforma para desenvolvimento e execução de
programas escritos na linguagem Java. A plataforma não é específica para um
hardware ou sistema operacional. As aplicações da plataforma rodam sobre uma
máquina virtual, que tem implementações para diversas arquiteturas. A plataforma
é distribuída em três edições diferentes:

Java Standart Edition (Java SE), para máquinas desktop.

Java Micro Edition (Java ME), para dispositivos portáteis.

Java Enterprise Edition (Java EE), para aplicações corporativas.
2.3. Java EE
Java EE é uma edição da Plataforma Java voltada para aplicações
corporativas, distribuídas, multi-camadas.
A plataforma Java EE é definida por uma especificação, considerada
informalmente um padrão, pois os fornecedores de servidores de aplicação têm
que cumprir certos requisitos para declarar seus produtos como compatíveis com
Java EE. Ela inclui várias especificações de API como JDBC, RMI, e-mail, JMS
entre outras.
2.4. Servlets
A tecnologia Java Servlet provê um simples e consistente mecanismo para
extender a funcionalidade de um servidor WEB e acessar objetos de negócio. Um
Servlet recebe uma requisição e, baseado nela, fornece uma resposta. A resposta
pode ser um documento HTML, XML, entre outros.
O contêiner WEB é responsável pelo ciclo de vida do Servlet e também pela
tradução de uma chamada http para uma requisição do Servlet.
2.5. Java Server Pages (JSP)
As JSP combinam o uso de HTML e linguagem Java. Em relação aos
Servlets, elas facilitam a divisão de trabalho entre os designers e os
programadores, pois permitem a escrita das páginas em HTML intercaladas com
código Java.
Ao serem requisitadas pela primeira vez no contêiner WEB, as JSP são
compiladas para Servlets, passando então a responder requisições de maneira
semelhante a eles.
2.6. Bibliotecas de Tags (Tag Libs)
As bibliotecas de tags definem funcionalidades que podem ser usadas em
qualquer JSP, em forma semelhante às tags HTML. As tags são processadas no
servidor no momento da requisição, podendo gerar código HTML.
As bibliotecas mantém o código mais legível, pois evitam a mistura de código
Java com código HTML. As tags costumam ser mais amigáveis também para os
designers, que não estão acostumados em ver trechos de código no meio das
páginas.
2.6.1.
Java Stantard Tag Library (JSTL)
Java Standart Tag Library encapsula em tags simples as funcionalidades
centrais comuns à maioria das aplicações WEB. Ela traz tags para iterações,
operações condicionais, manipulação de XML, tags para internacionalização e
acesso a banco de dados via SQL.
2.7. EJB
EJB é sigla de Enterprise Java Beans, especificação de um componente
para
construção
modular
de
aplicações.
A
especificação
padroniza
a
implementação da regra de negócio das aplicações.
EJB especifica como um servidor de aplicação prove:

Persistência de Dados

Processamento de transações/Controle de Concorrência

Segurança

Serviço de troca de mensagens (JMS)

Invocação remota de procedimentos (RMI/IIOP)

Disponibilização de Métodos de Negócio como Web Services
2.8. API de Persistência Java (JPA)
A API de Persistência Java (JPA) provê mapeamento objeto relacional para
JAVA. O mapeamento facilita o desenvolvimento de aplicações orientadas a
objeto com dados persistidos em bancos de dados relacionais.
2.8.1.
Entidades
Entidades são classes Java que, tipicamente, representam uma tabela uma
base de dados relacional. Cada instância da classe, por sua vez, representa uma
linha na tabela. As entidades podem se relacionar entre si nas multiplicidades um
para um (One-to-One), um para muitos (One-to-Many), muitos para um (Many-toOne) e muitos para muitos (Many-to-Many).
O mapeamento entre as tabela e as entidades é feita através de simples
anotações. As anotações permitem o mapeamento das relações e os ajustes de
nome da tabela e das colunas.
2.8.2.
Java Persistence Query Language
Java Persistence Query Language é uma linguagem semelhante a SQL, mas
pode ser feita contra as entidades mapeadas. Dessa forma é possível abstrair a
forma de armazenamento dos dados.
2.9. EJB Session Beans
Session Beans são tipicamente classes de negócio que podem ser
publicadas em um contêiner J2EE.
2.9.1.
Stateless Session Beans
Stateless Session Beans não mantém estado entre as requisições, podendo
ser acessado por diversos clientes diferentes.
2.9.2.
Statefull Session Bean
Statefull Session Bean mantém o estado entre as requisições do cliente.
Dessa forma, cada instância atende apenas um cliente por vez.
2.10. Padrões de projeto
Os padrões de projeto são soluções já testadas para resolver problemas
recorrentes. Os padrões são documentados e, a medida que se mostrem
eficientes, devem ser reutilizados. Os padrões de projeto precisam ser adaptados
ao contexto da aplicação. Eles não se propõem a determinar a maneira como o
código deve ser escrito, mas como os elementos estão estruturados.
2.11. Padrão MVC
O padrão MVC teve origem no SmallTalk, onde era usado para separar a
interface com o usuário dos dados. Dessa forma, mudanças as mudanças de
interface causavam menos impacto na camada de dados e vice-versa.
2.11.1. Modelo
O modelo é responsável pelos dados e pelas regras de negócio da
aplicação. Ele que interage com os repositórios de dados e executa as operações
da aplicação.
2.11.2. Visão
A visão é responsável por apresentar os dados para o usuário. Os mesmos
dados podem ser apresentados de diversas formas diferentes, como tabelas,
formulários ou gráficos, sem que seja necessário reescrever o código de acesso
aos dados para cada forma de apresentação.
2.11.3. Controlador
O controlador é responsável pela comunicação entre as camadas visão e
modelo. Ele trata entradas dos usuários, invoca as regras de negócio pertinentes
na camada modelo e apresenta os dados através da camada de visão.
2.12. Arquitetura JSP Modelo 2
A arquitetura do modelo 2 é aderente ao padrão MVC trabalhando com uma
abordagem para aplicações WEB que combina JSP e Servlets. Ele foca nos
pontos fortes de cada tecnologia, usando as JSP para a camada de visão e os
Servlets como controladores, tratando as entradas dos usuários e se comunicando
com a camada modelo. As JSP não contêm nenhuma regra de negócio, apenas
apresentando dados de objetos previamente criados pelos Servlets e pelos
objetos de negócio.
2.13. Framework
No paradigma de orientação a objeto, Frameworks são conjuntos de classes
que podem ser reutilizadas para construir aplicações dentro de um contexto
específico. Um framework oferece classes genéricas que devem ser entendidas
na construção de uma nova aplicação.
Vários frameworks aderentes aos padrões MVC e JSP Modelo 2 serão
estudados nos próximos capítulos.
3. METODOLOGIA E CRITÉRIOS
3.1. Metodologia
3.1.1.
Identificação de características das ferramentas
No início do estudo será feito um levantamento das características comuns
aos vários frameworks estudados. Além de ser um dos objetivos do trabalho, essa
etapa reduz o tempo de aprendizado, pois procura isolar características
específicas das comuns.
3.1.2.
Estudo das características específicas das ferramentas
Após o estudo das características comuns, é necessário estudar mais
detalhadamente cada framework, conhecer seus pontos fortes e fracos. Essa
etapa visa agilizar a realização da etapa seguinte.
3.1.3.
Desenvolvimento de uma aplicação
Será definida uma pequena aplicação que deve ter sua camada visão e
controladora desenvolvida usando cada um dos frameworks em estudo. A
aplicação terá os tipos básicos de relacionamentos entre entidades, alguns
cadastros com interação com o usuário e algum processamento de negócio.
A regra de negócio da aplicação será desenvolvida com usando a tecnologia
EJB e a API de persistência Java (JPA). Esta regra de negócio deve ser
aproveitada por todas as implementações feitas com os frameworks.
3.2. Critérios
3.2.1.
Velocidade do desenvolvimento
A produtividade no processo de desenvolvimento de software é cada vez
mais cobrada. A demanda tem crescido de forma muito rápida e os prazos tem
ficado menores. Uma das principais características esperadas dos frameworks em
estudo é a sua capacidade de eliminar trabalho repetitivo e acelerar o
desenvolvimento.
3.2.2.
Integração com EJB3
Será verificado se a solução é capaz de interagir com a camada de negócio
escrita com EJB3, se são necessárias configurações ou bibliotecas adicionais. A
camada desenvolvida com o Framework deve ser capaz de utilizar a
implementação prévia das regras de negócio.
3.2.3.
Controle de estados
O controle de estados é um dos desafios da programação WEB. É
necessário que a ferramenta permita um controle da maneira adaptável a diversos
cenários e de maneira simples, para facilitar o desenvolvimento.
3.2.4.
Facilidade de uso
Será analisada a facilidade de instalação e a integração com as principais
interfaces de desenvolvimento gratuitas, Eclipse e NetBeans. A possibilidade de
depuração e de testes automatizados no código desenvolvido.
3.2.5.
Curva de aprendizado e Documentação
Será avaliada a complexidade da solução, a quantidade de arquivos de
configuração necessários, a consistência da documentação, a quantidade de
exemplos disponíveis e a existência de tutorias para treinamento de pessoal.
3.2.6.
Utilização no mercado
A utilização no mercado é muito importante. Quanto mais difundida a
tecnologia, maior a possibilidade de se encontrar profissionais já experientes.
Além disso, soluções com muito uso costumam ser levadas em conta nas
especificações de novos padrões.
4. FRAMEWORKS AVALIADOS
4.1. WEBWORK
WEBWORK é um framework para desenvolvimento de aplicações WEB em
Java produzido pelo projeto Open Symphony. Ele visa aumentar a simplicidade do
código e a produtividade dos desenvolvedores. Provê padrões de interface com o
usuário, suporta internacionalização e uma robusta camada de validação, tanto na
camada cliente quando na camada do servidor.
4.2. Struts
O Struts é um framework open source desenvolvido pela fundação apache
para desenvolvimento de aplicações WEB com Java EE que encoraja a
programação no modelo MVC(Model-View-Controller). Ele provê um tratador de
requisições e de respostas, que auxilia o tratamento das interações entre cliente e
servidor. Também é disponibilizado um conjunto de bibliotecas de tags para
facilitar a construção de aplicações baseadas em forms HTML.
O Struts oferece duas versões de seu framework, a versão 1, que é
reconhecida como o framework mais popular para aplicações WEB em Java, e a
versão 2.0, que surgiu da união da equipe do projeto Struts com a equipe do
projeto WERBWORK. Anteriormente a versão 2 era conhecida como WEBWORK
2.
Este trabalho focará na versão 2 do framework, por trazer uma série de
recursos novos e pelo fato de que ela deve substituir gradativamente a versão 1.
4.3. Spring
O Spring é um framework open source para desenvolvimento de aplicações
Java em geral. Existem extensões mais específicas para desenvolvimento WEB.
O Spring não tem um modelo de programação específico. O framework traz uma
grande quantidade de recursos organizada em módulos. Entre os recursos estão
uma camada de abstração para JDBC, suporte a soluções ORM como Hibernate e
JPA, suporte a EJB3, recursos de integração com outros frameworks, recursos
para programação orientada a aspectos e, no núcleo do framework, um contêiner
de inversão de controle.
Para este trabalho será usada a versão 2.0 do framework.
4.4. Tapestry
O Tapestry é um framework para desenvolvimento de aplicações WEB, no
modelo MVC (Model-View-Controller) construído sobre a API Java Servlet. Dessa
forma suas aplicações podem ser executadas em qualquer contêiner de Servlets
ou servidor de aplicação. O desenvolvimento com Tapestry consiste em criar
páginas padrão em HTML combinadas com código java utilizando, opcionalmente,
arquivos descritores XML.
O framework tenta assumir a responsabilidade por funções recorrentes no
desenvolvimento de aplicações WEB, como manutenção de estado, validação de
entradas do usuário, internacionalização e tratamento de exceções.
4.5. JBoss Seam
JBoss Seam é um framework para construção de aplicações WEB em Java
que integra diversas tecnologias, como AJAX, JSF, EJB3, Java Portlets e BPM. O
desenvolvimento com o framemework é baseado em POJOs como anotações
Java.
JSF e EJB3 são tecnologias poderosas para o desenvolvimento de
aplicações WEB. Os EJB são excelentes para tratar os eventos do JSF e as Entity
Beans provem um modo transparente de mapeamento com a base de dados
relacional. Elementos visuais poderiam manter seu estado através de Entity
Beans.
O JEE ainda não traz uma padrão para integração de JSF e EJB3, fazendo
com que desenvolvedores tenha que desenvolver muito código para tal função. O
JBoss Seam foi projetado justamente para preencher a lacuna de integração entre
essas grandes tecnologias.
5. REFERENCIAS
FORD, N. Art of Java Web Development.Greemwich: Manning, 2003
DEITEL H. M., DEITEL P.J., Java How to Program. Sexta Edição, Prentice Hall.
2004
Hunter, J. Java Servlet Programming. Primeira Edição. Sebastopol: O’Reilly,
1998
Download

3.2.2. Integração com EJB3 - Projetos