SlideShare une entreprise Scribd logo
1  sur  89
Télécharger pour lire hors ligne
Navegando em um
mar de siglas do mundo
@andreitognolo
andreitognolo@gmail.com
andreitognolo/navegando_mar_siglas_java
Por que Java?
É cool
Mercado de trabalho
É uma plataforma robusta
Tem uma comunidade ativa
É fácil de aprender
Por que Java?
É cool
Mercado de trabalho
É uma plataforma robusta
Tem uma comunidade ativa
Gosto de sofrer
O que torna o aprendizado difícil?
O que você prefere?
Documentação extensa
Um monte de diagramas
Um livro com 500 páginas
Exemplos fáceis de executar
Web
Requisição
Resposta
Lógica de Negócio
Interação
Banco de Dados
Banco de
Dados
Salva
Consulta
Ruby on Rails
Servlets JSP
JSF
JPA
EJB
Jdbc
Hibernate
Spring MVC
PrimeFaces
jQuery Ajax
Struts
JavaScript
Spring
RichFaces
Como o Java se tornou tão
poderoso?
Como o Java se tornou tão
poderoso?
Concorrência
JavaScript Ajax jQuery
Web
JSP Servlet JSF
Struts Spring MVC
JavaScript Ajax jQuery
PrimeFaces
Web
Lógica de Negócio
JSP Servlet JSF
Struts Spring MVC
JavaScript Ajax jQuery
PrimeFaces
EJB Spring
Web
Lógica de Negócio
Interação
Banco de Dados
JSP Servlet JSF
Struts Spring MVC
JavaScript Ajax jQuery
JPA
PrimeFaces
EJB Spring
HibernateJdbc
Web
Lógica de Negócio
Interação
Banco de Dados
JSP Servlet JSF
Struts Spring MVC
JavaScript Ajax jQuery
JPA
PrimeFaces
EJB Spring
HibernateJdbc
Web
Exemplo
2
HTTP => Java
1
(Servidor Web)
3
HTTP Request
Java => HTTP
5
HTTP Response
6
4
Servlet
Receber uma requisição e processar sua
resposta
2
HTTP => Java
1
(Servidor Web)
3
HTTP Request
Java => HTTP
5
HTTP Response
6
4
Servlet
● Quase tão antiga quanto o Java
● Maneira mais "roots" possível
● Não inclui forma fácil de se escrever HTML
Receber uma requisição e processar sua
resposta
Servlet - Pontos fracos?
Servlet - Pontos fracos?
Processar resposta HTML de um jeito
simples
Servlet - Pontos fracos?
Processar resposta HTML de um jeito
simples
Mesmo assim eu
utilizo até hoje!!
JSP (JavaServer Pages)
Processar resposta HTML (template)
2
HTTP => Java
<html>
...
</html>
(consultarClientes.jsp)
5
1
(Servidor Web)
3
HTTP Request
Java => HTTP
6
HTTP Response
7
4
JSP (JavaServer Pages)
Processar resposta HTML (template)
● Quase tão antiga quanto o Java
● Semelhante a linguagens como PHP
JSP - Pontos fracos?
JSP - Pontos fracos?
Mistura HTML com código Java
JSP - Pontos fracos?
Mistura HTML com código Java
Não provê Ajax "nativo"
Struts
Produtividade na criação de aplicações web
("sem" Servlets / "sem" misturar HTML com Java)
Struts
● Não é um padrão JavaEE
● Bastante "burocracia" para criar as páginas
● Struts 1.x foi um sucesso! (última versão em 2008)
● Struts 2.x nunca ouvi falar de alguém usando
Produtividade na criação de aplicações web
("sem" Servlets / "sem" misturar HTML com Java)
JSF (JavaServer Faces)
Produtividade na criação de aplicações web
(sem a burocracia do Struts)
2
HTTP => Java
<html>
...
</html>
(consultarClientes.xhtml)
5
1
(Servidor Web)
3
HTTP Request
Java => HTTP
6
HTTP Response
7
4
JSF (JavaServer Faces)
● Padrão JavaEE
● Componentes (não escrevemos HTML, ele é gerado)
● Provê Ajax "nativo"
Produtividade na criação de aplicações web
(sem a burocracia do Struts)
"Extensões" para JSF
PrimeFaces JBoss RichFaces ICEFaces
Temas
"Extensões" para JSF
PrimeFaces JBoss RichFaces ICEFaces
Temas
JSF (s/ extensão)
JSF - Pontos fracos?
JSF - Pontos fracos?
Geração de código HTML, CSS e JavaScript
(confie em mim, você não quer ver o código que ele gera)
Persistência
Banco de
Dados
SELECT ...
Resultado
Banco de
Dados
INSERT INTO ...
JDBC (Java DataBase Connectivity)
● Pode comunicar com "qualquer" banco de dados
Conectar e executar comandos SQL nos
bancos de dados
JDBC
Exemplos:
Consultar cliente por Id
Incluir novo cliente
Jdbc - Pontos fracos?
Jdbc - Pontos fracos?
O desenvolvedor tem que escrever a SQL
Jdbc - Pontos fracos?
O desenvolvedor tem que escrever a SQL
O que fazer com herança?
JPA (Java Persistence API)
Abstrair o fato que o banco de dados
não é orientado a objetos
Banco de
Dados
SELECT ...
Resultado
Banco de
Dados
INSERT INTO ...
JPA
JPA
JPA (Java Persistence API)
● Não é preciso escrever SQLs de INSERT/UPDATE
● Facilita trabalhar com herança no banco de dados
Abstrair o fato que o banco de dados
não é orientado a objetos
JPA - Pontos fracos?
Geração de código SQL
JPA
API Framework
Hibernate
JPA
API Framework
Só interfaces e annotations Faz o trabalho duro
Hibernate
JPA
API Framework
Só interfaces e annotations Faz o trabalho duro
Especificação JavaEE Segue espec e tem + coisas
Hibernate
JPA
API Framework
Só interfaces e annotations Faz o trabalho duro
Especificação JavaEE Segue espec e tem + coisas
Definido pela Oracle Concorrentes: TopLink,
OpenJPA, ...
Hibernate
Lógica de Negócio
Lógica de Negócio
Exemplo:
Transferência bancária entre contas
Preciso de alguma API/framework
para implementar minha lógica de
negócio?
Lógica de Negócio
Revisitando o exemplo:
Transferência bancária entre contas
Preciso de alguma API/framework
para implementar minha lógica de
negócio?
Mas seria bom separar minha
lógica de negócios do "resto"
Em geral, NÃO
EJB (Enterprise JavaBeans)
● Especificação bastante abrangente
Separa a lógica de negócios da
infraestrutura
Quais são os problemas de infraestrutura?
● Transação
Quais são os problemas de infraestrutura?
● Transação
● Acesso remoto
Quais são os problemas de infraestrutura?
● Transação
● Acesso remoto
● Autenticação e Autorização
Quais são os problemas de infraestrutura?
● Transação
● Acesso remoto
● Autenticação e Autorização
● Envio de mensagens assíncronas
Quais são os problemas de infraestrutura?
● Transação
● Acesso remoto
● Autenticação e Autorização
● Envio de mensagens assíncronas
● Agendamento de tarefas
Quais são os problemas de infraestrutura?
● Transação
● Acesso remoto
● Autenticação e Autorização
● Envio de mensagens assíncronas
● Agendamento de tarefas
JTA
Session Bean (@Remote)
JAAS
JMS
Timer Service
EJB - Pontos fracos?
EJB - Pontos fracos?
Precisa de um Servidor de Aplicação
Servidor Web
Tomcat, Jetty JBoss, GlassFish, WebSphere
Servidor de Aplicação
Servidor Web
Tomcat, Jetty JBoss, GlassFish, WebSphere
Não entende EJB Entende EJB
Servidor de Aplicação
Servidor Web
Tomcat, Jetty JBoss, GlassFish, WebSphere
Não entende EJB Entende EJB
Leve (sobe rápido) Pesado (demora mais para subir)
Servidor de Aplicação
Sendo um consultor de
arquiteturas
Cenário 1
Sistema para locadora do bairro onde você mora
Cenário 1
Sistema para locadora do bairro onde você mora
JSF JPA
(JBoss)
EJB
Cenário 2
Sistema para locadora do bairro onde você mora
Cenário 2
Sistema para locadora do bairro onde você mora
JSP
Servlet
JPA
(Tomcat)
Cenário 3
Sistema para um consultório médico
Cenário 3
Sistema para um consultório médico
JSF JPA
(JBoss)
Cenário 4
Reestruturação de um módulo de um sistema
bancário
Cenário 4
Reestruturação de um pedaço de um sistema
bancário
JSF JPA
(Tomcat)
Cenário 5
Criação de gestor de conteúdo para site de
grande porte
Cenário 5
Criação de gestor de conteúdo para site de
grande porte
JSF JPA
(Tomcat)
@andreitognolo
andreitognolo@gmail.com

