VRaptor 3

28 respostas
Regis_A_Rocha

eai galera…

li a documentação do VRaptor 3 e comecei a fazer um sisteminha mais para treinar seguindo o exemplo do que foi disponibilizado no site…

o motivo do topico é mais para saber o que voces acharam do novo VRaptor?/

eu mesmo gostei mto achei mto legal, com varias facilidades, e fortemente OO, validaçoes td por codigo java, difrente de outros frameworks que tem que fazer muitas configuraçoes mto xml…

28 Respostas

yorgan

Também estou fazendo alguns testes para conhecer o Framewrok, mas estou com algumas dúvidas.
Como você está fazendo para chamar as variáveis das classes nas JSP?

Eu postei aqui o código que estou utilizando, mas não está dando certo.

[]´s

Daniel

Regis_A_Rocha

pelo que estava vendo seu problema ja foi resolvido…legal…

alem do Result

outra coisa legal do VRaptor seria o Validator

Paulo_Silveira

o que eu gosto bastante dessa versao nova é receber parametros e devolver argumentos normalmetne:

List<Aluno> consulta(String nome) {

}

Esse é um metodo muito normal: recebe parametros e devolve resultados, como qualquer outro! Nao ha diferenca entre web e nao web!

A injecao de dependencias via construtor e o Result e Validator sao otimos tambem. E as URLs que ficam todas bonitinhas!

Regis_A_Rocha

sim verdade msm… a injecaçao de depencias fico mto bom… i tbm varias outras coisas que ficaram mto bom

é parabens pra vc Paulo i pra toda equipe que participou do projeto ficou mto bom…

leosouzabh

Sem querer causar muita polemica…
Não conheço NADA do Vraptor mais ja ouvi falar dele, entao em resumo:
Porque usar VRaptor ? Quais as vantagens de usar vraptor em relação a JSF por exemplo ?

Regis_A_Rocha

pra vc entender pelo menos um pouco do VRaptor

http://vraptor.caelum.com.br/documentacao/vraptor3-o-guia-inicial-de-10-minutos/

Paulo_Silveira

leosouzabh:
Sem querer causar muita polemica…
Não conheço NADA do Vraptor mais ja ouvi falar dele, entao em resumo:
Porque usar VRaptor ? Quais as vantagens de usar vraptor em relação a JSF por exemplo ?

Ola Leo

Tentando definir um pouco

A grande diferenca é que JSF usa uma abordagem voltada a componentes visuais, como wicket, tapestry e ASP.NET. Normalmente sao focados em criar “aplicacoes”, onde os componentes visuais ja fazem muito do trabalho pesado da visualizacao, mas voce tem dificuldade para fazer acertos finos de html, javascript, etc, ja que quem gera tudo isso é o framework.

Ja o VRaptor é action based, mais focado no seu codigo e te dando liberdade na view, como o struts, webwork, ruby on rails, e o novo ASP.NET MVC. Vai muito das suas preferencias e objetivos. O VRaptor tambem tem uma comunidade grande no Brasil, que pode ser um bom diferencial (como voce pode ver aqui no forum, onde as duvidas sao rapidamente sanadas).

É mais ou menos isso :slight_smile:

Regis_A_Rocha

o jsf é um bom framework, para componentes visuais assim como disse o Paulo, por exemplo para criar uma aba, um calendario, muito simples, agora ja para codificaçao tem algumas coisas por exemplo que eu nao gostei, o codigo html fica mto sujo.
tive problemas tbm no managerBean com alguns atributos, nao consegui encherga-los na view…
bom, mais isso td tem formas para resolver, achu q é mais uma questao de gosto tbm e de necessidade

leosouzabh

Mtos boas justificativas…
Vou avaliar .
a versão 3 ja esta estavel ?

Lucas_Cavalcanti

a versão 3 está em Release Candidate…

a versão estável virá muito em breve

[]'s

yorgan

Eu estou testando ele justamente pelas características que foram expostas.
Acho o JSF muito bom, mas estou procurando algo que seja mais flexível com frameworks destinados exclusivamente a parte visual.

[]´s

Daniel

Paulo_Silveira

leosouzabh:
Mtos boas justificativas…
Vou avaliar .
a versão 3 ja esta estavel ?

Tem gente, alem da Caelum, usando o VRaptor 3 mesmo antes do beta 1, compilando do head do git!

Nos betas encontrmaos bugs, muitos relatados aqui no forum, e corrigimos todos. Agora, 5 betas depois, o RC1 é bastante estável. Em MUITO em breve deve sair a versão final, 3.0!

G

