Preciso de um Framework, mas Preciso de um Framework, mas qual usar? qual usar? Hébert Coelho de Oliveira
About me• Pós: MIT em Engenharia de Software com Java
• Analista Desenvolvedor Sênior: 10 anos+
• Professor de Java para Pós Graduação
• Criador do blog uaiHebert.com
• Certificações: SCJP, SCWCD, OCBCD, OCJPAD
• Livro em andamento: JPA Eficaz
• Revisor do Livro: Primefaces CookBook
• Criador do EasyCriteria
MinhocaMinhoca
O que veremos:O que veremos:Servidores
IDEs
View
Business
Infra
ServidoresServidoresComo escolher o melhor servidor?◦ Material de pesquisa◦ Facilidade de Configuração◦ Necessidade de “re-deploy”◦ Preparo do artefato◦ Cuidado com “blogs”◦ Implementações que podem dar problema
(JSF)◦ Capacidade
Servidores - BenchmarkServidores - Benchmark http://antoniogoncalves.org/2011/10/20/o-java-ee-6-application-servers-where-art-thou/
http://hwellmann.blogspot.com.br/2011/06/java-ee-6-server-comparison.html
ServidoresServidores Tomcat Jetty
JBoss Glassfish TomEE
Weblogic WebSphere
IDEsIDEsEclipse
MyEclipse
Netbeans
Intellij
ViewViewCuidado apenas com prática
Cuidado com “blogs”
Entenda a tecnologia
ViewView
Action Based – (Push-Based)
Component Based – (Pull-Based)
View – Action Based View – Action Based
Código Página
View – Component BasedView – Component Based
Código Página
View – Action x ComponentView – Action x ComponentAction◦ Maior controle do HTML◦ Menor curva de aprendizado◦ Cada ação geraria uma configuração específica
Component◦ Bom para reutilizar código/módulos◦ Design inicial agradável◦ Curva de aprendizado◦ Memória do servidor
View – Struts 1 [AB]View – Struts 1 [AB]Vantagens Desvantagens
Configuração centralizada XML enorme
Formulários Grande curva de aprendizado
Tags Beans/HTML Péssima documentação
Validações Não é transparente
Dá foco ao MVC Abordagem rígida
Muito encontrado no mercado
View – Struts 2 [AB]View – Struts 2 [AB]Vantagens Desvantagens
Fácil de Testar Compatibilidade
Suporte a Ajax Grande curva de aprendizado
Suporte a Anotações Documentação limitada
Diversas views Não é transparente
Plugins
View – VRaptor [AB]View – VRaptor [AB]Vantagens Desvantagens
Fácil de Configurar Não tem muitas vagas
Integrações com outros frameworks
Alguns erros estranhos ainda acontecem
Bom suporte (GUJ)
View – Stripes [AB]View – Stripes [AB]Vantagens Desvantagens
Não necessita de xml Comunidade pequena
Boa documentação Tem menos funcionalidades
Membros da comunidade são ativos
View – JSF [CB]View – JSF [CB]Vantagens Desvantagens
Fácil de começar a usar Difícil de evoluir
Bibliotecas de ótima qualidade
Longa curva de aprendizado
Modularização
i18n – imagens
Front End oficial
View – Wicket [CB]View – Wicket [CB]Vantagens Desvantagens
Boa documentação Bastante atenção as suas regras
Frequentemente atualizado Atualizações costumam quebrar código
Programadores experientes terão mais facilidade
Programadores inexperientes terão mais dificuldade
Pode levar a códigos de extrema complexidade
View – Tapestry [CB]View – Tapestry [CB]Vantagens Desvantagens
Código bem próximo a um HTML
Documentação não muito detalhada
Boa produtividade para quem tem bom conhecimento
Curva de aprendizado bem inclinada
A cada nova versão, muitas funcionalidades estarão disponíveis
Upgrades demoram a chegar
View – GWT [CB]View – GWT [CB]Vantagens Desvantagens
Garantia de compatibilidade do JavaScript
Poucos livros sobre o assunto
Grande empresa como investidora
A compilação de Java para JavaScript é lenta
Bom suporte de IDE Mais códigos do que JQuery
Integra com JUnit / JMock / TestNG
Business - EJBBusiness - EJBVantagens Desvantagens
Isolar a regra de negócio Especificação grande
Proteger em Firewall Extra Alta complexidade
Concurrent Access and Transaction Support
Muita chance de criar soluções complexas e que tenha um alto custo
JAAS
Pool/Caching
Clusterização
PersistênciaPersistência
JDBC
JPA
MyBatis
Build ToolsBuild ToolsTem que ter?
Ant
Maven◦ JRebel
Gradle
Full stackFull stackSpring
JBoss Seam
OBS.: Guice
JRebel Reports - TecnologiasJRebel Reports - Tecnologias http://zeroturnaround.com/rebellabs/developer-productivity-report-2012-
java-tools-tech-devs-and-data/
JRebel Reports - IDEJRebel Reports - IDE
JRebel Reports – Build ToolJRebel Reports – Build Tool
JRebel Reports – ServerJRebel Reports – Server
JRebel JRebel ReportsReportsViewView
Domain-Driven FrameworkDomain-Driven Frameworkopenxava
http://www.openxava.org/Isis
http://isis.apache.org/Roma Framework (Spring IOC)
http://www.romaframework.org/Tynamo (Tapestry)
http://tynamo.org/
Domain-Driven FrameworkDomain-Driven FrameworkNexopen (Spring)
http://nexopen.sourceforge.net/reference/0.4.0/html_single/
jmatter http://jmatter.org/
Vraptor e Spring ROO
Últimas ConsideraçõesÚltimas ConsideraçõesTécnicosTécnicosSuporte ao AjaxBookmark e RESTful URLValidação de dadosCapacidade de testesComo trata Submissão/RedirectFacilidades de i18nScaffolding
Últimas ConsideraçõesÚltimas ConsideraçõesSociais/ArquiteturaSociais/ArquiteturaEstá sendo muito utilizado?Como está a comunidade?Para aprender, tem material?Como é sua arquitetura?O código de um protótipo, é agradável?
Fácil? Complexo?Convenção sobre Configuração
Dúvidas? ContatoDúvidas? Contatohttp://uaihebert.com
http://cv.uaihebert.com