Live Itexto sobre JSF.

10 May 2019 » jsf, web, carreira, java (aproximadamente 6 minutos de leitura)

Introdução

Ontem, 09/05/2019, gravamos para o PodCast da Itexto com Kico Lobo,Rafael Ponte, Ivan Queiroz, Thiago Jalis, Cleison Ferreira, Miguelângelo Rocha e Ricardo Vianasobre JSF (Java Server Faces) e seu uso atual. O bate papo durou por volta de 02:30 (duas horas e meia) mas foi muito bacana porque compartilhamos experiência e conhecimento.

Kico e Rafael, eu já conhecia (Kico pessoalmente, Rafael apenas do mundo virtual). Ivan é meu amigo pessoal aqui de Salvador e os outros membros da live, conheci online.

Kico além de membro ativo da comunidade Java a muitos anos (e uma referência técnica para mim), é diretor técnico da Itexto, empresa mineira com sede em BH que trabalha com desenvolvimento de projetos, treinamento e consultorias. Thiago, Miguelângelo, Ricardo trabalham com Kico na Itexto. Os conheci ontem na Live.

Rafael Ponte, bem, quando Kico me convidou para falar sobre JSF, não tinha como fazer uma live sobre isso, sem “o cara” do JSF. Rafael provavelmente tem os posts mais clássicos sobre JSF e atemporais, por sinal. Cara entende muito, tanto de JSF, quanto hibernate e sempre que possível, trocamos algumas idéias. O site dele ainda está no ar, porém hoje ele posta mais no site da empresa atual dele, Triad Works

Ivan, além de amigo pessoal aqui de Salvador, é arquiteto na Indra e conhece muito de vários assuntos (técnicos ou não). Ele escreve também no blog dele.

Feito as devidas apresentações, tentarei sintetizar um pouco do que discutimos ontem.

Meu histórico com JSF

No meu caso, trabalho com JSF desde sua versão 1.1. Tinha expectativa de poder colocar o JSF 1.2 no primeiro projeto, mas isso ficou apenas no sonho. Esse projeto, em 2018, recebeu um aporte de modernização e por diversos fatores (técnicos e não técnicos), a decisão arquitetural foi que seria refeito usando JSF 2. Manunteção da base de código e expertise do time, foram fatores primordiais para a decisão. A expertise do time em JSF, significaria para o projeto redução de custos.

Hoje, atuo nesse projeto como arquiteto (apesar da arquitetura dele não ter sido definida/criada por mim) e sigo trabalhando. Em breve, Ivan se juntará a mim nessa saga também.

Trabalhamos em um projeto que atende todo jurídico da Telefônica, então não se trata de um sistema pouco utilizado. Ele é usado em ambiente corporativo, e não tem requisitos de uso de tela que demandem algo que o JSF não cubra. Pelo menos, até o momento…Sabemos como funciona escopo de projetos…rs

Uso corrente do JSF

Minha constatação, é que hoje, JSF se fechará e ficará restrito aos devs do mundo Java no sentido que dificilmente pessoas de outras tecnologias virão para o mundo Java para aprender JSF, como acontece com Ruby On Rails, por exemplo. Existe a confiabilidade do mundo corporativo tradicional na suíte Oracle, mas acredito que com a maturação do ambiente JavaScript (já estão caminhando para definir mudanças a partir de specs), e a preferência dos desenvolvedores por trabalhar com os chamados “frameworks Javascripts modernos”, o JSF deve se transformar em uma tecnologia de legado e poucos projetos novos sejam começados com essa stack em um ambiente “fora” do mundo Java.

Percebo que muitas empresas grandes utilizam JEE (JSF, EJB, JPA) e isso deve manter JSF como ferramenta de legado.

Como devemos aprender JSF?

Como todo framework, JSF trabalha para abstrair a complexidade para o desenvolvedor. Entretanto, ele roda na Web, e na web, não tem mágica. Necessário conhecer protocolo HTTP, o que é um request, o que é um response. Acho que esse post de Gabs Ferreira da Caelum/Alura, um bom início. A Casa do Código., tem um livro muito interessante sobre o tema.