Contenu connexe

Tendances

Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
Sérgio Vilar
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
Leandro Costa
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
Elenilson Vieira
 

Tendances (20)

Curso jsf
Curso jsfCurso jsf
Curso jsf
 
ASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVC
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Desenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVCDesenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVC
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
JSF 2 e Primefaces - 4º Encontro Mensal do Gojava
JSF 2 e Primefaces - 4º Encontro Mensal do GojavaJSF 2 e Primefaces - 4º Encontro Mensal do Gojava
JSF 2 e Primefaces - 4º Encontro Mensal do Gojava
 
ASP .NET MVC na Prática - C. Augusto Proiete
ASP .NET MVC na Prática - C. Augusto ProieteASP .NET MVC na Prática - C. Augusto Proiete
ASP .NET MVC na Prática - C. Augusto Proiete
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
 
Conhecendo os Padrões De Projetos
Conhecendo os Padrões De ProjetosConhecendo os Padrões De Projetos
Conhecendo os Padrões De Projetos
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Java: Por onde começar nos dias de hoje?
Java: Por onde começar nos dias de hoje?Java: Por onde começar nos dias de hoje?
Java: Por onde começar nos dias de hoje?
 
Mvc
MvcMvc
Mvc
 

Similaire à Navegando em um mar de siglas do mundo java

Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
MoisesInacio
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafx
alfredofurtado
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
jesuinoPower
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
Frederico Maia Arantes
 

