Qual uma boa alternativa ao VRaptor 4 exceto o ecossistema Spring?

133 views
Skip to first unread message

Daniel Lucena

unread,
May 20, 2020, 1:30:39 PM5/20/20
to caelum-vraptor
Boa tarde,

O ecossistema Spring é fantástico, bem completo e está na ativa. Eu recomendo para novos projetos, porém, para projetos já construídos com VRaptor, a substituição tem forte impacto visto que na configuração padrão do Spring ele usa seu próprio DI.
Alguém poderia indicar alguma alternativa ao VRaptor 4 e Spring que possui a mesma forma facilitada de construir Controllers e Services, porém que use CDI?

Toda sugestão é bem vinda e pode ajudar quem não pode mais esperar um posicionamento do Caelum.

Manoel Campos

unread,
May 20, 2020, 2:49:15 PM5/20/20
to caelum-...@googlegroups.com
Você pode implementar controllers REST usando a API JAX-RS e realizar injeção de dependências com CDI.
Um framework fantástico que juntamente com a GraalVM tem revolucionado o mundo Java é o Quarkus.
Migrei de VRaptor pra ele e o nível de produtividade e desempenho é simplesmente sem precedentes na plataforma Java.

O projeto na verdade junta um monte de tecnologias consolidadas como Hibernate, CDI, JAX-RS, JSON-B, JSON-P, etc. 
Tem suporte a microprofile e inúmeras outras tecnologias como OpenAPI (Swagger), Jaeger (OpenTracing) e várias outras em uma distribuição onde tudo foi costurado para trabalhar em conjunto sem conflitos.
Para estas bibliotecas nativamente suportadas, você precisa se preocupar apenas com a versão do Quarkus.
Ele incluirá a versão correta da biblioteca desejada que irá funcionar sem dores de cabeça.

O inferno de lidar com inúmeros arquivos de configuração também acabou. Para as bibliotecas suportadas, as configurações da aplicação inteira ficam em um único arquivo application.properties, incluindo configurações do Hibernate e outras.

Ele já embutido um servidor web, assim, podemos fazer deploy de um único jar.
Mas ainda permite compilar o projeto para um executável nativo usando a GraalVM. Desta forma, você pode incluir sua aplicação em um container sem precisar da JVM.

Uma aplicação com Hibernate inicia em uma fração de segundos e o hotdepoy é simplesmente incrível. Você salva, atualiza o browser e pronto. Parece que está programando em Node.js, PHP, python, etc.

Se você usa Hibernate, vai ficar vislumbrado com a simplicidade proporcionada pela biblioteca Panache, que faz mágica.
A documentação no site oficial é excelente e você pode começar a criar projetos em https://code.quarkus.io.
Mas IDEs como IntelliJ e até mesmo o VS Code tem plugins para o Quarkus.

Alguns exemplos de aplicação para você conferir:
E se quer ver um app de exemplo completa, com frontend em JS puro, dá uma olhada nesse projeto que fiz pra reportar uma issue.

Manoel Campos da Silva Filho Software Engineer

Computer Science and Engineering Ph.D. Student at University of Beira Interior (Portugal)

Professor at Federal Institute of Education, Science and Technology of Tocantins (Brazil)

http://manoelcampos.com


 about.me


--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/caelum-vraptor/8d85903f-3325-4b21-bb1f-e8a9ec837321%40googlegroups.com.

Leonardo Torres

unread,
May 20, 2020, 4:15:34 PM5/20/20
to caelum-...@googlegroups.com
Depois dessa descrição do Manoel Campos, fica até complicado sugerir outras ferramentas. rs 



--
Obrigado
Leonardo Torres.

"Vocês me procurarão e me acharão quando me procurarem de todo o coração".
Jr 29:13


JSL Soluções

unread,
May 20, 2020, 5:17:48 PM5/20/20
to caelum-vraptor
Minha sugestão é aderir a plataforma/spec JEE8+ e desenvolver voltado a uma especificação e não a uma implementação, independente do seu ambiente de execução. O mais aproximado que tem do VRaptor na plataforma é a Spec MVC 1.0 que é relativamente nova, mas já é bem poderosa, pois estende as funcionalidades da especificação JAX-RS. A plataforma está numa crescente grande com as specs antigas e novas de nome JakartaEE com muita novidade. Quanto ao ambiente de execução são vários: Glassfish,TomEE (se voce gosta de tomcat), Apache Liberty, Wildfly (Jboss se quiser algo mais corporativo), etc. Eu particularmente uso Wildfly 19+. A maioria das grandes APIS se já não estão vai fazer parte da plataforma em breve entao compensa no momento esperar um pouquinho. Eu espero que o colega ali quando disse Hibernate se refira ao JPA2 pois definitivamente fuja da implementação pura de Hibernate. Quanto ao Quarkus vi algumas palestras e realmente parece ser bem legal, mas se nao me engano tinha varias limitações em que as implementações era todas modificadas (evitar códigos de boot,etc) para pode funcionar nele na velocidade absurda que funciona, o que me deixou um pouco com o pé atras de ser um fork das implementações oficiais. Não sei se isso mudou de lá pra cá, mas é algo a se considerar.

