Artigo no estilo: Curso

Por que eu devo ler este artigo:Nesse artigo será desenvolvida do zero uma aplicação para gerenciamento de bibliotecas, utilizando JSF, JPA e CDI, mostrando como integrar essas três tecnologias em um projeto.

Para isso, serão abordados recursos como o PhaseListener do JSF, as anotações @Inject, @Produces, @Disposes e @Interceptor relacionadas ao CDI, como criar e mapear entidades usando JPA, dentre outras coisas. Como servidor de aplicação, adotaremos o JBoss WildFly, destacando como configurá-lo. Além disso, adotaremos o Java 8 e alguns dos seus novos recursos, como a nova API para manipulação de datas.

Se olharmos para a plataforma e para a linguagem Java desde as primeiras versões, podemos notar uma enorme evolução. Com o passar dos anos foram surgindo diversas tecnologias, frameworks e especificações que fazem parte desse longo e contínuo processo evolutivo.

Nesse artigo iremos conhecer um pouco mais sobre três importantes especificações Java: JSF, JPA e CDI, e desenvolver uma aplicação que utilize implementações dessas especificações para vermos como funciona a integração entre elas.

Nesse contexto iremos entender porque surgiram, quais vantagens trazem e quais tipos de problemas resolvem.

A aplicação que será desenvolvida ao longo do artigo serve para fazer o gerenciamento de uma biblioteca. Nela poderão ser gerenciadas, por exemplo, as informações das editoras, dos livros, dos leitores, dos funcionários da biblioteca e dos empréstimos dos livros.

Especificações Java

Foram citadas três especificações Java no texto introdutório deste artigo, mas quem está começando a programar nesta linguagem pode não estar familiarizado com o termo “especificação”. Então, o que seria isso?

Em meio ao processo evolucionário do Java, muitas vezes uma grande ideia acaba tendo mais de uma implementação. Foi justamente isso que aconteceu quando surgiu a proposta de se ter um framework ORM (Object-Relational Mapping).

Relacionadas a essa proposta vieram implementações como Hibernate, EclipseLink, OpenJPA, entre outras.

Para que exista uma padronização entre essas implementações é definida uma especificação, que nada mais é do que um documento que garante que todas elas tenham um comportamento igual ou bem semelhante e que contemplem as funcionalidades especificadas.

No caso dos frameworks ORM foi criada a especificação JPA. Dessa forma, se a implementação que está sendo usada em algum projeto começa a apresentar bugs ou é descontinuada, podemos trocá-la por outra sem muito esforço.

Às vezes, no entanto, as implementações surgem antes da especificação. Assim, para manter a padronização, as implementações passam por mudanças para se adequar ao que foi determinado. Um bom exemplo é o Hibernate, que surgiu antes da especificação JPA.

Para quem tiver interesse em saber mais sobre o processo de criação das especificações, recomendamos consultar o site do Java Community Process (JCP).

Sobre o JSF

O JSF pode ser definido como um framework MVC padrão para construir interfaces com o usuário baseadas em componentes para aplicações web.

A especificação JSF dita como deve funcionar esse framework. Deste modo, cada implementação do JSF, como o Mojarra e o MyFaces, agrega as funcionalidades do framework sempre indo ao encontro da especificação.

O JSF surgiu de uma necessidade de termos uma ferramenta mais simples, eficaz e produtiva no que sei refere à criação de interfaces gráficas para aplicações web. Atualmente, inclusive, conseguimos criar soluções web com recursos visuais complexos de forma simples ao adotar, por exemplo, o PrimeFaces, uma das bibliotecas de componentes mais famosas para JSF.

O PrimeFaces possui centenas de componentes ricos que podem ser adicionados facilmente à aplicação, porém nesse artigo não vamos utilizá-los, pois iremos nos ater aos componentes padrões do JSF.

Além de o JSF facilitar muito a criação da interface gráfica, ele provê uma maneira padrão de solucionar problemas comuns que encontramos durante o desenvolvimento de aplicações web, a saber: validações, conversões, criação de templates, etc.

Antes de chegarmos à origem do JSF, vamos voltar um pouco mais no tempo e olhar para as tecnologias que o antecederam.

...
Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora