JSF, Struts 2 ou VRaptor 3?

25 respostas
rlaf

Olá pessoal, eu uso o JSF em porjetos pessoais mas estou pensando em trocar de framework e queria saber antes se vale a pena.
Vou ser sincero o que me prende ao JSF é mais o richfaces.

Motivos pelo qual quero trocar:

  • Tenho alguns problemas quando quero fazer algo em JS mais personalizado e especifico.
  • Tive problema quando coloquei pluguins do jquery, onde os componentes do richfaces literalmente travaram e não respondiam.

Não sei se esses problemas que estou tendo com o JSF é por falta de conhecimento no JSF ou se são bugs do próprio framework.
Vale a pena trocar o JSF pelo Struts 2 ou VRaptor 3?

Não quero reiniciar a polemica de qual framework é melhor. Quero saber se vale a pena trocar mediante esse problemas?

25 Respostas

netoguitar

Não se limite apenas no RichFaces, exitem diversas outras bibliotecas de componentes para JSF, dentre elas destaco o PrimeFaces http://www.primefaces.org/showcase/ui/home.jsf, muito bom e já tem suporte a JSF 2…

Existe também:

http://www.openfaces.org/
http://www.icefaces.com

Lucas_Cavalcanti

Qdo vc usa JSF vc geralmente não vai conseguir personalizar muito o resultado gerado (ou vai ser bem difícil fazer isso)

O JSF talvez seja bem produtivo para criar as telas, mas dar manutenção no código do servidor é horrível e, como vc percebeu, personalizar a tela traz vários problemas.

Eu acho que vale a pena trocar sim, existem várias bibliotecas e plugins de JS pra fazer os elementos visuais que são bem fáceis de usar (JQuery UI e ExtJS por exemplo), e você vai ter um controle bem melhor do html gerado e principalmente da parte do servidor.

E, puxando pro meu peixe, o VRaptor3 é bem mais produtivo que o Struts 2

rlaf

Eu vi o PrimeFaces achei bem interessante.

Tem algum problema em usar o PrimeFaces com o Struts ou o VRaptor?

Pq como já falei tenho porblemas com o JSF quando quero fazer algo mais personalizado.

Lucas_Cavalcanti

PrimeFaces é baseado em JSF, não dá pra usar com o VRaptor…

P

VRaptor++

Desde que passei a usar o VRaptor a produtividade no desenvolvimento voltado para web aumentou muito.

rlaf

Tem alguma biblioteca de componentes que dê p/usar com o VRpator e/ou Struts?

Lucas_Cavalcanti

existem várias bibliotecas de componentes visuais em javascript… por exemplo a ExtJS e o JQuery UI.

a diferença é que vc vai estar trabalhando com HTML+JS ao invés do XHTML do jsf que só declara os componentes

P

Eu uso a combinação VRaptor no Controller e JQuery na View.

Muito tranquilo e produtivo.

D

Mesmo usando o vraptor, você pode usar algo parecido com o jsf, quando cria seus proprios “componentes”.
Eu em um projeto anterior fiz isso, peguei o Jquery UI e criei tagfiles em jsp, assim o trabalho ficou bem parecido com o jsf.

Exemplo:

<h:calendar id="calendar" name="pessoa.dataNascimento"/>

Isso pode parecer jsf, mais é tagfiles em jsp + Jquery UI.
Com o tempo fui vendo necessidades de mais “componentes” e fui criando conforme a necessidade. No final das contas eu conseguia criar uma pagina cheia dos componentes, sem mesmo escrever uma unica linha de javascript.

P

Gostei da abordagem davisnog

Parece ficar legal de trabalhar.

Ainda chego la, para criar componentes rs

Abs

D

É bem simples trabalhar com tagfiles em jsp, da uma procurada no google vc vai achar varios exemplos, aqui esta um exemplo bem simples.

Dentro de WEB-INF/tags/numeric.tag Todos os arquivos tagfiles, tem que ter o sufixo .tag, assim como os arquivos jsp tem o sufixo .jsp. Arquivo numeric.tag
<%@ tag language="java" isELIgnored="false" pageEncoding="UTF-8" dynamic-attributes="attrs"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ attribute name="label" description="Label do Input Text" required="true" type="java.lang.String" %>
<%@ attribute name="name" description="Nome do Input Text" required="true" type="java.lang.String" %>
<%@ attribute name="id" description="Id do Input Text" required="true" type="java.lang.String" %>
<%@ attribute name="value" description="Valor do Input Text" type="java.lang.String" %>

<label for="${id}">${label}</label>
<input id="${id}" type="text" name="${name}" value="${value}" class="numeric" ></input>

Nesse caso eu tenho um javascript em jquery que pega essa class"numeric", e seta uma mascara de numeric, onde o input permite somente numeros inteiros e não Strings.

Modo de usar:
<%@ taglib tagdir="/WEB-INF/tags"  prefix="h" %>
<h:numeric id="num" label="Código do Cliente" name="cliente.codigo" />
A

davisnog,

Gostei de sua forma de trabalho. Que tal disponibilizar as tags que vc já construiu??

D
admwagner:
Gostei de sua forma de trabalho. Que tal disponibilizar as tags que vc já construiu??

@admwagner, não vai ser possível, eu não trabalho mais na mesma empresa, então os fontes ficaram lá.

Mais em outro projeto particular que estou fazendo tive a mesma necessidade, então pensando melhor fiz algo mais simples, usando somente classe css e seletores jQuery, fica o exemplo abaixo:

&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;

&lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/themes/ui-lightness/jquery-ui.css" type="text/css" charset="utf-8" /&gt;

&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/i18n/jquery-ui-i18n.min.js" charset="utf-8" &gt;&lt;/script&gt;
&lt;script type="text/javascript" src="../js/jquery.maskedinput.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="../js/utils.js"&gt;&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;
	&lt;label for="datepicker"&gt; Data:&lt;/label&gt;
	&lt;input type="text" id="datepicker" name="projeto.data" value="${projeto.data}" class="datepicker"&gt;&lt;/input&gt;
&lt;/body&gt;

tenho esse arquivo utils.js que tem esse codigo para o datepicker do jquery ui.

$(function() {
    	
	$.datepicker.setDefaults($.datepicker.regional["pt-BR"]);
	$(".datepicker").each(function() {
                $(this).mask("99/99/9999");
		$(this).datepicker({
			showAnim : "blind",
                        showOn: "button",
			buttonImage: "images/calendar.gif",
			buttonImageOnly: true
		});
	});
});

Como esse arquivo utils.js esta no cabeçalho de todas as paginas, quando tenho um input text com a classe datepicker, o jquery já seta o calendario com as configurações que eu previamente setei. Como você pode perceber, tenho um unico javascript que faz todo o trabalho de criar os componentes, dessa forma a minha pagina ainda continua sem nenhum javascript e usando somente html puro.

Dessa forma eu achei que ficou ainda mais simples, os seletores do jQuery são muito poderosos, sabendo usar você faz miséria.

Boa sorte, qualquer coisa estamos por aqui.

A

valeu a dica. vou estudar este metodo também.

t+

doravan

Rapaz, eu conheço bem JSF e Struts, Struts 2, também tenho bom conhecimento do Vraptor hoje.

O que posso dizer sobre as tecnologias:
Eu utilizo vraptor, razões:
Só uso pojos
Fácil manutenção
Excelente integração com todas as bibliotecas que utilizei até agora, e o melhor de tudo: minha view é do jeito que eu quero, sem qualquer dor de cabeça na edição do design.
Meu site é feito em vraptor, minhas demais webapps são feitas no vraptor…
E, na moral, não sei porque as empresas ainda não adotaram o vraptor como framework padrão para seus projetos.
JSF tem bons elementos e excelentes facilidades disponíveis no mercado, porém é tudo bastante amarrado, mas todo mundo vai na onda porque “é uma especificação”…

Defeito que vi no vraptor até agora foi só um, não temos plugins para nossas ides com geração de crud a partir da entidade…
oops, eu fiz um plugin pro meu eclipse pra fazer isso :smiley:
ou seja, não vi mais defeitos.

O que posso fazer com vraptor?
controle de sessão
request
response
acesso a dados
thread control com task scheduler e periodic task
component injection
RCP
acesso a aplicações externas através de NIO (esse é o maior barato)
possibilidade de usar qualquer coisa na view…

Sei que parece loucura, mas eu uso tudo nele
spring
hibernate
quartz (nem é necessário, pq o spring tem task scheduler integrado)
mail api
fileIO
Network IO
jstl
jaxb
log4j

na view
jsp/vm/pdf/xml/arquivos excel/arquivos doc
jquery

Dá até pra fazer joguinho de browser pow.

Visto a camisa do vraptor, me ajudou bastante.

Lucas_Cavalcanti

já deu uma olhada no VRaptor Scaffold?

L