Manoel Campos

unread,
May 20, 2020, 5:31:29 PM5/20/20
to caelum-...@googlegroups.com
Eu espero que o colega ali quando disse Hibernate se refira ao JPA2 pois definitivamente fuja da implementação pura de Hibernate.
Exatamente. A especificação, não a implementação.
 
Quanto ao Quarkus vi algumas palestras e realmente parece ser bem legal, mas se nao me engano tinha varias limitações em que as implementações era todas modificadas (evitar códigos de boot,etc) para pode funcionar nele na velocidade absurda que funciona, o que me deixou um pouco com o pé atras de ser um fork das implementações oficiais. Não sei se isso mudou de lá pra cá, mas é algo a se considerar.
Nunca vi nada falando de fork das implementações e sigo o quarkus desde antes da versão 1.0.
Você tem alguma referência? Palestra no YouTube?
O que sei é que o Quarkus no lugar de usar Reflection (porque é muito lento), realiza alterações no bytecode em tempo de build e assim consegue esta velocidade absurda.

No repositório no GitHub não parece ter código que seja fork desses outros projetos. Por exemplo, em https://github.com/quarkusio/quarkus/tree/master/extensions/hibernate-orm parece ser apenas código do Quarkus,
principalmente pelos autores das classes. 

JSL Soluções

unread,
May 20, 2020, 6:09:06 PM5/20/20
to caelum-vraptor
Não vou me lembrar agora, era palestra bem antiga disponibilizada no Youtube de um dos core commiters bem no começo do projeto. Mesmo que seja uma versão estendida fucando todo o core do hibernate (por exemplo) ainda dependo dos caras otimizarem e manterem todas as versões dos vendors certo ? Isso vale pra todas as libs ? EclipseLink por exemplo consigo usar ? Ou fico preso ao hibernate ?

Renato Resende Ribeiro de Oliveira

unread,
May 21, 2020, 5:41:43 AM5/21/20
to caelum-...@googlegroups.com
Eu tentei vários frameworks e meu conselho na verdade tem um viés mais prático. Eu iria definitivamente de Java EE (com JAX-RS), Jakarta ou Spring Boot.
Isso porque frameworks são meio que a base do seu sistema, quanto mais eles forem usados, mais manutenção recebem e é muito mais fácil encontrar profissionais no mercado que já são produtivos com eles.
Com VRaptor, apesar de ser um framework muito fácil de se aprender, ainda tive alguns problemas de curva de aprendizagem de juniors e estagiários, sem falar que nunca encontrei um profissional no mercado que soubesse usar o VRaptor antes de começar a trabalhar comigo.

De modo geral é por isso que algumas empresas gostam de se ater a tecnologias enterprise e que tem suporte ativo.
De certa forma o Jonatan tem razão, se você for começar um projeto que terá um ciclo de vida longo (mais de cinco anos) definitivamente vá na linha da Spec e/ou nos frameworks mainstream. Pessoalmente já fiz um projeto com JAX-RS e acho ele até melhor que o VRaptor em alguns pontos (eu só usava APIs REST no VRaptor).
Spring Boot é ridiculamente produtivo, eu basicamente aprendi ele e fiz um sistema web com uns 15 endpoints e mais umas 3 telas em dois dias, nunca tinha usado ele antes.
O Jakarta eu nunca usei, mas o que vi dele me interessou bastante, principalmente porque gosto muito da filosofia geral do projeto.

Espero ter ajudado.
Att.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.


--
Renato Resende Ribeiro de Oliveira
Senior Software Engineer @ Edvisor.io
MSc - Computer Science - Universidade Federal de Lavras
PMP - Project Management Professional

Skype: renatorro.comp.ufla.br

Renato Resende Ribeiro de Oliveira

unread,
May 21, 2020, 5:44:52 AM5/21/20
to caelum-...@googlegroups.com
Ah, e só pra constar, tenho quase certeza que você consegue usar CDI com Spring (mas não recomendo).

Para facilidade de migração, vá de Java EE (JAX-RS), você só precisará mudar os controllers praticamente (e interceptors pois a API de interceptor é diferente).
Fora isso o resto é 99% igual, se você não tiver muita customização no VRaptor a migração é bem fácil.

Att.

Manoel Campos

