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

Preview:

Citation preview

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

Recommended