Eu ia criar um tópico para falar sobre JSF2, mas vou aproveitar um espacinho aqui.

Eu já trabalhei em projetos com JSF 2, Struts 1.x e 2. Tenho projetos em JSF 2, que podemos considerar como crítico (24X7), clusterizado .

Gostei do JSF 2, é fácil, produtivo.

No entanto, acho que me decepcionei. Ele é amarrado e tem cheiro de POG. Usando ele ficamos escravos de componentes. Escravos de biblioteca de terceiros. JSF 2 é atraente. Mas ele é sujo. Tonelada de códigos sujos gerados. milhoes de JS importados. Compromete a performance. Já que front-end é um dos maiores problemas de performance (vide o livro: High Performance Web Sites: Essential Knowledge for Front-End Engineers )

Com JSF não temos liberdade na view. Teve projetos que perdi 3 dias de trabalho por causa de bugs de renderização. Coisa que se fosse html, css e jquery resolveria em poucas horas. Ele foi inspirado pelo Aspx que é outro POG. Essa questão de ligar o Model pelo Evento é bacana para Desktop. Web não é desktop. Web é ação, é requisição, é reposta, tudo por http.

Vou voltar para Actions-Based. Quem sabe no velho e bom Servlet (versão 3), e Vraptor 3. (Struts é legado). Se quiser Component-Based, acho melhor fazer Swing.

doravan

Sarcasmo on:
Que é isso cara, JSF/JSF2 são especificações hora da Sun, agora da Oracle. São utilizados por praticamente todas as organizações nacionais sérias.

Sarcasmo off:
Na maior, a galera que inventou JSF não sabe como web funciona… só no Brasil que utilizam JSF em grandes projetos.
Eu tive problemas com JSF quando tinha 300 requisições ao mesmo tempo, começou a dar pau geral.

Na moral, qualquer outro framework que te dê liberdade na view evita tais problemas.
No vraptor, por exemplo, tenho dois tipos de validação:
1 com javascript (validação no cliente) - o que evita super estresse no servidor com cálculos de validação
2 com o validator, quando sinto que o camarada do outro lado vai tentar hackear o JS para enviar um formulário com dados truncados - não toma tanto assim do servidor, mas quando as requisições são muitas, melhor deixar o cliente validar o campo com JS.

gbmesso

Srs. venho de desenvolvimento .NET há alguns anos, desde 2002, e já fiz pequenos, médios e grandes projetos… internet e intranet… No último projeto que fizemos utilizamos a biblioteca JQUERY para fazer toda a lógica de negócio (montamos um framework próprio) buscando sanar o GRANDE problema do ASPX em gerar toneladas de código cliente sem necessidade, matando a performance. Chamando webservice para busca de dados e componentes mais leves (JQGRID por exemplo, para renderização) Foi BEM melhor apesar de alguns percalços (não vou entrar no mérito do desenvolvimento do próprio framework…)
Sou profundo admirador da plataforma JAVA e estamos ganhando a oportunidade de desenvolver alguns projetos. (na mesma linha cima)
Venho nos últimos meses estudando o que e como usar, e obviamente já gostei muito da possibilidade de escolher, na MS não tinhamos muito; gostei principalmente da comunidade e sua força, etc…
Comparando JSF e Struts2 notei o ganho de produtividade com um (JSF), porém o mesmo problema do ASPX --> geração de lixo. Primefaces é incrível, mas gera lixo… Vou estudar agora o VRAPTOR através da apostila da Caelum e depois disso decidir qual caminho tomar. (não tenho mais tanto tempo para seguir)
Admito que estou descartando JSF… Vou para linha action pois achei mais leve e onde eu posso fazer a camada cliente mais leve (usando meu framework ou qq um javascript).
Meus comentários acima foram “zipados”, pois há muitas considerações por se fazer…mas gostaria de saber se estou realmente no caminho certo (pelo que vi nos comentários desse tópico, sim!)
Uma dúvida, quais empresas usam VRAPTOR? Isso vai ajudar no convencimento… Quais empresas usam já o STRUTS2?
O VRAPTOR está sendo atualizado? Haverá novidades/melhorias? (se é que precisa)

lalinden

Engraçado…

Me corrijam se eu estiver enganado:

O VRAPTOR EM CONCEITO E ESTRUTURA É PRATICAMENTE IGUAL AO CODEIGNITER EM PHP.

Ou seja… JSF é legal… mas é um saco… para uma coisa com 5 cruds blz… mas e com 300 cruds ??
Muito complicado gerar a hierarquia de templates em xml para tornar isso facilmente mantível/alterável…

