Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Programação » Framework MVC: Apache Struts ou JavaServer Faces? parte 1 -->
 
Avaliação: Não avaliado | Publicado em: 05/09/2005
Framework MVC: Apache Struts ou JavaServer Faces? parte 1
Givanildo Santana do Nascimento Givanildo é Bacharel em Sistemas de Informação, Sun Certified Web Component Developer for J2EE Platform, Sun Certified Java 2 Platform Programmer 1.4, Analista de Sistemas na Secretaria da Fazenda de Sergipe. Arquiteto J2EE da ITX Tecnologia da Informação. Publicou artigos em revistas como a Mundo Java e apresentou palestras em eventos como Just Java 2005 e III Borland Conference.


Nos últimos anos assistimos ao surgimento de diversas técnicas para desenvolvimento de interfaces Web em Java. Dos applets aos servlets, dos servlets ao JSP, do JSP ao Struts e agora o JavaServer Faces. Descubra os fundamentos das mais avançadas tecnologias de desenvolvimento Web em Java e saiba escolher entre Struts ou JavaServer Faces.

A utilização de um framework baseado no consagrado padrão de projeto Model View Controller (MVC) pode simplificar muito a construção de aplicações Web em Java. Para que os desenvolvedores focalizem mais esforços na representação do domínio da aplicação do que nas tecnologias empregadas, os frameworks implementam diversos padrões de projeto e boas práticas, abstraindo do desenvolvedor parte da complexidade envolvida no processo de desenvolvimento de aplicações.

Por ser um padrão de arquitetura muito extensível, o MVC inspirou a criação de vários frameworks, dos quais alguns dos mais conhecidos são: Apache Struts; Apache Cocoon; Spring MVC; WebWork; o brasileiro JBanana; e o JavaServer Faces, definido pelo Java Community Process (JCP).

Com tantas opções disponíveis, a escolha de um framework MVC para utilização em projetos de desenvolvimento não é uma tarefa trivial. É preciso analisar os principais produtos e avaliar os pontos fortes e os pontos fracos de cada um. Não existe “receita de bolo” ou recomendação genérica nesta escolha. Ela também depende das características e particularidades de cada projeto.

Em matéria de framework MVC, existem dois produtos que mais se destacam. Um deles é o “Apache Struts Web Application Framework”, o mais maduro e mais utilizado pela comunidade Java mundial, mantido pela Apache Software Foundation (ASF). O outro framework que vem conquistando a admiração da nossa comunidade é o JavaServer Faces (JSF). Apesar de não possuir a maturidade e o legado do Struts, o JSF atrai por ser o padrão emergente de desenvolvimento de interfaces definido pelo JCP e pela sua proposta de resgate ao desenvolvimento de interfaces baseadas em componentes e eventos. Nosso objetivo neste artigo é ajudá-lo na comparação e na escolha entre estes dois frameworks MVC.

Introdução

Existem muitos padrões a serem seguidos na engenharia de software J2EE e o domínio de todos os padrões do GoF – Gang of Four e do Core J2EE Patterns não é uma realidade entre todos os desenvolvedores. Só no catálogo de padrões J2EE, são relacionados quinze padrões, como mostra a figura 1.

Figura 1. Catálogo de padrões J2EE

Além disso, conhecer os padrões não é tudo. É preciso entender e saber quando devemos aplicá-los e quando não aplicá-los. Em algumas situações, a não utilização de um padrão de projeto fará com que toda a nossa implementação fique comprometida, enquanto em outras situações, o uso do padrão elevará a complexidade do projeto de forma desnecessária.
Tanto o Struts como o JSF oferecem um servlet de controle configurável, além de bibliotecas de classes e tag libraries para a construção de páginas JSP. Muitas ferramentas integradas de desenvolvimento para a plataforma J2EE vêm aderindo à arquitetura MVC, através do suporte a estes frameworks.

Model View Controller

A separação das camadas de apresentação, negócios e controle é um quesito fundamental para os sistemas de informação. Na WEB, em especial, o controle de fluxo centralizado facilita a criação de navegações complexas, interligadas por fluxos estáticos e condicionais. O MVC é, portanto, um padrão de arquitetura que disciplina a separação entre as camadas de negócios (Model), apresentação (View) e controle de fluxo (Controller).

O uso do MVC oferece muitos benefícios ao projeto de aplicações. Por separar os conceitos de apresentação, controle de fluxo e lógica de negócios, ele reduz a duplicação de código, centraliza o controle e torna a aplicação mais robusta, portável e de fácil manutenção. O controle de fluxo no MVC é implementado fora das páginas JSP, normalmente em arquivos XML, nos quais são definidas as regras de navegação da aplicação. Isto favorece a reutilização de páginas e a manutenção do sistema, visto que mudanças no fluxo de navegação da aplicação são feitas apenas no descritor XML e não nas páginas JSP. Se o padrão MVC oferecesse somente esta vantagem, já valeria a pena a sua utilização. No entanto, a separação das camadas MVC permite ainda que novas fontes de dados e novos tipos de clientes sejam facilmente adicionados à aplicação. A figura 2 mostra os diferentes elementos implementados em uma aplicação MVC e suas interações.

Figura 2. Elementos de uma aplicação MVC

Por causa destas características, o padrão arquitetural MVC, também conhecido como Model 2, tornou-se muito popular entre os desenvolvedores da comunidade Java. No entanto, a implementação da arquitetura MVC introduz complexidade no ciclo de desenvolvimento, porque surgem mais elementos (classes, jsps, xml’s, componentes, etc), fruto da separação de conceitos e melhor modularização. Observa-se também que o elemento de controle desta arquitetura, uma vez implementado e testado, pode ser reutilizado em outras aplicações.

Os componentes de interface vinculados à arquitetura fomentam a produtividade por serem altamente reutilizáveis. Já na camada de negócios, há pouca reutilização entre aplicações distintas, devido às peculiaridades dos requisitos dos domínios de negócio. Mesmo assim, os frameworks devem fornecer meios para que as rotinas de negócio sejam invocadas, recebam parâmetros, retornem mensagens e exceções.

As melhores práticas dos blueprints da Sun Microsystems recomendam que aplicações J2EE para a WEB sejam implementadas com base em algum framework MVC e o Struts foi citado várias vezes como uma alternativa robusta para isso.

O Apache Struts é o mais popular entre os frameworks MVC, com maior número de projetos nele baseados. O JavaServer Faces, por sua vez, vem surgindo como um framework MVC muito flexível e produtivo, componente da futura especificação J2EE 5.0, tendendo a ser um substituto natural do Struts em novas aplicações. Como podemos observar na figura 3, JSF e Struts são baseados nos componentes de desenvolvimento Web da plataforma J2EE. Nos tópicos seguintes, estes dois frameworks serão apresentados como sólidas implementações da arquitetura MVC.

Figura 3. JSF, Struts e os componentes Web J2EE


Bom pessoal, esta é a primeira parte deste artigo!

Logo mais estaremos disponibilizando a continuação.

Abraços e até o próximo artigo.

Este artigo é a parte 1 de 3 da seguinte série: