Mentawai x VRaptor

Olá pessoal!!!

Quero aprender um framework web, havia optado pelo Struts, mas depois de umas pesquisas descobri o Mentawai e recentemente o VRaptor que achei bem mais fáceis de aprender e também por terem documentação em pt-BR.
Sou iniciante tanto em Java quanto em JSP e gostaria de aprender ambos (Java, JSP e um framework), sei que é meio loucura.
Sei que a escolha de uma linguagem, IDE, framework e etc. são questões de gosto. Mas alguém poderia me dar uma orientação (vantagens/desvantagens) sobre eles (Mentawai e VRaptor).

:wink:

Olá

Você já conhece bem HTTP e servlets?

Para quem conhece bem HTTP, servlets e um pouco de desenvolvimento web não é difícil aprender mais de um framework.

Mas se eu fosse você, escolheria qualquer um apenas para começar. Escolha o que lhe parece ter mais ou melhor documentação e exemplos. Dê valor a questão de convenção sobre configuração porque isto pode dar um ganho enorme no aprendizado do que realmente é importante aprender.

[]s
Luca

[quote=Luca]Olá

Você já conhece bem HTTP e servlets?

Para quem conhece bem HTTP, servlets e um pouco de desenvolvimento web não é difícil aprender mais de um framework.

Mas se eu fosse você, escolheria qualquer um apenas para começar. Escolha o que lhe parece ter mais ou melhor documentação e exemplos. Dê valor a questão de convenção sobre configuração porque isto pode dar um ganho enorme no aprendizado do que realmente é importante aprender.

[]s
Luca[/quote]

Comecei a estudar Java em novembro/05 comprei o livro Java Como Programar 6ª ed. e vinha estudando feliz da vida até começar um estágio em uma empresa que o site era em PHP, aí tive que infelizmente parar meus estudos em Java e aprender PHP. Foi ai meu primeiro contato com desenvolvimento web e me apaixonei pelo conceito, tanto que meu projeto de final de curso foi sobre qualidade no desenvolvimento de WebApps.
Há 3 meses que sai do estágio e comprei o Use a Cabeça! Servlets & JSP, mas só li até a metade por falta de tempo. E agora que não estou mais na empresa e praticamente já terminei a faculdade, voltei aos estudos com força total e estou com um projeto para desenvolver.
Venho fazendo uns teste com o Menta e tenho gostado bastante!!! :stuck_out_tongue:

Obrigado Luca, pela dica!!!
:wink:

Diferentemente dos outros frameworks, que possuem uma curva de aprendizado mais elevada, esses dois são de fácil entendimento e aprendizado.

Logo te sugiro que teste os dois e escolha o que mais te agradar.

Eu li a matéria sobre o VRaptor na última edição da Mundo Java e ainda estou lendo a matéia do Mentawai. Queria saber se existe algum comparativo entre os dois, alguém sabe?

abraços!

Bom, eu estudei os dois frameworks, mas depois que conheci JSF esqueci o resto, a produtividade é muito maior, quanto mais projeto você faz em JSF, mais componentes personalizados você tem, mais fácil fica pro próximo projeto, essa é minha opinião.

Se você quer algo como struts pega um desses dois, mas se quiser conhecer JSF (eu aconselho), “experimenta experimenta”.

[quote=bonfarj]Eu li a matéria sobre o VRaptor na última edição da Mundo Java e ainda estou lendo a matéia do Mentawai. Queria saber se existe algum comparativo entre os dois, alguém sabe?

abraços![/quote]

heheh, o pessoal quer ver a gente se pegando no braço mesmo :lol:

Ainda não existe nenhum texto assim, imagino que não seja nescessário. É só entrar no site do Menta, ler a documentação, ir no site do VRaptor, ler a documentação, se gostar de um ou de outro, fazer uma aplicação demo e aí você vai escolher um :slight_smile: Sem imparcialidade.

Hehe, longe de mim. :smiley:

Eu gostei muito do VRaptor, o cara que escreveu a matéria mandou muito bem, achei esse framework bem no meu estilo. Mas também achei o Mentawai interessante, por isso queria ver se existe algum comparativo com prós e contras de cada um.

grande abraço pra vcs e parabéns pelos frameworks! :slight_smile:

Dá um exemplo de um componente personalisado que vc reutilizaria em um outro projeto?