Acho que por isso fizeram o vraptor, que faz o que o codeigniter ja faz a muito tempo.

Eu tenho um framework que nasceu em cima do codeigniter. Tudo php.

Conheco java desde a versao 1.1, uso para algumas coisas (socket server para chat por exemplo, com NIO)
Mas java para programacao web-like… é um “pé no saco”, vai ser chato e anti-rendimento lá na casa do tiririca.

E por favor, me poupem dos comentarios que php nao é OOP. Tem inclusive reflection no php atualmente.

A unica vantagem que vejo do java em relacao ao php no quesito web, é o CONTAINER, por ter os contextos e tal.
Mas implementei meu proprio container pro php, para ter os contexts do java…

Agora que java é chato é chato, por favor…
Linguagem tipada serve pra aplicacoes onde um bit a mais faz diferenca.
Em web onde 99,9% é manipulacao de strings e alguns calculos simples… só gera trabalho desnecessário.

Jesus o que é a sintaxe de um “array” multidimensional e multitipos em java ? SARAVA meu pai…

Eu como comecei programando em assembly, depois C, clipper, Java… Digo que PHP só não é melhor pq tem aquele DOLAR maldito
na frente das variaveis, coisa que poderia ser extirpada se quisessem, o dolar deixa o codigo muito feio,
heranca do seculo passado onde se colocava uma variavel dentro de uma string “Seu nome é: $nome”, onde se deveria usar “Seu nome é:”.$nome,
entao o $ só serve pra isso… e é um sacooooooo.

Enfim, se vai usar vraptor… entao usa codeigniter… ou Yii…

Se o cara tem algo em php, e quer mudar pra java pra usar vraptor… acho sem sentido…
Se a aplicacao é toda em php, e quer migrar pra um modelo action based, usa o codeigniter… vais reaproveitar
muito do teu codigo…

Ja uso templates, views, jquery, tudo action based a tempos com o codeigniter…
Agora a comunidade java faz uma onda em cima do vraptor como se fosse uma “novidade” ehehe
Hora o que é um POJO ? Java enfiou tanto lixo e enjambracao que tiveram que chamar codigo oop limpo de POJO…
Amigos o que sao as “annotations” ??? pela mor da cachaça… uma enjambracao… uma coisa muito feia ao meu ver…
Java prega a pureza no oop… e coloca as annotation… nem comento… ainda querem falar que php é podre ?
Vai usar java sem annotations… quero ver… por isso fizeram os annotations…

Se alguem quiser ver o que é um crud complexo, de uma relacao M:N sem uma linha de codigo(if,else,while,for,whatever) nem sql, apenas
definicao de modelo, me chame em private que eu mostro… quero ver fazer em java… ate faz… mas vi ficar 3x maior
em funcao da chatisse que é a tipagem no java…

Já que falar nao leva a nada, podemos pegar um exemplo duma relacao assim: MASTER_TYPE -> MASTER -> LINK_MN_MASTERDETAIL <- DETAIL <- DETAIL_TYPE
E fazer o crud pra isso… e ver como fica cada proposta…

jsf
vraptor
codeignter + myself

Seria interessante… para apreciarmos o calcanhar de aquiles dos cruds… a relacao M:N
Crud de uma tabela só eu nem comento… nao conta…

Só estiy falando isso tudo pq escuto “geral” me chamando de medíocre pq uso php para web…
Agora o vraptor é a bola da vez… eheh mesma coisa que o codeigniter… so que mais chato de programar… entao…
E java, programo em java a muuuuito tempo… tenho um applet que fiz em 1998 de um chat para mostrar para quem quiser
ver, em awt puro, com sockets… sem ide… feito na mao… com um servidor por traz tb feito “na mao”… tudo em java.
Por conhecer a chatisse que é o java, uso o php… de tipado ja chega o C.

Agora o JSF “lança/inova” com o push/pull em ajax… A ME POUPE , ja faço isso a anos… tenho um iframe na pagina que conecta num
servidor em java via http, uma conexao que nunca fecha, e o java envia os javascript pra mechar na pagina o tal ajax reverso… bla bla bla… comedia isso… jsf…
No meu caso, se outra pessoa clica num botao em outro local remoto, todas as outras pessoas conectadas na pagina(html) recebem a notificacao sem dar reload…
Coisa que o jsf enche a boca pra falar que tem agora… pior que 90% de quem usa isso nem sabe o que acontece por traz…