Só para constar, eu tenho uma aplicação usando EJB3 rodando encima do glassfish que possui módulo EJB separado da aplicação web. Toda a camada de negócio e persistência fica “enjaulada” no servidor, e a aplicação web apenas faz o papel de view e controller. O projeto todo roda em um cluster com 32 instâncias de VM, visto a complexidade da aplicação.

Usei o vraptor então apenas como controller. O vraptor já se mostrava muito rápido em sua versão 2, e continua muito rápido na 3. Mesmo o projeto envolvendo muitas regras de negócio e cada tela ter que fazer o lookup e serialização dos beans remotos, a aplicação está muito rápida.

A aplicação era em vraptor2 e já funcionava bem, agora estou migrando para vraptor 3 alguns módulos e está tudo funcionando muito bem, inclusive fiz testes no ambiente com cluster e funcionou quase perfeito. Digo quase porque quando alguma sessão vai entrar em passivate e trocar de container dá alguns bugs, mas já foi lançado esse erro aqui mesmo no guj.

Há pequenos bugs que apareceram durante a migração, mas aos poucos abrindo threads no guj tudo foi caminhando bem. Mas quando eu resolvi mexer no 3 eu já sabia que estava em rc, então era esperado um ou outro bug.

No inicio você tem um choque em estar acostumado com os tradicionais frameworks, mas logo que você usa o vraptor começa a acostumar-se e o melhor: acha que os outros frameworks são estranhos. Injeção de parametros e binds são fantásticos no vraptor. Se você quer usar algum objeto diferente basta criar facilmente um converter. Se quer que seu view-redirect seja diferente, basta fazer um e registrar. Tudo é muito fácil.

Acho que por isso curti muito o vraptor. Rapido para executar, simples para programar. Afinal, JSF não é nada produtivo (IMHO).

Regis_A_Rocha

o cara legal sua experiencia com VRaptor hein…

o sistema aparenta ter um complexidade grande msm…

e assim como o Paulo disse logo vai a versao final,
mais pelo jeito a rc ja esta bem estavel msm.

apesar de eu nao ter feito nenhuma aplicação nesse nivel ainda, pela doc…
deu pra perceber as facilidades msm…

concordo com vc em relação (" Injeção de parametros e binds são fantásticos no vraptor.").

GouverMXT

Não tenho vontade e ainda não precisei usar outro framework além do VRaptor, creio que só usaria JSF no lugar de VRaptor se for uma aplicação web que necessite de muitos elementos visuais complexos.

Regis_A_Rocha

se caso um dia precisar elementos visuais complexos…

pode tbm usar javaFx

GouverMXT

Regis A Rocha:
se caso um dia precisar elementos visuais complexos…

pode tbm usar javaFx

Sim. Ou uma biblioteca JS como JQueryUI etc… JSF realmente tá dispensável.

Regis_A_Rocha

JQueryUI nao conheço …

vou pesquisar mais sobre…

Emerson_Macedo

Usei o Vraptor 2 em alguns projetos em 2007 e posso garantir que foi uma ótima experiência. Produtividade boa e funciona muito bem. Vou fazer umas experiências com a versão 3 pra ver como está.

Parabéns !!!

lgi2020

Sempre gostei muito do VRaptor e seus conceitos…

Nunca tive oportunidade de trabalhar com ele em um projeto de verdade.
Atualmente, com a nova versão (VRaptor 3), retomei meus estudos em horas vagas.

Tive um probleminha para testar a combinação VRaptor3 + Google Application Engine + Google Application Engine Eclipse Plugin.

A partir do blank-project-gae do vraptor, segui as instruções do readme e “upei” o projeto para a estrutura da Google.

Até aí, sem problemas…

Mas, ao tentar persistir uma entidade devidamente anotada como persistente, recebia a exceção a seguir:

org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The class "The class "br.com.caelum.vraptor.blank.Aluno" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found." is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data for the class is not found.

Lendo melhor a documentação do AppEngine, descobri que as entidades anotadas devem passar por um processo denominado Enhanced.

Esse processo estava funcionando normalmente, através do plugin do eclipse, em uma outra aplicação sem o VRaptor.

Depois de algumas horas batendo cabeça e tendo que dividir minha atenção entre o trabalho e a diversão (testar o VRaptor no GAE), resolvi tentar utilizar o ANT para compilar o projeto e fazer o Enhanced.

Funcionou perfeitamente.
Agora, voltarei a “brincar” com meu projetinho VRaptor3 no GAE.

Não sei se o que me atrapalhou foi um problema ou um caso de B.I.O.S…
Mas fica a dica pra se alguém passar pelo mesmo.

No mais, ficam meus parabéns a toda a equipe por trás do VRaptor 3.