[quote=casmeiron]Bom, eu estudei os dois frameworks, mas depois que conheci JSF esqueci o resto, a produtividade é muito maior, quanto mais projeto você faz em JSF, mais componentes personalizados você tem, mais fácil fica pro próximo projeto, essa é minha opinião.

Se você quer algo como struts pega um desses dois, mas se quiser conhecer JSF (eu aconselho), “experimenta experimenta”.[/quote]

Acredito q a pergunta do obattousai seria Mentawai x VRaptor, nao vi ele perguntar sobre JSF. :roll:

mas ele falou que já estudou ambos frameworks e chegou na conclusão que JSF atende melhor as necessidades dele, além de citar um dos motivos da escolha. Isso é também uma contribuição com o tópico, não é? :wink:

mas ele falou que já estudou ambos frameworks e chegou na conclusão que JSF atende melhor as necessidades dele, além de citar um dos motivos da escolha. Isso é também uma contribuição com o tópico, não é? ;)[/quote]

Ele vai contribuir ainda mais se falar quais são os componentes personalisados que ele reutiliza em todos os projetos dele.

Olá

Pois eu achei a resposta sobre JSF muito boa. Aliás, estudei JSF em 2004 e fiquei com a impressão de que o JSF tinha tudo para matar o framework MVC da moda que era o Struts. Mas na época o JSF ainda não conseguia construir uma página com todos os recursos do Struts. Se hoje ele está mais produtivo, como imagino que esteja, acho que tem muitas chances de ser a melhor solução do que os frameworks MVC quando NÃO se usa AJAX.

O problema é que hoje a discussão não está mais na comparação com MVC e sim na comparação com os frameworks AJAX. Já tem gente escrevendo por aí que site sem AJAX é defunto fedorento que esqueceram de enterrar.

Então eu pergunto: como fica o uso dos componentes JSF quando se pretende desenvolver um site com AJAX?

[]s
Luca

Olá Sérgio, tudo bem?

concordo, e é isso que eu espero. Mas ainda assim, não estaria desvalorizando o Mentawai ou o VRaptor, que em minha opinião são frameworks muito interessantes também.

Com esse barulho que o ajax vem fazendo, acho muito interessante a idéia de criar componentes que utilizem tais recursos. Não que eu seja fã de ajax, mas esta pode ser a realidade em muitos projetos, não acha?

Não sei se JSF seria a melhor solução para estes casos (nem conheço JSF direito), mas vamos esperar e ver o que nosso amigo tem a dizer. :smiley:

Abraços

Eu tenho tido contato com o VRaptor desde a versão 0.8 e tenho visto o qto este framework tem amadurecido.
Acho mto bacana o conceito de vc desenvolver uma app web sem ter q se preocupar com request / response, o que é possível com o VRaptor, mas não obrigatório.
Acho legal também o processamento das classes, onde eu não preciso extender nenhuma outra classe específica do framework para que ele identifique meu componente, ainda mais que só podemos ter uma única superclasse.
Estive lendo o artigo da mundo java a respeito do mentawai e tb as video aulas da java magazine e ví que existe a necessidade de configuração de xml. Eu particularmente acho isso um porre … Qdo com o Vraptor, seguindo as convenções, é possível criar a aplicação sem a necessidade de criar xml de configuração do framework. Isso é mto legal e produtivo.
Eu depois de um tempo comparando os 2 frameworks, verifiquei que o VRaptor é mais “desplugado” da aplicação e que por estas e outras características que não me lembro agora, escolhi ele como meu framework “Brazuca” predileto. Opinião pessoal. Gostaria de aproveitar e parabenizar a galera do Mentawai e do VRaptor pelo magnifico trabalho com os frameworks …

[]'s

O Mentawai foi um dos primeiros frameworks Java a abolir por completo o XML pra tudo. Foi provavelmente o primeiro framework Java a pregar o uso ostensivo de configuraçao programática em código Java.

O único XML que o Mentawai necessita é a configuração do controlador, coisa que todos os outros também necessitam por ser uma exigência da API de servlets, ou seja, impossível fugir disso. Além do mais isso são poucas linhas que vc configura uma única vez e nunca mais mexe.

Isso é verdade. Lembro quando o saoj (meu xará) tava começando e até trocamos umas idéias sobre isso. Era pioneiro.