Similaire à Navegando em um mar de siglas do mundo java (20)

Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
Introdução - Java WEB
Introdução - Java WEBIntrodução - Java WEB
Introdução - Java WEB
 
XPT Framework
XPT FrameworkXPT Framework
XPT Framework
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafx
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Lab
LabLab
Lab
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSF
 
Aula 1 apresentação
Aula 1   apresentaçãoAula 1   apresentação
Aula 1 apresentação
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
 

Plus de Andrei Tognolo

Plus de Andrei Tognolo (7)

Mais de 24 anos de Scrum - Ainda faz sentido usar?
Mais de 24 anos de Scrum - Ainda faz sentido usar?Mais de 24 anos de Scrum - Ainda faz sentido usar?
Mais de 24 anos de Scrum - Ainda faz sentido usar?
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deployments
 
Fronteiras entre o Lean e a Gambiarra
Fronteiras entre o Lean e a GambiarraFronteiras entre o Lean e a Gambiarra
Fronteiras entre o Lean e a Gambiarra
 
Reducing passive interruptions
Reducing passive interruptionsReducing passive interruptions
Reducing passive interruptions
 
Porque nosso time parou de estimar
Porque nosso time parou de estimarPorque nosso time parou de estimar
Porque nosso time parou de estimar
 
Testes UI: não aceite mais falso negativos
Testes UI: não aceite mais falso negativosTestes UI: não aceite mais falso negativos
Testes UI: não aceite mais falso negativos
 
Refatorar! Porque ninguém gosta de código que cheira mal
Refatorar! Porque ninguém gosta de código que cheira malRefatorar! Porque ninguém gosta de código que cheira mal
Refatorar! Porque ninguém gosta de código que cheira mal
 

Navegando em um mar de siglas do mundo java