Do Spring para o JEE

Por que praticamente abandonei o Spring em minhas aplicações? 

Basicamente, sempre fui uma pessoa muito organizada e por isso passei a me incomodar com coisas do tipo "será que todo mundo usa isso também?". Pode parecer um tanto quanto senso comum, querer ser igual aos outros, mas eu considero isso como a chave da minha organização pessoal, chamo também de padronização.

Mas o que isso tem a ver com o Spring ou o JEE? Bom, por querer sempre padronizar naturalmente quando conheci o potencial embarcado na versão 6 do framework JEE decidi que era hora de passar a pensar em um mundo mais aberto, onde nem só de XML vive o homem.

Claro que minha primeira pesquisa foi: “segurança JEE” e ai vieram as dúvidas. Por que do “claro” no começo desta frase? Explico, JEE é pobre no quesito segurança, ou você faz tudo na mão ou usa um framework tipo.. uhmm… errr… ahh.. o Spring.

Meus primeiros motivos para sair do Spring forma o barramento de eventos do JEE e a integração natural do JSF com o CDI, isso pra mim já bastava e supria todas as necessidades. Mas e a segurança? Não ia valera a pena refazer tudo utilizando jAAS.

Foi quando desisti, após ter migrado para o Spring 4 e visto que as API's de configuração via annotations aboliram de vez os XML's do meu resources que confirmei que não queria mais migrar para o JEE, porém, em uma pesquisa para um projeto do trabalho onde fui incumbido de usar JEE acabei por encontrar o Picketlink, um majestoso framework de segurança que tinha o formato exato do espaço que sobrava no meu quebra cabeça.

Estudei ele por alguns dias, ainda na versão 2.6, entendi que já vinha com módulo no meu servidor de aplicação, o wildfly e ainda por cima estava sendo desenvolvido em conformidade com o que vinha sendo especificado para a nova API de segurança do JEE 8, ou seja, tudo para ser um RI assim como seu irmão de criação, o Weld.

Basicamente, o PL me trouxe muitas coisas como o Spring já trazia. Configurações por annotations, authorization e authentication, um modelo de tabalho baseado nos conceitos de DDD, enfim, uma série de coisas que ainda não havia no Spring e outras que eu pensava em não abandonar quando usava Spring.

Mas o que me fez realmente decidir por ele:

“Fully Integrated With CDI”

Cara, isso é magia! É lindo! JSF ingrado com o framework de segurança sem nenhum problema, workaround, adaptador, código para fazer coisas que os programadoras do frame deveriam ter feito, enfim, era lindo.

Minha experiência com o PL

Atualmente o PL esta sendo “mergeado” com o Keycloak, outra ecosistema de segurança da Jboss, porém ele ainda será mantido da forma como ele é hoje. Assim, o desenvolvimento ainda ocorre porém esta um pouco lento… Mas acontecendo!

Posso dizer que ele funciona muito bem, estável, rápido e integrado com tudo que o JEE oferece. O suporte no fórum da comunidade é meio (beeeemmm) lento, poucas pessoas usam ele da forma como eu estou usando (creio eu) mas ainda assim super recomendo pelas funcionálidades apresentadas.

Outra coisa são os exemplos, muito bem feitos e bem completos disponibilizados plea galera da Jboss, com cenários bem cotidianos (veja aqui o Git com os exemplos).

Mas chega de falar, vou mostrar algo que pode ajudar você a decidir por ele. Lembra dos arquivos de configuração do Spring? Bom, eu nem lembro, migrei para annotations assim que possível! Eeheheh mas vou deixar aqui dois códigos do meu projeto webBudget, onde hoje uma era Spring (versão 1.x.x) e agora uma era JEE com Pickelink (versão 2.x.x), vejam:

Parecido né? A essência da coisa é a mesma, apenas mudamos que o PL tem algumas particularidades (como o identity model) e é mais padronizado (com o padrão do JEE)

Algumas referências que usei no meu processo "migratório":

E ai, vamos migrar? 

@gregorioarthur