Fiz uns testes em jsf… uma pagina com primefaces com algumas coisinhas… tinha 800k !!!
Alguem ja parou pra analizar isso ? Em um site com 2000 requests por segundo, isso faz uma ENORME diferença…
Então… por isso agora a moda é jquery com vraptor… que é a mesma coisa que jquery com php…

Aliás, se alguém estiver procurando emprego no RJ capital ou em Florianópolis estamos contratando…

Enfim,
[]´s

drsmachado

Na verdade, eu acredito que não existe framework perfeito, nem linguagem.
Java é excelente para determinadas coisas. JSF2, Struts2 e VRaptor são ótimos para tipos específicos.
Fato é que JSF 1 ou 2 e CSS/javascript não se dão bem.
Struts é mais limpo, mas se quiser usar as tags do 2, irá ter formulário em tables, o que, não é legal.
VRaptor nunca vi. Não posso comentar.
Mas eu encararia fácil Struts 2 + hibernate + tiles + prototype + spring.

Marcelo_de_Assis

Só um problema na sua defesa, o VRaptor foi criado antes do CodeIgniter.

boneazul

lalinden:
Engraçado…

Me corrijam se eu estiver enganado:

O VRAPTOR EM CONCEITO E ESTRUTURA É PRATICAMENTE IGUAL AO CODEIGNITER EM PHP.

Ou seja… JSF é legal… mas é um saco… para uma coisa com 5 cruds blz… mas e com 300 cruds ??
Muito complicado gerar a hierarquia de templates em xml para tornar isso facilmente mantível/alterável…

Acho que por isso fizeram o vraptor, que faz o que o codeigniter ja faz a muito tempo.

Eu tenho um framework que nasceu em cima do codeigniter. Tudo php.

Conheco java desde a versao 1.1, uso para algumas coisas (socket server para chat por exemplo, com NIO)
Mas java para programacao web-like… é um “pé no saco”, vai ser chato e anti-rendimento lá na casa do tiririca.

E por favor, me poupem dos comentarios que php nao é OOP. Tem inclusive reflection no php atualmente.

A unica vantagem que vejo do java em relacao ao php no quesito web, é o CONTAINER, por ter os contextos e tal.
Mas implementei meu proprio container pro php, para ter os contexts do java…

Agora que java é chato é chato, por favor…
Linguagem tipada serve pra aplicacoes onde um bit a mais faz diferenca.
Em web onde 99,9% é manipulacao de strings e alguns calculos simples… só gera trabalho desnecessário.

Jesus o que é a sintaxe de um “array” multidimensional e multitipos em java ? SARAVA meu pai…

Eu como comecei programando em assembly, depois C, clipper, Java… Digo que PHP só não é melhor pq tem aquele DOLAR maldito
na frente das variaveis, coisa que poderia ser extirpada se quisessem, o dolar deixa o codigo muito feio,
heranca do seculo passado onde se colocava uma variavel dentro de uma string “Seu nome é: $nome”, onde se deveria usar “Seu nome é:”.$nome,
entao o $ só serve pra isso… e é um sacooooooo.

Enfim, se vai usar vraptor… entao usa codeigniter… ou Yii…

Se o cara tem algo em php, e quer mudar pra java pra usar vraptor… acho sem sentido…
Se a aplicacao é toda em php, e quer migrar pra um modelo action based, usa o codeigniter… vais reaproveitar
muito do teu codigo…

Ja uso templates, views, jquery, tudo action based a tempos com o codeigniter…
Agora a comunidade java faz uma onda em cima do vraptor como se fosse uma “novidade” ehehe
Hora o que é um POJO ? Java enfiou tanto lixo e enjambracao que tiveram que chamar codigo oop limpo de POJO…
Amigos o que sao as “annotations” ??? pela mor da cachaça… uma enjambracao… uma coisa muito feia ao meu ver…
Java prega a pureza no oop… e coloca as annotation… nem comento… ainda querem falar que php é podre ?
Vai usar java sem annotations… quero ver… por isso fizeram os annotations…

Se alguem quiser ver o que é um crud complexo, de uma relacao M:N sem uma linha de codigo(if,else,while,for,whatever) nem sql, apenas
definicao de modelo, me chame em private que eu mostro… quero ver fazer em java… ate faz… mas vi ficar 3x maior
em funcao da chatisse que é a tipagem no java…

