Comparativo de frameworks:
O mapa da mina
Vinicius Senger
[email protected] vsenger.blogspot.com
Alberto J Lemos (Dr. Spock)
Instrutor Globalcode
Globalcode – Open4Education
2
Arquiteturas Corporativas
> Após 10 anos de desenvolvimento Web com
Java, podemos resumir as arquiteturas:
1. JSP-Centric;
2. MVC proprietário com JSP;
3. Struts 1.x isolado;
4. JSF 1.x isolado;
5. Shale;
6. Spring com Struts;
7. Spring com JSF;
8. JBoss Seam;
Arquiteturas Corporativas
> Diversos conflitos foram superados e novas idéias aceitas:
> Listeners Web;
> Anotações e Aspectos;
> Persistência;
> Linguagem para camada view;
> Produtividade;
> Injeção de dependência;
> EJB ou não?
Globalcode – Open4Education
4
Arquiteturas Corporativas
> Arquiteturas atuais mais adotadas são:
> JSF puro com alguns patterns;
> Seam / JSF / EJB;
> Spring / JSF / Hibernate;
> Arquiteturas legadas mais populares são:
> Struts 1.x;
> Shale;
> Frameworks proprietários baseados em MVC com
Arquiteturas Corporativas
> Independente do que vai decidir, sugerimos esta lista de adoções obrigatórias:
> JSF;
> Richfaces;
> JPA com Hibernate;
> Facelets e XHTML;
> Message-driven bean;
> Eclipse ou Netbeans;
> JUnit, Seleniun e Fitnesse para testes;
Globalcode – Open4Education
6
Arquiteturas Corporativas
> Bons programadores e arquitetos ajudam um
Arquiteturas Corporativas
> Vamos propor uma matriz de arquiteturas contemplando as seguintes opções:
> Framework caseiro; > Struts; > Shale; > JSF puro; > Spring com JSF; > JBoss Seam;
Globalcode – Open4Education
8
Framework caseiro
> Grande benefício para o profissional que desenvolve;
> Quase nenhum benefício para project owner;
> Isolava a solução das guerras de frameworks de 2000-2006;
> Não tem nenhum sentido para uma nova
Struts
> Nasceu em 2002 com o Java EE 1.2;
> Não contava com listener;
> Não contava com intercepting filter; > Popularizou muito o padrão MVC; > Orientado por Action;
> Foi muito melhorado nas versões 1.2 e 1.3; > Projeto desacelerado em função de JSF; > Struts não é dificil, mas... Struts + Tiles +
Globalcode – Open4Education
10
Struts
> Não justifica mais para projetos novos; > Deve ser respeitado como um legado; > Contribuiu para o que temos hoje;
> Atualmente um grande número de profissionais conhecem Struts;
Shale
> É um framework web, baseado em JavaServer
Faces
> Sua arquitetura é composta por diversos serviços independentes
Globalcode – Open4Education
12
Shale
> Estes serviços podem ser unificados de acordo com as necessidades particulares da sua
aplicação
> Event callbacks
> Conversation scope
> Clay (view technology)
> Configurações baseadas em anotações
Shale
> Integração para outros frameworks para facilitar o desenvolvimento quando é necessário utilizar outras tecnologias
> OSGI? Não
> IDEs? Plugins pro eclipse > JCP? Não
> MVC? Sim
> Múltiplos frameworks? JNDI, Tiles, Spring
Globalcode – Open4Education
14
Shale
> Profissionais de mercado? Pouco > Web 2.0? Sim
> Aspectos? Não
> Testes? Sim, compatibilidade com Selenium
> Remoting? Sim
> Web Services? Não > Rest? Não
> Suporte no Brasil? Nenhum
Spring
> Moderno e em constante ascensão nos últimos
dois anos;
> Nasceu como uma alternativa para EJBs;
> Grande ênfase em injeção de dependência e aspectos;
Globalcode – Open4Education
16
Spring
> Profissionais de mercado? iguala ao número para EJB
> Web 2.0? Sim > Aspectos? Sim
> Testes? Sim, compatibilidade com Selenium
> Remoting? Sim
> Web Services? Sim > Rest? Sim
> Suporte no Brasil? Nenhum
Spring
> OSGI? Sim
> IDEs? Eclipse / NetBeans > JCP? Não
> MVC? Sim, implementação própria ou permite
usar Struts / JSF;
> Múltiplos frameworks? Ampla gama de opções
além do portfolio proprietário;
> Curva aprendizado? Container = fácil, AOP = médio / avançado;
Globalcode – Open4Education
18
Seam
> OSGI? Ainda não nativo;
> IDEs? Eclipse Europa + JBoss tools
> JCP? Sim, WebBeans, Java EE 7
> MVC? Sim, uso aprimorado do JSF;
> Múltiplos frameworks? Integra-se com Spring;
> Curva aprendizado? Fácil de aprender, mas
Seam
> Profissionais de mercado? Poucos, mas JSF + EJB é 80% do caminho;
> Web 2.0? Sim > Aspectos? Sim > Testes? Sim
> Remoting? Sim
> Web Services? Sim > Rest? Sim
Globalcode – Open4Education
20
Qual é o seu framework?
> Usamos Struts e não poderemos migrar as aplicações em curto prazo. Gostaria de um
framework que mantivesse compatibilidade com Struts e ofereça recursos modernos.
Qual é o seu framework?
Globalcode – Open4Education
22
Qual é o seu framework?
> Nossa empresa precisa de uma plataforma
robusta, escalável e um framework para Web 2.0 que permita construção “instantânea” de aplicativos como Rails, mas também permita construção de aplicativo com EJBs quando necessário.
Qual é o seu framework?
Globalcode – Open4Education
24
Qual é o seu framework?
> Acabamos de aprender Java e Java para Web.
Vamos fazer nossa primeira solução na
empresa. Queremos uma arquitetura mais simples, mas que permita o reuso dos seus componentes fundamentais no futuro, em arquiteturas mais robustas..
Qual é o seu framework?
> JSF + JPA com DAO e isolamento Web dos
Globalcode – Open4Education
26
Qual é o seu framework?
> Precisamos de uma arquitetura com AJAX que
permita o disparo de multiplas buscas dentro da mesma janela do navegador. A medida que as respostas chegarem um painel da página HTML deve ser re-renderizado com os novos dados
que chegaram por AJAX. Quero alta
confiabilidade na recepção das requesições de pesquisa do usuário.
Qual é o seu framework?
> Back-end de pesquisas: JMS, MDB, JPA, JTA
> Front-end: Spring ou Seam, com Richfaces / JSF
Globalcode – Open4Education
28
Qual é o seu framework?
> Obrigatoriamente queremos suporte no framework escolhido.
Qual é o seu framework?
> Quero escolher o framework que tenha pelo menos 2 IDEs com suporte concreto para o framework:
Globalcode – Open4Education
30