unread,
May 21, 2020, 9:20:49 AM5/21/20
to caelum-...@googlegroups.com
Mesmo que seja uma versão estendida fucando todo o core do hibernate (por exemplo) ainda dependo dos caras otimizarem e manterem todas as versões dos vendors certo ?
Aparentemente sim, mas como temos grandes empresas como a RedHat por traz, o suporte tem sido muito bom
e a lista de contributors é enorme.
 
Isso vale pra todas as libs ? EclipseLink por exemplo consigo usar ? Ou fico preso ao hibernate ?
Você pode, mas perderá os benefícios das otimizações do Quarkus. Desde que você use apenas a especificação JPA, não vejo problemas em ficar no Hibernate, já que ele é um projeto mais que consolidado.
 

Daniel Lucena

unread,
May 23, 2020, 1:53:11 AM5/23/20
to caelum-vraptor
Excelente descrição Manoel. Vou considerar o Quarkus.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-...@googlegroups.com.

Daniel Lucena

unread,
May 23, 2020, 1:55:58 AM5/23/20
to caelum-vraptor
Obrigado Renato,

Vou considerar todas as opções e fazer algumas provas de conceito.

Obrigado.


Em quinta-feira, 21 de maio de 2020 06:41:43 UTC-3, Renato Resende Ribeiro de Oliveira escreveu:
Eu tentei vários frameworks e meu conselho na verdade tem um viés mais prático. Eu iria definitivamente de Java EE (com JAX-RS), Jakarta ou Spring Boot.
Isso porque frameworks são meio que a base do seu sistema, quanto mais eles forem usados, mais manutenção recebem e é muito mais fácil encontrar profissionais no mercado que já são produtivos com eles.
Com VRaptor, apesar de ser um framework muito fácil de se aprender, ainda tive alguns problemas de curva de aprendizagem de juniors e estagiários, sem falar que nunca encontrei um profissional no mercado que soubesse usar o VRaptor antes de começar a trabalhar comigo.

De modo geral é por isso que algumas empresas gostam de se ater a tecnologias enterprise e que tem suporte ativo.
De certa forma o Jonatan tem razão, se você for começar um projeto que terá um ciclo de vida longo (mais de cinco anos) definitivamente vá na linha da Spec e/ou nos frameworks mainstream. Pessoalmente já fiz um projeto com JAX-RS e acho ele até melhor que o VRaptor em alguns pontos (eu só usava APIs REST no VRaptor).
Spring Boot é ridiculamente produtivo, eu basicamente aprendi ele e fiz um sistema web com uns 15 endpoints e mais umas 3 telas em dois dias, nunca tinha usado ele antes.
O Jakarta eu nunca usei, mas o que vi dele me interessou bastante, principalmente porque gosto muito da filosofia geral do projeto.

Espero ter ajudado.
Att.

Em qua., 20 de mai. de 2020 às 15:09, JSL Soluções <jon...@jslsolucoes.com> escreveu:
Não vou me lembrar agora, era palestra bem antiga disponibilizada no Youtube de um dos core commiters bem no começo do projeto. Mesmo que seja uma versão estendida fucando todo o core do hibernate (por exemplo) ainda dependo dos caras otimizarem e manterem todas as versões dos vendors certo ? Isso vale pra todas as libs ? EclipseLink por exemplo consigo usar ? Ou fico preso ao hibernate ?

Em quarta-feira, 20 de maio de 2020 18:31:29 UTC-3, Manoel Campos escreveu:
Eu espero que o colega ali quando disse Hibernate se refira ao JPA2 pois definitivamente fuja da implementação pura de Hibernate.
Exatamente. A especificação, não a implementação.
 
Quanto ao Quarkus vi algumas palestras e realmente parece ser bem legal, mas se nao me engano tinha varias limitações em que as implementações era todas modificadas (evitar códigos de boot,etc) para pode funcionar nele na velocidade absurda que funciona, o que me deixou um pouco com o pé atras de ser um fork das implementações oficiais. Não sei se isso mudou de lá pra cá, mas é algo a se considerar.
Nunca vi nada falando de fork das implementações e sigo o quarkus desde antes da versão 1.0.
Você tem alguma referência? Palestra no YouTube?
O que sei é que o Quarkus no lugar de usar Reflection (porque é muito lento), realiza alterações no bytecode em tempo de build e assim consegue esta velocidade absurda.

No repositório no GitHub não parece ter código que seja fork desses outros projetos. Por exemplo, em https://github.com/quarkusio/quarkus/tree/master/extensions/hibernate-orm parece ser apenas código do Quarkus,
principalmente pelos autores das classes. 

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-...@googlegroups.com.

Daniel Lucena

unread,
May 23, 2020, 2:01:23 AM5/23/20
to caelum-vraptor
Muito obrigado pelas sugestões. Anotadas.
Reply all
Reply to author
Forward
0 new messages