Não entendi a questão de dizer que o menta tem XML.

O que o Vraptor tem de diferente talvez seja a questão de favorecer as convenções. Então você configura pouca coisa, nem em XML nem em Java, é sem configuração mesmo.

PS Mas o vraptor, quando precisa configurar algo, voce faz com anotacoes, xmls e properties… tudo meio espalhado :slight_smile:

Normal, muita gente já está desenvolvendo esquemas pra facilitar o uso de AJAX em JSF, como no Ajax4JSF. Também tem o projeto Avatar do pessoal dos Faceles e todo o suporte que o antigo ADF Faces da Oracle, que hoje é Trinidad, tem pra JSF.

Eu acho que o suporte a JSF anda muito melhor no JSF do que em qualquer outro framework web baseado em Actions atual. O serviço pesado é muito pouco.

Antes de mais nada gostaria de falar que o VRaptor é um excelente framework e que se eu não usasse o Mentawai usaria o VRaptor.

Um diferencial do VRaptor em relaçao aos outros frameworks é que ele é bastante “desacoplado” do framework em si, ou seja, uma Action, ou lógica do VRaptor não extende nada do framework e trabalha com poucas classes do framework. Não tem como fugir das anotações, mas pelo menos vc não extende nenhuma classe e não trabalha como nenhum input e output.

A filosofia do Mentawai é que a action pode e deve ser apenas uma ponte para o seu modelo de negócios, ou seja, uma action vai ser algo burro que vai apenas passar dados de um lado para o outro e decidir sobre a consequencia web que cada requisiçao terá.

É difícil pensar numa situaçao onde uma Action precisará estender outra coisa que não seja o BaseAction do framework ou uma outra BaseAction qualquer criada pela aplicaçao. Dessa maneira “salvar” a action de gastar sua herança me parece que não trará nenhum ganho na maioria dos casos.

Mesma coisa se aplica para o input e output. Numa situaçao ideal, sua action não deve precisar do input nem do output, ou seja, os dados de entrada devem ser automaticamente injetados na action (ou diretamente no modelo do qual essa action depende para executar suas funções) e os dados de saída devem ser automaticamente obtidos da action (ou novamente do modelo).

Para esses casos, basta fazer uso do InjectionFilter e do OutputFilter para que a action do Mentawai tenha exatamente o comportamente acima, ou seja, possa ignorar o input e o output por completo.

Entretanto existirão muitos outros casos não ideais, em que sua action/filtro, por comodidade ou necessidade, precisará trabalhar com o input e o output. Exemplo:


// permite apenas que certos IPs acessem essa action...

if (!input.getProperty("remoteAddr").starts("200.100.22.")) {

    return ACCESS_DENIED;

}

// permite apenas autenticacao via POST...

if (input.getProperty("method").equalsIgnoreCase("get")) {

   addError("Não é permitido se autenticar via get!");
   return GLOBAL_ERROR;
}


// computa o tempo de execucao dessa action e coloca no output... (provavelmente um filtro)

long now = System.currentTimeMillis();

String result = chain.invoke();

long time = System.currentTimeMillis() - now;

output.setValue("execTime", String.valueOf(time));

Outra argumento para favorecer o total desacoplamento seria TESTES. Minha opinião sobre isso é primeiro que a action deverá ser tão burra e simples que testes serão desnecessários. Entretanto se vc é daqueles que gosta de testar todo e qualquer IF da sua aplicacao, então vc pode usar uma MockAction fornecida pelo próprio framework para realizar os testes de maneira bem simples. Ex:


Action action = new MyActionDoMentawai();

MockAction mockAction = new MockAction(action);

mockAction.getInput().setValue("name", "Whatever");

String result = mockAction.execute();

assertEqual(result, Action.SUCCESS);
assertEqual(mockAction.getOutput().getValue("name"), "WHATEVER");

Outra questão é a CoC, que acredito ser bastante subjetiva e dependente do projeto em questão. Mais sobre isso aqui: http://www.guj.com.br/posts/list/60/49817.java

Concordo com o marciobarroso, na minha opinião “Convention over Configuration” é o caminho. Fiquei alucinado quando conheci as maravilhas que o Ruby on Rails faz com este conceito, eu ainda não tinha visto algo parecido em um web framework Java.