Comparativo de frameworks: O mapa da mina Vinicius Senger [email protected] vsenger.blogspot.com Alberto J Lemos (Dr. Spock) Instrutor Globalcode Melissa Villela Instrutora Globalcode 1 Globalcode – Open4Education Arquiteturas Corporativas > Após 10 anos de desenvolvimento Web com Java, podemos resumir as arquiteturas: 1. 2. 3. 4. 5. 6. 7. 8. 9. 2 JSP-Centric; MVC proprietário com JSP; Struts 1.x isolado; JSF 1.x isolado; Shale; Spring com Struts; Spring com JSF; JBoss Seam; Quase todas podem usar ou não EJB’s Globalcode – Open4Education Arquiteturas Corporativas > Diversos conflitos foram superados e novas idéias aceitas: > > > > > > > > > 3 Listeners Web; Anotações e Aspectos; Persistência; Linguagem para camada view; Produtividade; Injeção de dependência; EJB ou não? Scripting languages; OSGi; Globalcode – Open4Education 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 Servlets e JSPs; 4 Globalcode – Open4Education Arquiteturas Corporativas > Independente do que vai decidir, sugerimos esta lista de adoções obrigatórias: > > > > > > > > 5 JSF; Richfaces; JPA com Hibernate; Facelets e XHTML; Message-driven bean; Eclipse ou Netbeans; JUnit, Seleniun e Fitnesse para testes; Se estiver sem banco, MySQL; Globalcode – Open4Education Arquiteturas Corporativas > Bons programadores e arquitetos ajudam um bocado! 6 Globalcode – Open4Education Arquiteturas Corporativas > Vamos propor uma matriz de arquiteturas contemplando as seguintes opções: > > > > > > 7 Framework caseiro; Struts; Shale; JSF puro; Spring com JSF; JBoss Seam; Globalcode – Open4Education 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 solução; 8 Globalcode – Open4Education Struts > > > > > > > > 9 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 + Validator + Hibernate + Log4J Globalcode – Open4Education Struts > > > > 10 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; Globalcode – Open4Education Shale > É um framework web, baseado em JavaServer Faces > Sua arquitetura é composta por diversos serviços independentes 11 Globalcode – Open4Education 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 > Suporte para remoting 12 Globalcode – Open4Education 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 > Curva aprendizado? Simples 13 Globalcode – Open4Education Shale > > > > > > > > > 14 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 Suporte da comunidade? Muito pouco Globalcode – Open4Education 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; > Exemplo Alfresco; 15 Globalcode – Open4Education 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 > Suporte da comunidade? Bastante 16 Globalcode – Open4Education 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; 17 Globalcode – Open4Education Seam > > > > > > 18 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 pode-se passar por situações dificeis; Globalcode – Open4Education 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 > Suporte no Brasil? Sim, via RedHat > Suporte da comunidade? Algum 19 Globalcode – Open4Education 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. 20 Globalcode – Open4Education Qual é o seu framework? > SPRING 21 Globalcode – Open4Education 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. 22 Globalcode – Open4Education Qual é o seu framework? > Jboss Seam 23 Globalcode – Open4Education 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.. 24 Globalcode – Open4Education Qual é o seu framework? > JSF + JPA com DAO e isolamento Web dos backing beans JSF; 25 Globalcode – Open4Education 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. 26 Globalcode – Open4Education Qual é o seu framework? > Back-end de pesquisas: JMS, MDB, JPA, JTA > Front-end: Spring ou Seam, com Richfaces / JSF 27 Globalcode – Open4Education Qual é o seu framework? > Obrigatoriamente queremos suporte no framework escolhido. > Seam. 28 Globalcode – Open4Education Qual é o seu framework? > Quero escolher o framework que tenha pelo menos 2 IDEs com suporte concreto para o framework: > Spring. 29 Globalcode – Open4Education Qual é o seu framework? > Para o público, qual é o seu framework? 30 Globalcode – Open4Education