Já que falar nao leva a nada, podemos pegar um exemplo duma relacao assim: MASTER_TYPE -> MASTER -> LINK_MN_MASTERDETAIL <- DETAIL <- DETAIL_TYPE
E fazer o crud pra isso… e ver como fica cada proposta…

jsf
vraptor
codeignter + myself

Seria interessante… para apreciarmos o calcanhar de aquiles dos cruds… a relacao M:N
Crud de uma tabela só eu nem comento… nao conta…

Só estiy falando isso tudo pq escuto “geral” me chamando de medíocre pq uso php para web…
Agora o vraptor é a bola da vez… eheh mesma coisa que o codeigniter… so que mais chato de programar… entao…
E java, programo em java a muuuuito tempo… tenho um applet que fiz em 1998 de um chat para mostrar para quem quiser
ver, em awt puro, com sockets… sem ide… feito na mao… com um servidor por traz tb feito “na mao”… tudo em java.
Por conhecer a chatisse que é o java, uso o php… de tipado ja chega o C.

Agora o JSF “lança/inova” com o push/pull em ajax… A ME POUPE , ja faço isso a anos… tenho um iframe na pagina que conecta num
servidor em java via http, uma conexao que nunca fecha, e o java envia os javascript pra mechar na pagina o tal ajax reverso… bla bla bla… comedia isso… jsf…
No meu caso, se outra pessoa clica num botao em outro local remoto, todas as outras pessoas conectadas na pagina(html) recebem a notificacao sem dar reload…
Coisa que o jsf enche a boca pra falar que tem agora… pior que 90% de quem usa isso nem sabe o que acontece por traz…

Fiz uns testes em jsf… uma pagina com primefaces com algumas coisinhas… tinha 800k !!!
Alguem ja parou pra analizar isso ? Em um site com 2000 requests por segundo, isso faz uma ENORME diferença…
Então… por isso agora a moda é jquery com vraptor… que é a mesma coisa que jquery com php…

Aliás, se alguém estiver procurando emprego no RJ capital ou em Florianópolis estamos contratando…

Enfim,
[]´s

Algumas opiniões . Trabalhei muito anos com PHP OO e trabalho faz tempo com JAVA também e na boa , não voltaria pra PHP não . Não tenho nada a falar mal do php pelo contrário o defendo muito e acho ruim falar mal da linguagem . O problema é que php as vezes deixa a desejar em alguns poucos recursos que as vezes é facilmente encontrado na plataforma JAVA , vide cache de segundo nivel , compilação de linguagem , memoria compartilhada , sandbox , etcetc. Por exemplo nesse trecho mesmo :

“tenho um iframe na pagina que conecta num servidor em java via http, uma conexao que nunca fecha, e o java envia os javascript pra mechar na pagina o tal ajax reverso” te faltou recurso que o php não pode te proporcionar entao sua aplicação querendo ou não não é 100% php.

Por exemplo comparar VRAPTOR com CODE IGNITER . Um não tem absolutamente NADA A VER COM O OUTRO apesar de ambos serem baseados em ação . Vraptor é bem mais inteligente no seu modo de fazer as coisas enquanto o CODE IGNITER ainda utiliza o objeto de post como gestor de tudo . Linguagem tipada serve pra aplicacoes onde um bit a mais faz diferenca ?? Se acha que é so isso mesmo ?? Deveria rever seus conceitos .

Annotations como 1 das qualidades vieram para melhorar a manutenção de escrita de xml que eram bem massantes … e creio que acalham bem e cumprem o papel pela qual foram construidas nessa area de metadado … muitos frameworks consagrados em PHP como por exemplo Doctrine 2 que é o Hibernate do mundo PHP copiaram o conceito de “annotations” pois php pra quem não sabe não tem suporte ainda , alias tem um suporte ridículo de PHP doc pra tentar simular annotation…e a api de reflection é bem fraquinha por sinal … php esta caminhando ainda no mundo de orientação a objeto e falta muita coisa ainda conceitual vide sobrecarga, construtores ,etc que não implementaram e faz falta … e querendo ou não o conceito de anotação facilita e muito a automatização de muita coisa que se infere por convenção e não é atoa que o pessoal tenta e conseguem passar isso pro mundo php na maioria dos projeto decentes que se encontram pela internet…

Pra mim JSF ainda mistura camadas … tentando copiar algo de desktop pro mundo WEB que não tem nada a ver mesmo …
Struts fica amarrando assim com JSF sua view que é outro problema quando o assunto é performance…

