Artigo no estilo Mentoring
Para isso, serão expostos os erros mais comuns que programadores web enfrentam em seu dia-a-dia e os padrões mais adequados para resolvê-los. Apresentaremos, por exemplo, abordagens para solucionar problemas de performance, acoplamento demasiado dos componentes e duplicidade de código dentro de um sistema web.
Deste modo, esse artigo é útil tanto para desenvolvedores que já possuem certa experiência em JSF, procurando aprofundar seus conhecimentos, como, também, para desenvolvedores iniciantes nessa tecnologia, que buscam os melhores padrões de design para construir uma aplicação robusta e performática.
As aplicações web são partes fundamentais do sistema de qualquer empresa. Elas oferecem uma solução prática para a criação da interface gráfica com o usuário sem a necessidade de uma dependência de hardware e de instalação do lado do cliente, possibilitando uma maior mobilidade, facilidade de acesso e menor custo para um sistema corporativo.
Trazendo essas vantagens para a linguagem Java, a tecnologia JavaServer Faces, ou JSF, surgiu como uma alternativa ao antigo JSP, tecnologia até então tida como padrão para a implementação de aplicações Web em Java.
Proporcionando muitas funcionalidades novas e uma API de fácil uso, o JSF ganhou e ganha cada vez mais espaço no mercado, se tornando uma das mais utilizadas tecnologias de hoje em dia.
Além disso, o framework JSF implementa o modelo MVC (Model-View-Controller), ou seja, permite que sejam facilmente definidas as camadas de modelo, visão e controle dentro de sua aplicação, garantindo um desacoplamento das funcionalidades e uma simplicidade maior para a manutenção de seu aplicativo.
Porém, mesmo com todas essas vantagens, ainda é necessária uma análise profunda da plataforma JSF e um desenvolvimento cuidadoso, com muita atenção aos detalhes e aos padrões a serem utilizados, para se conseguir um bom resultado.
Dito isso, o objetivo deste artigo será, a partir dos problemas mais comuns enfrentados pelos desenvolvedores, expor soluções reais em que a tecnologia JSF poderia ser utilizada e, a partir do desenvolvimento de uma aplicação exemplo, demonstrar os erros mais frequentes que o desenvolvedor deve evitar e as melhores práticas para solucioná-los.
Evitando erros nas nossas aplicações
Não é novidade que as vantagens de um sistema websão numerosas e bastante atrativas para qualquer empresa. É corriqueiro, portanto, que desenvolvedores se deparem com projetos de migração dos mais diversos sistemas para uma plataforma online, sendo a tecnologia JSF uma das grandes favoritas na implementação dessas novas aplicações.
Porém, da mesma forma que é comum o desenvolvimento em JSF, também é comum a ocorrência de equívocos por parte dos programadores na construção de seus sistemas, levando a problemas de performance no funcionamento da aplicação e na navegação do usuário.
Deste modo, nosso artigo terá como objetivo demonstrar alguns dos erros mais comuns que podem ser vistos no dia a dia e, também, mostrar algumas abordagens para resolvê-los.
Para isso, exemplificaremos as melhores práticas a serem adotadas analisando tópicos de arquitetura, padronização, performance, consistência de dados e outros pontos importantes para o desenvolvimento de um sistema em JSF.
Assim, ao final do artigo, será possível ao leitor ter uma ideia abrangente das diversas possibilidades que o framework JSF proporciona e quais as melhores alternativas para desenvolver uma aplicação robusta, através de boas práticas e padrões de mercado.
Arquitetura – Os primeiros e mais importantes passos de sua aplicação
Para iniciar nosso exemplo, antes de mais nada, é necessária uma análise aprofundada de como iremos “desenhar” nossa aplicação, ou seja, definir qual padrão arquitetural iremos seguir para nosso sistema.
A fase de arquitetura e definição dos componentes de um projeto é uma das etapas mais importantes e, muitas vezes, pode definir logo de início o sucesso ou o fracasso deste.
Arquitetura em camadas e a reutilização de componentes
Para começar nossa discussão sobre o padrão arquitetural a ser escolhido, um ponto a ser levado em conta dentro de um sistema corporativo e, principalmente, em um sistema web, é a divisão do mesmo em camadas.
Essa separação permite um desacoplamento maior dos componentes, podendo esses serem modificados e reutilizados sem grandes impactos e alterações no resto do sistema ou, até mesmo, em outros projetos.
Demonstramos alguns exemplos desse tipo de solução na Figura 1, onde são abordadas duas soluções arquiteturais diferentes: uma dividida em três camadas e outra sem as camadas claramente divididas.
Figura 1. Arquitetura em três camadas e em uma única camada.
Ao analisar essas opções podemos observar que os componentes do JSF, ou seja, as páginas web, as Faces Servlets e os Managed Beans, são os mesmos em ambas as soluções. Eles representam, dentro de nossa arquitetura Web, uma divisão denominada MVC, ou Model-View-Controller, que se caracteriza por desacoplar os componentes responsáveis pelo layout da página, controle de navegação e representação de dados, separando os conceitos e responsabilidades de cada um.
No entanto, ao analisarmos, na Figura 1, nossos Managed Beans, vemos
que, enquanto na arquitetura de três camadas eles são responsáveis somente por se
comunicar com a camada de negócios, na arquitetura de uma única camada eles são
responsáveis por, além dessa comunicação, cuidar do ge ...