Preciso de um Framework, masPreciso 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
ServidoresServidores
Como 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
IDEsIDEs
Eclipse
MyEclipse
Netbeans
Intellij
ViewView
Cuidado apenas com prática
Cuidado com “blogs”
Entenda a tecnologia
ViewView
Action Based – (Push-Based)
Component Based – (Pull-Based)
View – Action BasedView – Action Based
Código Página
View – Component BasedView – Component Based
Código Página
View – Action x ComponentView – Action x Component
Action
◦ 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 - EJB
Vantagens 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 Tools
Tem que ter?
Ant
Maven
◦ JRebel
Gradle
Full stackFull stack
Spring
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
JRebelJRebel
ReportsReports
ViewView
Domain-Driven FrameworkDomain-Driven Framework
openxava
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 Framework
Nexopen (Spring)
http://nexopen.sourceforge.net/reference/0.4.0/html_single/
jmatter
http://jmatter.org/
Vraptor e Spring ROO
Últimas ConsideraçõesÚltimas Considerações
TécnicosTécnicos
Suporte ao Ajax
Bookmark e RESTful URL
Validação de dados
Capacidade de testes
Como trata Submissão/Redirect
Facilidades de i18n
Scaffolding
Últimas ConsideraçõesÚltimas Considerações
Sociais/ArquiteturaSociais/Arquitetura
Está 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? Contato
http://uaihebert.com
http://cv.uaihebert.com

TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?

  • 1.
    Preciso de umFramework, masPreciso de um Framework, mas qual usar?qual usar? Hébert Coelho de Oliveira
  • 2.
    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
  • 4.
  • 5.
    O que veremos:Oque veremos: Servidores IDEs View Business Infra
  • 6.
    ServidoresServidores Como escolher omelhor 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
  • 7.
    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
  • 8.
    ServidoresServidores  Tomcat  Jetty JBoss  Glassfish  TomEE  Weblogic  WebSphere
  • 9.
  • 10.
    ViewView Cuidado apenas comprática Cuidado com “blogs” Entenda a tecnologia
  • 11.
    ViewView Action Based –(Push-Based) Component Based – (Pull-Based)
  • 12.
    View – ActionBasedView – Action Based Código Página
  • 13.
    View – ComponentBasedView – Component Based Código Página
  • 14.
    View – Actionx ComponentView – Action x Component Action ◦ 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
  • 15.
    View – Struts1 [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
  • 16.
    View – Struts2 [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
  • 17.
    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)
  • 18.
    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
  • 19.
    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
  • 20.
    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
  • 21.
    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
  • 22.
    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
  • 23.
    Business - EJBBusiness- EJB Vantagens 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
  • 24.
  • 25.
    Build ToolsBuild Tools Temque ter? Ant Maven ◦ JRebel Gradle
  • 26.
  • 27.
    JRebel Reports -TecnologiasJRebel Reports - Tecnologias  http://zeroturnaround.com/rebellabs/developer-productivity-report-2012- java-tools-tech-devs-and-data/
  • 28.
    JRebel Reports -IDEJRebel Reports - IDE
  • 29.
    JRebel Reports –Build ToolJRebel Reports – Build Tool
  • 30.
    JRebel Reports –ServerJRebel Reports – Server
  • 31.
  • 32.
    Domain-Driven FrameworkDomain-Driven Framework openxava http://www.openxava.org/ Isis http://isis.apache.org/ RomaFramework (Spring IOC) http://www.romaframework.org/ Tynamo (Tapestry) http://tynamo.org/
  • 33.
    Domain-Driven FrameworkDomain-Driven Framework Nexopen(Spring) http://nexopen.sourceforge.net/reference/0.4.0/html_single/ jmatter http://jmatter.org/ Vraptor e Spring ROO
  • 34.
    Últimas ConsideraçõesÚltimas Considerações TécnicosTécnicos Suporteao Ajax Bookmark e RESTful URL Validação de dados Capacidade de testes Como trata Submissão/Redirect Facilidades de i18n Scaffolding
  • 35.
    Últimas ConsideraçõesÚltimas Considerações Sociais/ArquiteturaSociais/Arquitetura Está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
  • 36.