Eu utilizo muito em projetos sério e recomendo o vraptor 3 . Hoje utilizo vraptor / (hibernate ou objectify quando o projeto é cloud ) / biblioteca visual em tag lib para a view . Exemplo de aplicação : http://www.erbuss.com onde é todo construido em cima do cloud do google com vraptor.

javaflex

Já fiz 1 projetinho em Java com front-end Flex, mas na verdade sou desenvolvedor .NET e faz um tempo que fico espantado com discussões na comunidade Java valorizando JSF. Como “Gbmesso” e “Lucas Emanuel” falaram, JSF é o equivalente ao ASPX/WebForms do .NET, onde está sendo cada vez menos usado por ter exatamente esses mesmos problemas do JSF. Embora JSF seja melhor que ASPX/WebForms, o objetivo e ideia são as mesmas, solução RAD, produtiva sim na fase de desenvolvimento, mas depois vê que fica algo muito amarrado e sem domínio claro do client, fora o lixo devido gerar “java scripts bala de prata”. Depois que eu passei a usar framework baseado em Action no .NET (ASP.NET MVC3, equivalente ao Struts 2), me toquei que no passado eu não programava client, eu desenvolvia como se fosse baseado em pecinhas de lego e não podia aparar as coisas de forma limpa. Então o que me vem em mente já há algum tempo: pq parte do pessoal do Java tem ido na direção contrária com muitas pessoas trocando Action por Componentes? Enquanto no .NET praticamente não existe troca nesse sentido, o pessoal está indo pra Action e o contrário não ocorre. Enfim, eu gosto muito de desenvolver baseado em Action, dá mais trabalho mas em compensação temos melhor controle em todas as situações, nos sentimos sem gesso no braço e menos dependentes. Pena que Microsoft demorou demais pra copiar isso do Java.

javaflex

lalinden:
Engraçado…

Me corrijam se eu estiver enganado:

O VRAPTOR EM CONCEITO E ESTRUTURA É PRATICAMENTE IGUAL AO CODEIGNITER EM PHP.

Ou seja… JSF é legal… mas é um saco… para uma coisa com 5 cruds blz… mas e com 300 cruds ??
Muito complicado gerar a hierarquia de templates em xml para tornar isso facilmente mantível/alterável…

Acho que por isso fizeram o vraptor, que faz o que o codeigniter ja faz a muito tempo.

Eu tenho um framework que nasceu em cima do codeigniter. Tudo php.

Conheco java desde a versao 1.1, uso para algumas coisas (socket server para chat por exemplo, com NIO)
Mas java para programacao web-like… é um “pé no saco”, vai ser chato e anti-rendimento lá na casa do tiririca.

E por favor, me poupem dos comentarios que php nao é OOP. Tem inclusive reflection no php atualmente.

A unica vantagem que vejo do java em relacao ao php no quesito web, é o CONTAINER, por ter os contextos e tal.
Mas implementei meu proprio container pro php, para ter os contexts do java…

Agora que java é chato é chato, por favor…
Linguagem tipada serve pra aplicacoes onde um bit a mais faz diferenca.
Em web onde 99,9% é manipulacao de strings e alguns calculos simples… só gera trabalho desnecessário.

Jesus o que é a sintaxe de um “array” multidimensional e multitipos em java ? SARAVA meu pai…

Eu como comecei programando em assembly, depois C, clipper, Java… Digo que PHP só não é melhor pq tem aquele DOLAR maldito
na frente das variaveis, coisa que poderia ser extirpada se quisessem, o dolar deixa o codigo muito feio,
heranca do seculo passado onde se colocava uma variavel dentro de uma string “Seu nome é: $nome”, onde se deveria usar “Seu nome é:”.$nome,
entao o $ só serve pra isso… e é um sacooooooo.

Enfim, se vai usar vraptor… entao usa codeigniter… ou Yii…

Se o cara tem algo em php, e quer mudar pra java pra usar vraptor… acho sem sentido…
Se a aplicacao é toda em php, e quer migrar pra um modelo action based, usa o codeigniter… vais reaproveitar
muito do teu codigo…

Ja uso templates, views, jquery, tudo action based a tempos com o codeigniter…
Agora a comunidade java faz uma onda em cima do vraptor como se fosse uma “novidade” ehehe
Hora o que é um POJO ? Java enfiou tanto lixo e enjambracao que tiveram que chamar codigo oop limpo de POJO…
Amigos o que sao as “annotations” ??? pela mor da cachaça… uma enjambracao… uma coisa muito feia ao meu ver…
Java prega a pureza no oop… e coloca as annotation… nem comento… ainda querem falar que php é podre ?
Vai usar java sem annotations… quero ver… por isso fizeram os annotations…

