ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino1 ¹Universidade Paranaense (Unipar) Paranavaí – PR – Brasil [email protected] [email protected] Resumo. Este artigo apresenta alguns frameworks que podem aumentar a produtividade e agilizar o desenvolvimento de software, embora para ter esse ganho, deve-se utilizar os frameworks de forma correta. Como existe uma grande variedade, devemos analisar o contexto de desenvolvimento da aplicação, para sim obter o resultado desejado, serão apresentados os frameworks que estão em maior evidência e utilização no mercado. Todo o conteúdo foi pesquisado através de livros, e-books, apostilas, blogs, sites e fórum. Com a utilização dos frameworks o software acaba sendo desenvolvido de forma mais rápida e com qualidade. 1. Introdução A evolução dos softwares, tem crescido de forma precoce, com esse avanço tecnológico surgiram alguns frameworks que auxiliam no desenvolvimento desses produtos computacionais. Sua função é dar agilidade para o desenvolvedor, pois eles já estão prontos e possuem código aberto, conforme a necessidade do projeto o desenvolvedor define qual framework ele irá utilizar. Segundo a definição de [Oliveira, 2005], um framework é uma solução para um conjunto de problemas em comum, sendo possível utilizá-los tanto em classes e interfaces, pois é considerado como uma solução quase completa. Podemos observa que softwares de pequeno, médio e grande porte podem fazer uso de frameworks, vale lembrar que não existe o termo “esse framework é o melhor entre todos os existentes no mercado”, pois cada um deles serve para uma funcionalidade específica. Serão apresentados os frameworks Maven, JSF (Java Server Faces), PrimeFaces, CDI (Context and Dependency Injection), Hibernate e Spring Security, explicando suas funcionalidades para cada um deles dentro de um aplicação web. 2. Metodologia Para a realização deste trabalho foi produzido uma extensa revisão bibliográfica em blogs, e-books e feedback de profissionais da área. O objetivo foi apresentar cada um dos frameworks citados acima e como são seus comportamentos dentro de um software. 3. Desenvolvimento 3.1. Repositório Maven O Maven é uma ferramenta que faz o gerenciamento de bibliotecas que o projeto irá utilizar, ele surgiu dá necessidade que havia em grandes projetos, pois as equipes de desenvolvimento, perdiam muito tempo procurando as bibliotecas corretas para adicionar no projeto e as vezes algum desenvolvedor não estava com a biblioteca correta e não conseguia executar o projeto. Ele é configurado por meio do arquivo pom.xml (Project Object Model) no mesmo declaramos o tipo de empacotamento, suas dependências, repositórios de onde as dependências serão buscadas, podendo ser tanto repositórios locais ou remotos. Segundo [Mkyong, s.d.], Maven, é uma ferramenta inovadora de gerenciamento de projetos de software, tendo sua característica principal de ser capaz de baixar as bibliotecas de dependência automaticamente. 3.2. JSF (Java Server Faces) O JSF é um framework web MVC (Model-View-Controller) utilizado mundialmente e referência para aplicações web, pois define um conjunto de componentes de interface que podem ser mesclados com HTML5, CSS, componentes de regra de negócio e persistência dos dados com EJB (Enterprise Java Beans), CDI (Contexts and Dependency Injection), dá suporte à conexão com o banco de dados e faz a gerência da camada de controle da aplicação com isso torna-se uma arquitetura flexível buscando simplificar e padronizar a estrutura do projeto. Segundo [Melo Jr, 2007], o MVC é uma estratégia de projeto que visa a separação de camadas de software, implementando um use-case interativo em três componentes: Model (modelo): É responsável para manipular os dados, e não alterar o estado da View e fornecer os valores alterados da mesma. View (visão): Responsável por capturar as ações do usuário e se comunicar com o Controller. Controller (controle): Recebe solicitações da View, chama as regras de negócio necessárias, comanda a alteração do estado do Model e a atualização das informações exibidas na View. Na Figura 1 é exibido a forma que os três elementos interagem entre si. Figura 1 – MVC. Fonte: [GAMA, 2011] 3.3. PrimeFaces suíte para JSF O PrimeFaces é um framework que contém seu código aberto que conta com diversos componentes, sendo todos personalizáveis da forma que o desenvolvedor desejar utilizar juntamente com JSF que implementa também as tecnologias AJAX e JavaScript. O que torna o PrimeFaces um framework muito utilizado é o fato dele disponibilizar um showcase com exemplos práticos de como utilizar seus componentes, exibindo várias formas de trabalhar com os componentes, desta forma estimula o desenvolvedor a aprender sozinho e não ficar limitado por não saber como implementar o componente que ele deseja utilizar. Segundo [PrimeFaces, s.d.], este framework é uma biblioteca leve que faz com que as decisões tomadas mantenha-a leve, normalmente com a adição de terceiros podem sobrecarregar a biblioteca, embora este não é o caso desta. 3.4. CDI (Context and Dependency Injection) Este framework permiti que qualquer um dos objetos gerenciados sejam acessíveis diretamente por uma interface de JSF ou JSP através de Unified Expression Language, dá mais flexibilidade para o desenvolvedor implementar, possuindo um novo contexto web, integrando ao Request, Application e Session, chamado de Conversation. Segundo [Lazarotti, s.d.], podemos realizar a injeção de três formas: injeção por atributo, por método set ou por construtor. Em qualquer modo é possível utilizar o qualifiers para resolver a ambiguidade na injeção. 3.5. Hibernate O Hibernate é um framework para mapeamento objeto relacional para Java, pois ele faz a transformação dos dados de um objeto se tornarem uma única linha no banco de dados, ou inversamente, a linha do banco de dados se torna um objeto. [K19, s.d.] O interessante deste framework é que através dele tem a possibilidade de construir consultas orientadas a objeto utilizando HQL (Hibernate Query Language), bem parecida com SQL. 3.6. Spring Security É um framework open source utilizado para a segurança do software, segundo o conceito do autor [Zanini, 2009], o Spring Security surgiu com a finalidade de melhorar o suporte à segurança oferecido pela especificação Java Enterprise Edition e centraliza a configuração em um único XML, dispensando configurações do container e tornando a aplicação web um arquivo WAR auto contido. 4. Considerações Finais A utilização de frameworks agiliza o desenvolvimento do software, mas primeiramente deve-se analisar quais são as necessidades do projeto, para fazer uso dos mesmos. Observamos que a produtividade dos projetos que utilizam frameworks são maiores, pois os mecanismos oferecidos pelos frameworks já estão prontos e geralmente só precisam de algumas modificações para sanar a necessidade do produto computacional que está sendo desenvolvido. Já os projetos que não fazem uso de frameworks não conseguem as mesmas funcionalidades no mesmo intervalo de tempo de desenvolvimento, porém 99,9% o tempo será muito maior para desenvolver estas funcionalidades, frisando também que para a contratação de desenvolvedores as empresas tem como requisito que os mesmos conheçam no mínimo os frameworks utilizados no projeto. 5. Referências Gama, A (2011). MVC Simples e Prático, Parte I. <http://www.k19.com.br/artigos/mvc-simples-e-pratico-parte-i/> 20/08/2014. Disponível Acesso em: em: K19 (s.d.). Configurando Hibernate com MySQL. Disponível em: <http://www.k19.com.br/artigos/configurando-hibernate-com-mysql/> Acesso em: 27/08/2014. Lazarotti, A (s.d.). CDI Injeção de Dependência e Gerenciamento de Contextos no Java EE 6. 37p. Melo Jr, C. S (2007). Guia do Java Enterprise Edition 5: desenvolvendo aplicações corporativas. 5. ed. Rio de Janeiro: Brasport. Mkyong (s.d.). Maven tutorial. Available on: <http://www.mkyong.com/tutorials/maven-tutorials/>. Acess: September 27. 2014. Oliveira, E. C. M (2005). O universo dos Frameworks Java. Disponível em: <http://www.linhadecodigo.com.br/artigo/758/o-universo-dos-frameworksjava.aspx>. Acesso em: 20/08/2014. PrimeFaces (s.d.). PrimeFaces ultimate JSF comonent suite. Available on: <http://www.primefaces.org/>. Acess: September 27. 2014. Zanini, M (2009). Spring Security. Disponível em: <http://www.devmedia.com.br/websys.5/webreader_print.asp?cat=6&artigo=1591& revista=impressao_69#a-1591>. Acesso em: 20/08/2014.