Link sobre como utilizar o ANT para compilar o projeto:
http://code.google.com/intl/pt-BR/appengine/docs/java/tools/ant.html#The_Complete_Build_File

Abraços a todos.

mateusprado

Oi lgi2020.

Isso pode ser resolvido de uma forma facil: basta criar o arquivo de configuração do JDO(jdoconfig.xml)

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">

	<persistence-manager-factory name="transactions-optional">
		<property name="javax.jdo.PersistenceManagerFactoryClass"
			value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory" />
		<property name="javax.jdo.option.ConnectionURL" value="appengine" />
		<property name="javax.jdo.option.NontransactionalRead" value="true" />
		<property name="javax.jdo.option.NontransactionalWrite"
			value="true" />
		<property name="javax.jdo.option.RetainValues" value="true" />
		<property name="datanucleus.appengine.autoCreateDatastoreTxns"
			value="true" />
	</persistence-manager-factory>
</jdoconfig>

[]s,

fabianorodrigo

Pessoal,

Fiz o FJ-21 na Caelum, tivemos VRaptor3, e depois de um ano estou pensando em utilizá-lo a vera em um projeto. Antes estou brincando pra adquirir a confiança necessária. Bem… baixei a apostila do FJ-28 que a Caelum disponibilizou e vi lá o exemplo da página 100, onde é feita uma busca de produtos por nome, até aí tudo bem. Até que resolvi fazer uma graça e criar uma busca com vários parâmetros, e surgiu uma dúvida de baixo nível: Como o VRaptor reconhece os parâmetros corretamente se o Java não guarda no bytecode o nome dos parâmetros quando compilado em modo não debug? Viajei? :?

[]s

Lucas_Cavalcanti

o VRaptor usa um framework chamado Paranamer que lê as informações de debug e recupera os nomes dos parâmetros (tem uma citação a isso na apostila, em algum lugar).

se a classe não for compilada em modo de debug o VRaptor não consegue fazer a mágica completa, mas usa o nome da classe com a primeira minúscula.

fabianorodrigo

Valeu, Lucas.

Se não entendi errado, isso significa que um código que estava funcionando em modo debug pode parar de funcionar após compilá-lo em modo não debug? Considerando que a propriedade “name” do meu INPUT seja “searchExpression” e ele passe isso para o servidor via GET ou POST, chegando lá, como o VRaptor conseguiria bater o nome do parâmetro do request “searchExpression” com o nome do parâmetro do meu método “string” ?

Caso o meu parâmetro seja um tipo primitivo como “int” ou “boolean”, ele vai fazer o inverso, ou seja, colocar a primeira maiúscula?
E se existir mais de um parâmetro do mesmo tipo ele acrescenta um contador “string1”, “string2”… ?

Dei um search na apostila e encontrei o trecho que ele faz essa menção ao Paranamer, que cita inclusive a possibilidade de utilizar pré-compilação para obter esses nomes. Esse processamento pré-compilação é automático ou eu deveria fazer algum procedimento na IDE ou no código para habilitá-lo?

Abraços e mais uma vez obrigado pela disponibilidade

Lucas_Cavalcanti

fabianorodrigo:
Valeu, Lucas.

Se não entendi errado, isso significa que um código que estava funcionando em modo debug pode parar de funcionar após compilá-lo em modo não debug?


Em 99.9% dos casos vc não vai ter problemas em compilar o código em modo debug, geralmente não é uma restrição (e o ant, maven, eclipse, javac compilam
em modo debug por padrão). A menos que vc precise explicitamente que não tenha debug, não se preocupe com isso.

ele não vai conseguir bater, vai parar de funcionar mesmo.

int vai virar “int”, boolean vai virar "boolean… e ele não vai diferenciar por números os parâmetros

não lembro de cabeça, mas tem na documentação do paranamer… provavelmente é um parâmetro que vc configura na compilação (na IDE, ant, etc)

vc tá perguntando isso por curiosidade, ou vc não pode de jeito nenhum compilar o código em debug?

fabianorodrigo

A princípio é mera curiosidade, essa compreensão da lógica de funcionamento do framework facilita o aprendizado. Mas também pensando no caso de no futuro precisar compilar em modo não debug.
Mais uma vez obrigado

Lucas_Cavalcanti

se vc precisa rodar em modo não debug vc pode usar a anotação @Named:

@Path("/abc")
public void abc(@Named("xuxu") String xuxu) {..}
fabianorodrigo

Show de bola!

Criado 24 de setembro de 2009
Ultima resposta 19 de mai. de 2011
Respostas 28
Participantes 11