navegando em um mar de siglas do mundo java
DESCRIPTION
O números de apis e frameworks que existem para a plataforma Java podem assustar novos desenvolvedores. Essa palestra busca mostrar uma visão geral das principais apis relacionadas ao padrão JavaEE. Após visitar as principais tecnologias JavaEE, vamos analisar cenários e decidir quais tecnologias utilizar.TRANSCRIPT
Navegando em um mar de siglas do mundo
@andreitognolo
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çãoBanco de Dados
Banco de Dados
Salva
Consulta
Ruby on Rails
Servlets JSP
JSF
JPA
EJBJdbc
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
WebJSP 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çãoBanco de Dados
JSP Servlet JSF
Struts Spring MVC
JavaScript Ajax jQuery
JPA
PrimeFaces
EJB Spring
HibernateJdbc
Web
Lógica de Negócio
InteraçãoBanco de Dados
JSP Servlet JSF
Struts Spring MVC
JavaScript Ajax jQuery
JPA
PrimeFaces
EJB Spring
HibernateJdbc
Web
Exemplo
2HTTP => Java
1
(Servidor Web)
3HTTP Request
Java => HTTP
5
HTTP Response
6
4
Servlet
Receber uma requisição e processar sua resposta
2HTTP => Java
1
(Servidor Web)
3HTTP Request
Java => HTTP
5
HTTP Response
64
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
Mes
mo ass
im e
u
utili
zo a
té h
oje!!
JSP (JavaServer Pages)
Processar resposta HTML (template)
2HTTP => Java
<html>...
</html>
(consultarClientes.jsp)
5
1
(Servidor Web)
3HTTP 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)
2HTTP => Java
<html>...
</html>
(consultarClientes.xhtml)
5
1
(Servidor Web)
3HTTP 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
ServletJPA
(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