Um caminho para quem vem do mundo Java, recomendo que antes de estudar JSF, entenda o que são Servlets e o que foram os JSPs. Essa apostila da Caelum também é muito bom sobre o tema.

A apostila da Caelum sobre JSF é um bom ponto de partida. Entretanto, antes de tudo, é importante entender conceitos básicos do JSF, e o principal dele é o ciclo de vida do mesmo.

Achei esse tutorial que é bem prático na explicação sobre o ciclo de vida.

JSF trabalha com binding como Angular ou React, mas de uma maneira diferente, então é importante entender esse conceito.

Outros tópicos interessante para aprender em JSF:

  • Validators (Beans Validation)
  • Converters
  • Navigation Rules
  • Integração com CDI

Encontrei esse site que fala um pouco sobre esses pontos.

Kico Lobo e o pessoal da Itexto, estão trabalhando na escrita de um livro JSF, e conhecendo a qualidade da escrita de Kico, acredito que teremos algo fundamentado e bem usual em breve. Fiquem atentos (cobrem ele no Twitter a publicação do livro!).

Após aprender JSF, sugiro que usem o Primefaces. A melhor biblioteca de componentes JSF disponível no mercado, na minha opnião. Atualmente está na versão 7.0 e evolui até mais rápido que o próprio JSF.

A galera da PrimeTech trabalha tao bem a parte de componentes que eles criaram o PrimeNG (angular) e o PrimeReact. E eles estão trabalhando no PrimeVue também!

Quando usaríamos JSF?

Diante do contexto, percebi que JSF será uma tecnologia focada no mundo Java e onde entrada de dados é o foco. Com primefaces é possível ir um pouco além desse contexto pois existem muitos componentes ricos e complexos disponíveis. Data grid com filtro, carrocel, gráfico e outras coi9sas complexas. Organograma, tree table, schedule. No showcase é possível conhecer a suíte disponível

Futuro JSF?

Estive em SP, entre 29/04 e 03/05 e lá, tive a oportunidade de ir a um evento onde Ed Burns, líder das especificações de Servlet e JSF, questionado sobre o futuro do JSF, não deixou muito claro se existe um futuro na especificação principal.

Na minha visão, como existe a espec para criação do MVC 1.0 que deve ser baseada em algo como o Spring trabalha, acredito que JSF não terá muita evolução. Exceto se algum grupo, empresa ou conjunto de invididuos assuma o projeto e trabalhe nele.

Conclusão

Uma tecnologia com um bom potencial, principalmente para times que não tem expertise em front end. Produtiva, porém com suas particularidades. Acredito que deve reduzir substancialmente, até no meio Java seu uso, principalmente pelo crescimento do Spring Boot que é “orientado a REST”, essencialmente. Pelo modelo altamente acoplado, JSF não permite reuso do Controller por outros dispositivos, como acontece em projetos com APIs.

Com a dica de Rafael, conheci o projeto BootFaces que é um framework que traz Spring Boot + JSF integrados. Não conheço ainda, mas ficou a curisoidade para testar.

  1. http://prevayler.org/
  2. https://rubyonrails.org/
  3. https://grails.org/
  4. https://www.djangoproject.com/

Site de Balusc, um dos maiores contribuidores do StackOverflow sobre JSF. Criador do Omie Faces.

  1. http://balusc.omnifaces.org/

Textos clássicos de Rafael Ponte

  1. http://www.rponte.com.br/2008/07/12/repitam-comigo-redirect-nao-e-forward/
  2. http://blog.triadworks.com.br/quando-usar-action-ou-actionlistener-com-jsf
  3. http://www.handersonfrota.com.br/os-10-maus-habitos-do-desenvolvedor-jsf-rafael-ponte/
  4. http://blog.triadworks.com.br/jsf-nao-coloque-processamento-caro-em-metodos-getters
  5. http://blog.triadworks.com.br/quando-usar-action-ou-actionlistener-com-jsf

Novidades JSF 2.3

  1. https://arjan-tijms.omnifaces.org/p/jsf-23.html

Bootfaces -

  1. https://www.bootsfaces.net/