Se alguem quiser ver o que é um crud complexo, de uma relacao M:N sem uma linha de codigo(if,else,while,for,whatever) nem sql, apenas
definicao de modelo, me chame em private que eu mostro… quero ver fazer em java… ate faz… mas vi ficar 3x maior
em funcao da chatisse que é a tipagem no java…

Já que falar nao leva a nada, podemos pegar um exemplo duma relacao assim: MASTER_TYPE -> MASTER -> LINK_MN_MASTERDETAIL <- DETAIL <- DETAIL_TYPE
E fazer o crud pra isso… e ver como fica cada proposta…

jsf
vraptor
codeignter + myself

Seria interessante… para apreciarmos o calcanhar de aquiles dos cruds… a relacao M:N
Crud de uma tabela só eu nem comento… nao conta…

Só estiy falando isso tudo pq escuto “geral” me chamando de medíocre pq uso php para web…
Agora o vraptor é a bola da vez… eheh mesma coisa que o codeigniter… so que mais chato de programar… entao…
E java, programo em java a muuuuito tempo… tenho um applet que fiz em 1998 de um chat para mostrar para quem quiser
ver, em awt puro, com sockets… sem ide… feito na mao… com um servidor por traz tb feito “na mao”… tudo em java.
Por conhecer a chatisse que é o java, uso o php… de tipado ja chega o C.

Agora o JSF “lança/inova” com o push/pull em ajax… A ME POUPE , ja faço isso a anos… tenho um iframe na pagina que conecta num
servidor em java via http, uma conexao que nunca fecha, e o java envia os javascript pra mechar na pagina o tal ajax reverso… bla bla bla… comedia isso… jsf…
No meu caso, se outra pessoa clica num botao em outro local remoto, todas as outras pessoas conectadas na pagina(html) recebem a notificacao sem dar reload…
Coisa que o jsf enche a boca pra falar que tem agora… pior que 90% de quem usa isso nem sabe o que acontece por traz…

Fiz uns testes em jsf… uma pagina com primefaces com algumas coisinhas… tinha 800k !!!
Alguem ja parou pra analizar isso ? Em um site com 2000 requests por segundo, isso faz uma ENORME diferença…
Então… por isso agora a moda é jquery com vraptor… que é a mesma coisa que jquery com php…

Aliás, se alguém estiver procurando emprego no RJ capital ou em Florianópolis estamos contratando…

Enfim,
[]´s


Concordo que PHP é bem mais objetivo para sites do que o Java e o .NET. Lembro quando fiz minha primeira página em PHP pensei comigo “é só isso mesmo?”, rápido de desenvolver, sem abstrair como a web funciona e resultado limpo. O problema que tinha era dar manutenção em projeto dos outros, quando bem modularizado ok, senão era visão do inferno. Já .NET e Java parece que existe uma direção natural, fazendo esse problema diminuir. Manutenção foi o que me fez desistir de PHP, então “não sei mais PHP”, pois não quero receber mais furadas! Isso foi antigamente, creio que hoje com frameworks como CodeIgniter as coisas tenham melhorado nesse sentido, mas se por outro lado tornou as coisas menos objetivas, então fica elas por elas nesse quesito, sendo que .NET e Java ganham em robustez. Enfim, espero que não seja isso, mas se PHP fica querendo ser java então melhor ficar com o próprio Java.

Passando rapidamente outros pontos que falou:

JSF: Considero canto da sereia, ou indicaria só para fábricas de softwares que tem clientes não exigentes, que não vão pedir interfaces gráficas diferenciadas. Mas para desenvolvimento alocado no cliente onde gerentes estão do seu lado e as vezes olhando algum site diferenciado e falando “vc pode fazer igual?” ai complica! Assim como não indicaria para sites, só sistemas baseados em formulários e grids e que sempre sejam da mesma forma, como se fosse desktop, visual basicão sem ter um designer na equipe (que se sente melhor trabalhando com liberdade no html e css).

VRAPTOR: Nunca pratiquei, mas num curso da Caelum que fiz sobre Java Web/Struts 2 falaram sobre ele, parece muito produtivo, sendo que é da própria Caelum? É usado mundialmente e fortemente como Struts 2 e JSF? Senão ficaria com pé atrás.

Criado 21 de outubro de 2010
Ultima resposta 12 de mar. de 2012
Respostas 25
Participantes 14