Solução ao JSF. O que a comunidade está usando

41 respostas
A

Senhores, o que os Srs. têm usado quando JSF não é uma opção ?

Estou começando um Projeto e pensei em ir na cara e na coragem com EJB 3.1(ou Spring, ainda estou acvaliando) + Servlets 3.0 + Alguma coisa que eu não queria que fosse JSP puro.

Sabem de algum Framework que caia como uma luva nessa pré-arquitetura (pois ainda vou fazer uma PoC) ???

Como vocês vêem o Tiles hoje ???

Abs []

41 Respostas

H

Vai de VRaptor ou Struts mesmo. [=

JSP na unha mas com uma camada para te ajudar. [=

D

1° - Qual o tipo de aplicação?

2° - Porque Jsf não é uma opção?

A

Talvez tenha me expressado mal quanto ao assunto… Temos uma PoC inicial da Arquitetura já com JSF.

Estamos em busca de alternativas. Será uma WebApp.

Abs []

P

Olá a igo, na minha opinião, depende da finalidade e do objetivo da aplicação. Essa pre-arquitetura, dependeria por exemplo do cenário da aplicação e tb de todo o contexto.
É uma aplicação web ok, mas qual seria a estimativa de requisições, precisa ser performática para o usuário ou atrativa e confortável para o suaurio no conceito de navegabilidade como RIA? JSF é baseado em componentes ja Structs, Spring MVC, etc… são baseados em actions. Components são mais ricos porem mais pesados para algumas finalidades como aplicações com grande volume de requisições, a latencia é mais alta por requisição, a ja no cenário performatico e na minha opinião mais escalável e mais flexível tb, caso o senário seja de gande volume de acessos simultâneos, é o uso de Frameworks baseados em ação (actions), pois o front end no caso o simples jsp ja é suficiente para compor a interface do usuário, pois a gente pode fazer uso das apis javaScript diversas como jQuery e ExtJs para compensar a interatividade. Actions são mais lever e mais perfomraticos na minha opinião. Eu iria de Structs ou Spring MVC no front controler e de Spring no backend junto com JPA + cache. Mas depende da sua finalidade ok! E soh uma dica.

FAllow

M

Uma boa dica é utilizar o Vraptor 3.

E um excelente framework e possui a documentação toda em portugues. E muito simples facil e rápido de se aprender.

Abraçoo !

R

adriano_si:
Senhores, o que os Srs. têm usado quando JSF não é uma opção ?

Estou começando um Projeto e pensei em ir na cara e na coragem com EJB 3.1(ou Spring, ainda estou acvaliando) + Servlets 3.0 + Alguma coisa que eu não queria que fosse JSP puro.

Sabem de algum Framework que caia como uma luva nessa pré-arquitetura (pois ainda vou fazer uma PoC) ???

Como vocês vêem o Tiles hoje ???

Abs []

Eu diria que a pergunta mais importante é:Qual a ferramenta que vc conhece bem e consegue ser produtivo?

Não adianta pegar um framework top de linha para aprender e a produtividade inicial ficar lá em baixo…

Minha opiniao :smiley:

A

paulo1911:
Olá a igo, na minha opinião, depende da finalidade e do objetivo da aplicação. Essa pre-arquitetura, dependeria por exemplo do cenário da aplicação e tb de todo o contexto.
É uma aplicação web ok, mas qual seria a estimativa de requisições, precisa ser performática para o usuário ou atrativa e confortável para o suaurio no conceito de navegabilidade como RIA? JSF é baseado em componentes ja Structs, Spring MVC, etc… são baseados em actions. Components são mais ricos porem mais pesados para algumas finalidades como aplicações com grande volume de requisições, a latencia é mais alta por requisição, a ja no cenário performatico e na minha opinião mais escalável e mais flexível tb, caso o senário seja de gande volume de acessos simultâneos, é o uso de Frameworks baseados em ação (actions), pois o front end no caso o simples jsp ja é suficiente para compor a interface do usuário, pois a gente pode fazer uso das apis javaScript diversas como jQuery e ExtJs para compensar a interatividade. Actions são mais lever e mais perfomraticos na minha opinião. Eu iria de Structs ou Spring MVC no front controler e de Spring no backend junto com JPA + cache. Mas depende da sua finalidade ok! E soh uma dica.

FAllow

Opa Paulo, obrigado pelo retorno… Um dos motivos de estarmos saindo da “caixa” JSF é o fato de essa aplicação tender a ter alto volume de requisições simultâneas e provavelmente uma nível de escalabilidade alto.

Já estou por dentro da sua idéia e estou justamente criando essa PoC pra poder convencer um parceiro de que o JSF pode não ser a melhor (ou única, não sei se melhor é a palavra) solução para este cenário, mas é que eu mesmo já estou há quase 3 anos que não desenvolvo nada em Java fora do JSF.

Valew pelo retorno… Estava realmente pensando em dar uma olhada no Spring MVC, mas queria ao máximo me ater ao uso da especificação…

Talvez eu vá na cara e na coragem com Servlets e JSP na unha…

Alguma indicação de algum recurso de templates que facilite a vida ???

Abs []

H

raf4ever:
Eu diria que a pergunta mais importante é:Qual a ferramenta que vc conhece bem e consegue ser produtivo?

Não adianta pegar um framework top de linha para aprender e a produtividade inicial ficar lá em baixo…

Minha opiniao :smiley:

Na boa, qual a ferramenta que no começo você consegue ter uma produtividade alta durante o aprendizado?
Nunca trabalhei com uma assim.

P

Então cara, eu recomendo vc var sim o Spring MVC, mas na view se vc quer algo flexível e na unha, compensa vc pensar vc usar um framework antigo e que eu acho simples que é o velocity. ou o VRaptor mesmo como o amigo citou anteriormente, tb é bem interessante e com excelentes recursos.

OK!

A

raf4ever:
Eu diria que a pergunta mais importante é:Qual a ferramenta que vc conhece bem e consegue ser produtivo?

Não adianta pegar um framework top de linha para aprender e a produtividade inicial ficar lá em baixo…

Minha opiniao :smiley:

Cara, isso é fato… Inclusive estava pensando sobre isso outro dia, enquanto olhava 2 conhecidos se degladiando sobre qual dos 2 usava a “melhor” Linguagem de Programação…

Propuseram um desafio sobre produtividade e estão se matando feito uns loucos para conseguir tentar provar que um usa uma linguagem melhor que a do outro… rsrsrsrsrs

Pensei seriamente sobre essa sua afirmação e devo dizer que estava para ir no caminho contrário a isso quando a minha ficha caiu.

Encontrei um outro colega Programador (dos meus tempos de PHP) que está ganhando muita grana na região com uma solução em PHP… Me senti envergonhado :oops: por um dia ter tido a audácia de levantar a bandeira de Tecnologia.

Dessa vez será um pouco diferente, pois estou saindo do desenvolvimento de Uma aplicação Corporativa e caindo no mundo puramente Web, queria muito testar alguma coisa fora de JSF por 2 motivos:

1 - Saber que existe mundo além do JSF;

2 - Me atualizar sobre as novidades do JEE6, que ainda não deu pra me aprofundar, além de alguns exemplos básicos;

É isso, valeu pelo retorno.

W

teste o Spring com Spring Web Flow.

A

paulo1911:
Então cara, eu recomendo vc var sim o Spring MVC, mas na view se vc quer algo flexível e na unha, compensa vc pensar vc usar um framework antigo e que eu acho simples que é o velocity. ou o VRaptor mesmo como o amigo citou anteriormente, tb é bem interessante e com excelentes recursos.

OK!

Vou dar uma olhada no Velocity, obrigado mais uma vez pelo retorno.

Abs []

A

paulo1911:
Olá a igo, na minha opinião, depende da finalidade e do objetivo da aplicação. Essa pre-arquitetura, dependeria por exemplo do cenário da aplicação e tb de todo o contexto.
É uma aplicação web ok, mas qual seria a estimativa de requisições, precisa ser performática para o usuário ou atrativa e confortável para o suaurio no conceito de navegabilidade como RIA? JSF é baseado em componentes ja Structs, Spring MVC, etc… são baseados em actions. Components são mais ricos porem mais pesados para algumas finalidades como aplicações com grande volume de requisições, a latencia é mais alta por requisição, a ja no cenário performatico e na minha opinião mais escalável e mais flexível tb, caso o senário seja de gande volume de acessos simultâneos, é o uso de Frameworks baseados em ação (actions), pois o front end no caso o simples jsp ja é suficiente para compor a interface do usuário, pois a gente pode fazer uso das apis javaScript diversas como jQuery e ExtJs para compensar a interatividade. Actions são mais lever e mais perfomraticos na minha opinião. Eu iria de Structs ou Spring MVC no front controler e de Spring no backend junto com JPA + cache. Mas depende da sua finalidade ok! E soh uma dica.

FAllow

Muito interessante as palavras do colega paulo1911 acima, pois foca em soluções pragmáticas para o cenário dado. Não adianta sempre pensarmos
“JSF é um lixo, action-based é foda” ou “Frameworks action-based são um lixo, o que liga são os componentes da hora do PrimeFaces”. Existem cenários e possíveis soluções. E claro, a expertise da equipe que vai desenvolver a bagaça também é um fator importante. No fim do dia, a melhor solução pode ser a que você conhece melhor.

Pelas suas palavras vou tomar a liberdade de concluir que você tem maior conhecimento em JSF e nos SeiLaOQueFaces da vida. Um fator importante em um site é a camada client-side (por “camada visual” me refiro a html, CSS e javascript) que é o que percebo que muitas pessoas gostam nos componentes JSF, já que muitos frameworks colocam um skin legalzinho, usam o CSS do framework e vamos que vamos. Trabalhando com um frame action-based esse detalhe vai pesar mais no desenvolvimento do que “normalmente” pesaria com JSF (eu particularmente prefiro usar html puro e meus próprios javascript e estilos com JSF, mesmo customizando o CSS de algum framework). Com os componentes do PrimeFaces com algum skin habilitado, qualquer um é “web designer”! Conheço code-monkeys que gostam de JSF apenas por ser “fácil” fazer uma página, sem considerar mais nada. Acredito que não seja o que você queira então sugiro também considerar esse detalhe do front-end, com JSF você poderia ter componentes “prontos” que podem vir a te facilitar caso na sua equipe haja dificuldades com essa camada do client. Por outro lado em um framework action-based você terá o controle total do seu front-end, o que não acontece com JSF.

Sobre outro ponto, é perfeitamente possível fazer com JSF uma app/site escalável suportando muitas requests. Mas pela natureza statefull do JSF, dá um trabalho desgraçado.

R

jakefrog:
raf4ever:
Eu diria que a pergunta mais importante é:Qual a ferramenta que vc conhece bem e consegue ser produtivo?

Não adianta pegar um framework top de linha para aprender e a produtividade inicial ficar lá em baixo…

Minha opiniao :smiley:

Na boa, qual a ferramenta que no começo você consegue ter uma produtividade alta durante o aprendizado?
Nunca trabalhei com uma assim.

Exatamente meu caro,é esse o meu ponto.

Se é pra ficar ‘apanhando’ por um tempo até pegar o jeito da coisa,melhor garantir a produtividade e a qualidade com as ferramentas que já se tem á mão.

Claro que estou partindo da premissa que se trata de um projeto “pra valer”.

Veja o meu caso por ex:Trabalho com JSF a aprox. 5 anos e consigo ser bastante produtivo com ele.Tenho bastante interesse em Vraptor e ROR,por exemplo,mas eu sei que iria levar um tempo até equiparar a produtividade que eu já tenho no JSF com outras que ainda estou me adaptando.O que não quer dizer,lógico,que eu não esteja sempre me reciclando e buscando melhores opções.Só não vou arriscar meu pescoço e a qualidade do meu trabalho por vaidade e para estar “na moda”.

G

Se ater ao uso da especificação = JSF :slight_smile:
Utilizar Servlet/JSP para uma aplicação completa hoje em dia não é nem mesmo considerado uma opção, não tem como competir em produtividade com outros frameworks.

Sei que para determinadas empresas quanto mais dentro do padrão melhor, mas existem outros nomes que são muito bem aceitos até por grandes corporações. Produtos como Struts, Spring, Hibernate, Apache Commons, etc que acabaram tornando-se padrões de facto para o desenvolvimento de aplicações.
Portanto, se houvesse esse tipo de restrição eu não partiria para o VRaptor por exemplo (que apesar do reconhecimento da comunidade ainda pode ser considerado arriscado em ambientes mais tradicionais), mas tentaria outros frameworks vinculados a nomes “de respeito” como Struts 2 (é leve e rápido) e Spring MVC 3 (boa produtividade, trabalha com alguns conceitos parecidos com o VRaptor).

G

Eu acho justamente o contrário, os componentes bonitinhos são uma desvantagem na hora de fazer um site. Isso porque embora bonitos e funcionais, eles são rígidos - o comportamento é esse e pronto. Em um site, o que pode fazer diferença são detalhes de usabilidade, um controle maneiro aqui, um javascript daora ali… :slight_smile:
Com JSF não se tem esse nível de ajuste.

A

Era aqui que eu estava caindo… Pra quem pretende se especializar em ferramentas para garantir alta empregabilidade, eu indico fortemente esse caminho, o grande problema é que eu já estou em uma outra linha de raciocínio (que não discuto se é certo ou errado. Só sei que é o certo para mim nesse momento) e parar pra aprender uma nova tecnologia nessa etapa, será arriscado para os meus planos futuros.

Ainda assim quero captar alguma coisa distante de JSF.

Abs [] e mais uma vez valeu pelo retorno.

A

Eu acho justamente o contrário, os componentes bonitinhos são uma desvantagem na hora de fazer um site. Isso porque embora bonitos e funcionais, eles são rígidos - o comportamento é esse e pronto. Em um site, o que pode fazer diferença são detalhes de usabilidade, um controle maneiro aqui, um javascript daora ali… :slight_smile:
Com JSF não se tem esse nível de ajuste.

Desculpe, acho que me expressei mal pois o que quis dizer foi justamente isso que voce comentou. O frameworks de componentes do JSF fornecem componentes “prontos” que se comportam de uma maneira X e ponto, apenas parametrizamos o comportamento. Isso pode ser ruim. Por outro lado, veja a suite de componentes do Prime ou do Rich, por exemplo… há dezenas de componentes pra trocentas coisas diferentes, então é muito provável que o que você quiser já tem um lá que faz. Particularmente acho que isso pode ajudar sim. E caso você queira um componente com um comportamento seu, basta fazer.

Mas discordo de você, com todo o respeito, de que não há “esse nível de ajuste” com JSF, bom, de fato você não vai conseguir se “infiltrar” em um componente de terceiros. Mas se for o caso basta criar um novo componente ou usar html puro + seu javascript. E pronto, você tem componente/elemento na página que faz o que você quer que faça.

R

Eu vejo bem, inclusive utilizo ele + Struts 2

D

FATO, pra WebApp eu não cogitaria outra coisa alem de JSF. Por N fatores, mas o principal seria pessoal… É o framework que eu conheço melhor, então minha produtividade com ele é alta…

A

gomesrod:
Se ater ao uso da especificação = JSF :slight_smile:
Utilizar Servlet/JSP para uma aplicação completa hoje em dia não é nem mesmo considerado uma opção, não tem como competir em produtividade com outros frameworks.

Sei que para determinadas empresas quanto mais dentro do padrão melhor, mas existem outros nomes que são muito bem aceitos até por grandes corporações. Produtos como Struts, Spring, Hibernate, Apache Commons, etc que acabaram tornando-se padrões de facto para o desenvolvimento de aplicações.
Portanto, se houvesse esse tipo de restrição eu não partiria para o VRaptor por exemplo (que apesar do reconhecimento da comunidade ainda pode ser considerado arriscado em ambientes mais tradicionais), mas tentaria outros frameworks vinculados a nomes “de respeito” como Struts 2 (é leve e rápido) e Spring MVC 3 (boa produtividade, trabalha com alguns conceitos parecidos com o VRaptor).

Opa Gomes, beleza cara ?

Pois bem, imaginava que pudesse ouvir essa relação entre “Spec = JSF” e “Servlest + JSP(puros) = inviável”…

Eu sempre pensei assim como você colocou, só que pensei que a tecnologia houvesse evoluido de forma a minimizar esses conceitos negativos… Enfim, Obrigado pelo retorno e qualquer outra dica será muito bem vinda.

Abs []

R

:? “o controle vos libertará”

A

Por que você não quer fugir muito da especificação?
Restrição da empresa/cliente?

Como já dito a única especificação é JSF…
Servlet/JSP são especificação, mas para uma camada mais baixa.

Se está afim de conhecer o mundo fora do JSF, acho que pode relaxar um pouco estas restrições.

Quais critérios está avaliando para selecionar uma opção?

Produtividade é um critério complicado de se avaliar para uma ferramenta que não conhece.
Você sempre será mais produtivo com JSF enquanto só fizer projetos com ele.

Sugiro que faça um projeto mínimo com cada uma das sugestões citadas e sinta se aquilo combina com seu estilo de desenvolvimento.
E quando digo projeto mínimo, tô falando de uma noite, 4 horas, de trabalho.
Aquele projeto de exemplo da apostila doVraptor por exemplo, dá pra fazer em menos de 2 se seguir o passo a passo.

Caso esteja disposto a experimentar ainda mais, sugiro dar uma olhada no Backbone.js ou no Spine.js (com backend em Vraptor ou Spring).

J

Já que está querendo utilizar uma nova tecnologia, aprendendo coisas diferentes,
que tal em ir de Play Framework 2.0 e se tornar super produtivo, sendo que pode
utilizar scala ou java como linguagem base.

Essa é uma solução que consideraria no seu leque.

S

Cara, achei tão interessante essa discussão que vô até acompanha-la, estou com a mesma dúvida(apesar de bastante esclarecida aqui). A diferença é que estou entrando nesse “mundo JSF” agora, e devo concordar com alguns que citaram toda beleza e facilidades dos componentes rich, prime, etc… No entanto, perambula sobre mim a seguinte problemática: tenho alguns sites para fazer, não consigo abstrair e construir(ainda, por falta de conhecimento e prática) um mecanismo para gerencia-los de tal forma que este seja único e suficiente para qualquer site que venha fazer. Para tal, já consegui assimilar a idéia do hibernate e do jsf, to entrando em breve no Spring. Logo(por tudo que vi falarem até aqui), sei que, principalmente, o jsf e richfaces vai me ajudar nessa aplicação enquanto nos sites pode ser inviável, certo?

Obrigado.

F

Porque não VAADIN… http://demo.vaadin.com/sampler ou GWT… http://gwt.google.com/samples/Showcase/Showcase.html#!CwCheckBox ?!

S

Ferreira, achei interessante… tô aprendendo mesmo, vô da uma “olhadela” a noite, mas me diz aí… isso é para substituir o rich e JSF, seria pra usar com servlet? desculpa se viajei agora… mas é a inexperiência falando.

H

[email removido:
]Porque não VAADIN… http://demo.vaadin.com/sampler ou GWT… http://gwt.google.com/samples/Showcase/Showcase.html#!CwCheckBox ?!
De certo modo o VAADIN é component based como o JSF. Se for para fugir de JSF não acho que esse cara seria uma boa idéia, apesar de seu modo de desenvolvimento ser totalmente diferente.
https://vaadin.com/learn

S

pera lá Ferreira, deixa eu perguntar melhor: com o GWT e/ou Vaadin eu posso deixar o resto da minha aplicação(beans, managedBeans e daos) do mesmo jeito, mudando então só a view? e como ficaria isso, tipo: requisição para uma servlet->processo->resposta html(gerada pelo GWT) para o cliente por exemplo com um “out.print(meuGwt)” . é isso?

F

É por aí … a forma de trabalho é muito parecida com swing … a questão de servlet e implantações, mudam bastante com relação ao jsp … vc acaba trabalhando mais no lado servidor … o gwt “puro” limita o uso para apenas algumas classes do java, porem com o vaadin é possivel usar quase tudo do java… estou olhando com mais atenção o vaadin, e ainda não encontrei maiores problemas no seu uso… no Brasil ele nao é muito conhecido, mas a comunidade “lá de fora” é grande.
O vaadin abstrai toda a conversaiada do cliente e servidor (servlet), fornecendo conponentes que acabam fazendo o trabalho pesado, por exemplo esta é uma tela de login que andei testando:

@SuppressWarnings("serial")
public class LoginPanel extends VerticalLayout {	

	private LoginForm loginForm; // componente fornecido pelo VAADIN
	private JanelaPrincipal janelaPrincipal;
	
	public LoginPanel( JanelaPrincipal janelaPrincipal) {
        this.janelaPrincipal = janelaPrincipal;                
        initUI();
	}

	private void initUI() {
		
	this.janelaPrincipal.getTitulo().setValue("Acesso ao Sistema");
	loginForm = new LoginForm();
    	loginForm.setLoginButtonCaption("Login");
    	loginForm.setUsernameCaption("E-mail");
    	loginForm.setPasswordCaption("Senha");
    	
    	
    	setStyleName("login");
    	
    	loginForm.addListener(new LoginListener() {		
    		 public void onLogin(LoginForm.LoginEvent event) {  
    			 
                 String email = event.getLoginParameter("username");
                 String pass = new CriptografaString().criptografaString(event.getLoginParameter("password"));
				try {
					PessoaVo usuario = new PessoaDao().buscaUsuarioLogin(email, pass);
					if (usuario != null) {
						janelaPrincipal.getTitulo().setValue("");
						janelaPrincipal.getApplication().setUser(usuario.getNomeCompleto());
					//	janelaPrincipal.removeComponent(janelaPrincipal.getRodape());
						janelaPrincipal.getRodape().setVisible(false);
					}else {
						getWindow().showNotification("Email e/ou senha incorreto(s)", Notification.TYPE_ERROR_MESSAGE);
					}

				} catch (Exception e) {
					getWindow().showNotification("Email e/ou senha incorreto(s)", Notification.TYPE_ERROR_MESSAGE);
					e.printStackTrace();					
				}
                  
             }

		});
    	
    	HorizontalLayout hl = new HorizontalLayout();
    	hl.setSpacing(true);
    	Button btnCadastro = new Button("Não sou Cadastrado");
    	btnCadastro.setStyleName(Runo.BUTTON_LINK);
    	btnCadastro.addListener(new Button.ClickListener() {
			
			public void buttonClick(ClickEvent event) {
				janelaPrincipal.addWindow(new NovoUsuario(janelaPrincipal));
			}
		});
    	Button btnEsqueci = new Button("Esqueci a senha");
    	btnEsqueci.setStyleName(Runo.BUTTON_LINK);
    	btnEsqueci.addListener(new Button.ClickListener() {
			
			public void buttonClick(ClickEvent event) {
				janelaPrincipal.addWindow(new EsqueciSenha(janelaPrincipal));
			}
		});
    	
    	hl.addComponent(btnCadastro);
    	hl.addComponent(btnEsqueci);
    	    	
    	setMargin(true);
    	addComponent(new CenterLayout(loginForm));    	
    	addComponent(hl);
    	
	}
}
R
[email removido:
]É por aí ... a forma de trabalho é muito parecida com swing ... a questão de servlet e implantações, mudam bastante com relação ao jsp ... vc acaba trabalhando mais no lado servidor .. o gwt "puro" limita o uso para apenas algumas classes do java, porem com o vaadin é possivel usar quase tudo do java... estou olhando com mais atenção o vaadin, e ainda não encontrei maiores problemas no seu uso... no Brasil ele nao é muito conhecido, mas a comunidade "lá de fora" é grande. O vaadin abstrai toda a conversaiada do cliente e servidor (servlet), fornecendo conponentes que acabam fazendo o trabalho pesado, por exemplo esta é uma tela de login que andei testando:
@SuppressWarnings("serial")
public class LoginPanel extends VerticalLayout {	

	private LoginForm loginForm; // componente fornecido pelo VAADIN
	private JanelaPrincipal janelaPrincipal;
	
	public LoginPanel( JanelaPrincipal janelaPrincipal) {
        this.janelaPrincipal = janelaPrincipal;                
        initUI();
	}

	private void initUI() {
		
	this.janelaPrincipal.getTitulo().setValue("Acesso ao Sistema");
	loginForm = new LoginForm();
    	loginForm.setLoginButtonCaption("Login");
    	loginForm.setUsernameCaption("E-mail");
    	loginForm.setPasswordCaption("Senha");
    	
    	
    	setStyleName("login");
    	
    	loginForm.addListener(new LoginListener() {		
    		 public void onLogin(LoginForm.LoginEvent event) {  
    			 
                 String email = event.getLoginParameter("username");
                 String pass = new CriptografaString().criptografaString(event.getLoginParameter("password"));
				try {
					PessoaVo usuario = new PessoaDao().buscaUsuarioLogin(email, pass);
					if (usuario != null) {
						janelaPrincipal.getTitulo().setValue("");
						janelaPrincipal.getApplication().setUser(usuario.getNomeCompleto());
					//	janelaPrincipal.removeComponent(janelaPrincipal.getRodape());
						janelaPrincipal.getRodape().setVisible(false);
					}else {
						getWindow().showNotification("Email e/ou senha incorreto(s)", Notification.TYPE_ERROR_MESSAGE);
					}

				} catch (Exception e) {
					getWindow().showNotification("Email e/ou senha incorreto(s)", Notification.TYPE_ERROR_MESSAGE);
					e.printStackTrace();					
				}
                  
             }

		});
    	
    	HorizontalLayout hl = new HorizontalLayout();
    	hl.setSpacing(true);
    	Button btnCadastro = new Button("Não sou Cadastrado");
    	btnCadastro.setStyleName(Runo.BUTTON_LINK);
    	btnCadastro.addListener(new Button.ClickListener() {
			
			public void buttonClick(ClickEvent event) {
				janelaPrincipal.addWindow(new NovoUsuario(janelaPrincipal));
			}
		});
    	Button btnEsqueci = new Button("Esqueci a senha");
    	btnEsqueci.setStyleName(Runo.BUTTON_LINK);
    	btnEsqueci.addListener(new Button.ClickListener() {
			
			public void buttonClick(ClickEvent event) {
				janelaPrincipal.addWindow(new EsqueciSenha(janelaPrincipal));
			}
		});
    	
    	hl.addComponent(btnCadastro);
    	hl.addComponent(btnEsqueci);
    	    	
    	setMargin(true);
    	addComponent(new CenterLayout(loginForm));    	
    	addComponent(hl);
    	
	}
}

O GWT limita bibliotecas apenas em código que será traduzido em Javascript, no lado servidor você pode usar o que quiser do Java, além do mais, você só é obrigado a usar Java se o seu protocolo de comunicação for o RCP, usando Json você pode usar qualquer back-end. Quanto ao Vaadin, o framework me parece ser muito bom, só estou desconfiado dessa história de "abstrair completamente a comunicação com o servidor".

S

É cara, andei analisando um pouco, e achei interessante o vaadin. Como é o primeiro projeto que estou metendo a cara pra fazer, acho bom ter um estudo aprofundado do tema, pois gostaria de evitar ao máximo o alto acoplamento. Pago o preço com o tempo, vai demorar mas um dia saí.

obg

R

Shoknes:
É cara, andei analisando um pouco, e achei interessante o vaadin. Como é o primeiro projeto que estou metendo a cara pra fazer, acho bom ter um estudo aprofundado do tema, pois gostaria de evitar ao máximo o alto acoplamento. Pago o preço com o tempo, vai demorar mas um dia saí.

obg

Já que é o seu 1o projeto, porque não usar JSP & Servlets mesmo ? No caso, Servlets são a base de praticamente todos os frameworks Web para Java. Já as JSP’s são usadads geralmente em frameworks action based.

S

é cara, acho que já to pra ficar louco(sabe aquela coisa, quanto aprendo mais tenho a aprender?)… mas basicamente a combinação Hibernate, JSF e Spring me deixou encantado. Por isso busco uma alternativa para ganhar tempo com o JSF, ou seja, o vaadim vai de encontro, assim como rich e outros. Mas tá legal já, melhor terminar logo o projeto e depois avaliar a estrutura utilizada e buscar alternativas…
obg pelo feedback. vlws

H

rmendes08:
Shoknes:
É cara, andei analisando um pouco, e achei interessante o vaadin. Como é o primeiro projeto que estou metendo a cara pra fazer, acho bom ter um estudo aprofundado do tema, pois gostaria de evitar ao máximo o alto acoplamento. Pago o preço com o tempo, vai demorar mas um dia saí.

obg

Já que é o seu 1o projeto, porque não usar JSP & Servlets mesmo ? No caso, Servlets são a base de praticamente todos os frameworks Web para Java. Já as JSP’s são usadads geralmente em frameworks action based.

+1
Realmente o melhor que tem é começar a aprender JSP e Servlet

E

jakefrog:
rmendes08:
Shoknes:
É cara, andei analisando um pouco, e achei interessante o vaadin. Como é o primeiro projeto que estou metendo a cara pra fazer, acho bom ter um estudo aprofundado do tema, pois gostaria de evitar ao máximo o alto acoplamento. Pago o preço com o tempo, vai demorar mas um dia saí.

obg

Já que é o seu 1o projeto, porque não usar JSP & Servlets mesmo ? No caso, Servlets são a base de praticamente todos os frameworks Web para Java. Já as JSP’s são usadads geralmente em frameworks action based.

+1
Realmente o melhor que tem é começar a aprender JSP e Servlet
Para aprender recomendo também Servlet+JSP, mas não recomendo scriplets (ninguém falou nisso aqui, só para comentar mesmo)

Bom, foi falado que action based é sempre mais performático que component based (não sei se eu entendi direito), não é bem assim. Depende muito da implementação, não vou dizer “ah, JSF é muito melhor que qualquer outro framework” (até porque só conheço struts e spring mvc, e ambos eu achei mais lento que JSF), mas a implementação do component based pode ser mais performática que uma outra implementação de action-based.

Especificamente, o JSF não faz o parse do XHTML em cada requisição, ele já tem “pré-carregado” na memória a maioria das páginas mais acessadas antes de ser requisitadas, dessa forma bastando apenas mudar os valores dinâmicos, isso torna mais rápido tanto para requisições semelhantes quanto para ajax que a implementação “padrão” de action based. Claro, outras libs action based podem implementar soluções mais rápidas (que eu desconheço). Outra coisa, segundo testes (que eu não confio normalmente, a maioria é tendencioso), o facelets é até 70% mais rápido que a mesma página em JSP (eu não confirmei isso, em testes com jmeter comparando com spring tive cerca de 40% mais requisições por segundo no facelets). Mas considerem também que eu fiz esses testes antes de “aprender a fundo” qualquer uma das duas tecnologias, portanto, talvez um código otimizado spring seja mais performático que o código otimizado JSF… Bem situações específicas que o JSF e o Spring revezam o melhor desempenho.

Mas no fim, o que vai fazer mais diferença no desempenho é a otimizaçao da regra de negócios…

Sobre os componentes para o faces facilitarem, já ouvi dizer que dá para usar primefaces com spring mvc, mas nunca usei.

Eu particularmente prefiro a combinação JSF + JPA2 (uso o eclipselink) + EJB3 (no lugar de Spring, mas qualquer um dos dois serviria nesse caso, só não quero adicionar libs extras no projeto e os app containers já tem EJB)

Outra coisa, se é um sistema mais como um “portal” ou algo assim, cogite usar o Liferay como base e criar plugins para ele. O Liferay é bem performático.

J

Amigo, minha opnião:

Para fazer Web, penso que html+css+javascript, é o que da maior flexibilidade, pois é disso que a Web é feita.

Em relação a produtividade, vejo que o material disponivel é tanto (quando se adota o html para view), pois pode pegar html puro, gerado por programas de design, gerado por sistemas php, etc etc, ou seja, eu discordo quando dizem que fazer html na unha é improdutivo… eu acho até mesmo mais produtivo que muito framework (tipo struts 1 que mais atrapalha do que ajuda).

Mas então falando de html e css… você pode utilizar qualquer editor para criar o layout do site e facilmente consegue adaptar o mesmo para JSP, usando JSTL e para as regras mais complexas criar suas próprias taglibs (eu acho isso simples)! Já trabalhei com designers que faziam o serviço de layout no dreamweaver e depois o estagiário enxugava o HTML, limpava e identava o código e preparava a JSP com JSTL. As taglibs eu costumo deixar pro final.

Escrevendo javascript usando algo como jquery (meu preferido), o trabalho de JS também é bem facilitado! (Neste caso concordo que javascript é meio chato de trabalhar e não tão produtivo quanto java, mas por isso que abstraio muita coisa via AJAX e para fazer a parte de AJAX… eu gosto do DWR!

Ja fiz diversos sistemas usando a combinação: HTML+CSS+JASVACRIPT (JSP) + JSTL + TAGLIBS + DWR e não tive problemas (não posso falar a mesma coisa com alguns outros frameworks baseados em componente, pois no caso de websites, eu vejo eles como limitadores sim, ou no minimo, quando tem algum problema sério e precisa gerar seus próprios componentes… a sua produtividade ganha no começo do projeto vai toda por agua abaixo). Sei la… JSF para web, tem algumas combinações bizarras de SO + Browser que costumam dar problemas em alguns componentes, sem dizer que é tanto AJAX que os sistemas feitos com estas tecnologias costumam não funcionar direito em conexões lentas (tipo discada)! Por isso vejo que é importante analisar o que precisa ser feito para escolher a tecnologia.

Para o Controller, só considero o uso de Servlets se tiver poucas coisas ou se implementar o pattern de Front Controller e abstrair algumas coisas básicas da aplicação!
Caso contrário, acho que tanto faz usar Spring MVC, VRaptor, entre outros… será mais uma questão de gosto mesmo!

Eu penso… se é web (site)… quase sempre adoto JSP+JSTL+DWR e uso Spring ou implemento Fronto Controller.
JSF vejo como uma coisa melhor para intranets e aquilo que roda na rede local, embora para este tipo de solução, muitas vezes é vantagem utilizar Swing e/ou SWT, ou até mesmo um cliente desktop em .NET (quando precisa rodar em maquinas lentas com 256Mb de memória).

Boa sorte no projeto

M

uma coisa que eu iria até sugerir você “considerar” (fugindo um pouco do framework “MVC” mas sem se esquecer do padrão MVC) seria você usar jax-ws com rest… aproveitando ejbs pra facilitar escalabilidade…

ai no lado cliente neste caso não se esquecer de usar alguma lib js como o jquery por exemplo… os componentes vão fazer uma baita falta (seja qualquer framework action based que você tenha escolhido)…rs

F

Não sei se o autor ainda está considerando opiniões, mas hoje eu escolheria Spring + Play! Framework.

Spring com Hibernate 4 (para model/controller) e o Play! Framework para View.

Escalável, Rápido e Produtivo!

T

Se o lance é escalabilidade (e performance da view) vai de VRaptor no controller, jsp e/ou velocity na view, e de Javascript + universo jQuery + CSS3 + Html5 no fron-end. Não tem coisa mais gostosa de trabalhar!

Se não quiser usar o VRaptor, vai de Gson + Servlet 3.0 no back-end que também fica legal.

J

Especificação parece até coisa de religião, importante é seguir o que é amplamente aceito.

É muito relativo sobre ter baixa produtividade inicial ao aprender coisas novas, o fator motivação e melhoria na nova escolha vai compensar à médio prazo esse tempo investido inicialmente. Também passei pelo caso de ficar anos no component-based, só que no .NET, e quando a MS lançou action-based e experimentei não demorou muito para estar mais produtivo e motivado do que antes, antes me sentia desmotivado com manutenções complexas e ajustes finos na camada view, hoje é algo que flui bem melhor.

Sobre questão inicial, eu já usei o Struts2 e achei muito bom, recomendo experimentar. Depois vou experimentar o SpringMVC que me recomendaram. Importante é usar um action based que seja bem aceito nas comunidades, de resto é muito jquery, HTML 4 e 5 e CSS3. De preferência valorize a possibilidade de ter um designer profissional, vai ver um diferencial que se tornará indispensável.

Criado 22 de março de 2012
Ultima resposta 22 de jan. de 2013
Respostas 41
Participantes 21