Navegando em um mar de siglas do mundo java

89
Navegando em um mar de siglas do mundo

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 of Navegando em um mar de siglas do mundo java

Page 1: Navegando em um mar de siglas do mundo java

Navegando em um mar de siglas do mundo

Page 2: Navegando em um mar de siglas do mundo java

@andreitognolo

[email protected]

Page 3: Navegando em um mar de siglas do mundo java

andreitognolo/navegando_mar_siglas_java

Page 4: Navegando em um mar de siglas do mundo java

Por que Java?

É cool

Mercado de trabalho

É uma plataforma robusta

Tem uma comunidade ativa

É fácil de aprender

Page 5: Navegando em um mar de siglas do mundo java

Por que Java?

É cool

Mercado de trabalho

É uma plataforma robusta

Tem uma comunidade ativa

Gosto de sofrer

Page 6: Navegando em um mar de siglas do mundo java

O que torna o aprendizado difícil?

Page 7: Navegando em um mar de siglas do mundo java

O que você prefere?

Documentação extensa

Um monte de diagramas

Um livro com 500 páginas

Exemplos fáceis de executar

Page 8: Navegando em um mar de siglas do mundo java

Web

Requisição

Resposta

Lógica de Negócio

InteraçãoBanco de Dados

Banco de Dados

Salva

Consulta

Page 9: Navegando em um mar de siglas do mundo java

Ruby on Rails

Page 10: Navegando em um mar de siglas do mundo java

Servlets JSP

JSF

JPA

EJBJdbc

Hibernate

Spring MVC

PrimeFaces

jQuery Ajax

Struts

JavaScript

Spring

RichFaces

Page 11: Navegando em um mar de siglas do mundo java

Como o Java se tornou tão poderoso?

Page 12: Navegando em um mar de siglas do mundo java

Como o Java se tornou tão poderoso?

Concorr

ência

Page 13: Navegando em um mar de siglas do mundo java

JavaScript Ajax jQuery

Page 14: Navegando em um mar de siglas do mundo java

WebJSP Servlet JSF

Struts Spring MVC

JavaScript Ajax jQuery

PrimeFaces

Page 15: Navegando em um mar de siglas do mundo java

Web

Lógica de Negócio

JSP Servlet JSF

Struts Spring MVC

JavaScript Ajax jQuery

PrimeFaces

EJB Spring

Page 16: Navegando em um mar de siglas do mundo java

Web

Lógica de Negócio

InteraçãoBanco de Dados

JSP Servlet JSF

Struts Spring MVC

JavaScript Ajax jQuery

JPA

PrimeFaces

EJB Spring

HibernateJdbc

Page 17: Navegando em um mar de siglas do mundo java

Web

Lógica de Negócio

InteraçãoBanco de Dados

JSP Servlet JSF

Struts Spring MVC

JavaScript Ajax jQuery

JPA

PrimeFaces

EJB Spring

HibernateJdbc

Page 18: Navegando em um mar de siglas do mundo java
Page 19: Navegando em um mar de siglas do mundo java

Web

Page 20: Navegando em um mar de siglas do mundo java

Exemplo

Page 21: Navegando em um mar de siglas do mundo java

2HTTP => Java

1

(Servidor Web)

3HTTP Request

Java => HTTP

5

HTTP Response

6

4

Page 22: Navegando em um mar de siglas do mundo java

Servlet

Receber uma requisição e processar sua resposta

Page 23: Navegando em um mar de siglas do mundo java

2HTTP => Java

1

(Servidor Web)

3HTTP Request

Java => HTTP

5

HTTP Response

64

Page 24: Navegando em um mar de siglas do mundo java

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

Page 25: Navegando em um mar de siglas do mundo java

Servlet - Pontos fracos?

Page 26: Navegando em um mar de siglas do mundo java

Servlet - Pontos fracos?

Processar resposta HTML de um jeito simples

Page 27: Navegando em um mar de siglas do mundo java

Servlet - Pontos fracos?

Processar resposta HTML de um jeito simples

Mes

mo ass

im e

u

utili

zo a

té h

oje!!

Page 28: Navegando em um mar de siglas do mundo java

JSP (JavaServer Pages)

Processar resposta HTML (template)

Page 29: Navegando em um mar de siglas do mundo java

2HTTP => Java

<html>...

</html>

(consultarClientes.jsp)

5

1

(Servidor Web)

3HTTP Request

Java => HTTP

6

HTTP Response

7

4

Page 30: Navegando em um mar de siglas do mundo java

JSP (JavaServer Pages)

Processar resposta HTML (template)

● Quase tão antiga quanto o Java

● Semelhante a linguagens como PHP

Page 31: Navegando em um mar de siglas do mundo java

JSP - Pontos fracos?

Page 32: Navegando em um mar de siglas do mundo java

JSP - Pontos fracos?

Mistura HTML com código Java

Page 33: Navegando em um mar de siglas do mundo java

JSP - Pontos fracos?

Mistura HTML com código Java

Não provê Ajax "nativo"

Page 34: Navegando em um mar de siglas do mundo java

Struts

Produtividade na criação de aplicações web ("sem" Servlets / "sem" misturar HTML com Java)

Page 35: Navegando em um mar de siglas do mundo 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)

Page 36: Navegando em um mar de siglas do mundo java

JSF (JavaServer Faces)

Produtividade na criação de aplicações web (sem a burocracia do Struts)

Page 37: Navegando em um mar de siglas do mundo java

2HTTP => Java

<html>...

</html>

(consultarClientes.xhtml)

5

1

(Servidor Web)

3HTTP Request

Java => HTTP

6

HTTP Response

7

4

Page 38: Navegando em um mar de siglas do mundo java

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)

Page 39: Navegando em um mar de siglas do mundo java

"Extensões" para JSF

PrimeFaces JBoss RichFaces ICEFaces

Temas

Page 40: Navegando em um mar de siglas do mundo java

"Extensões" para JSF

PrimeFaces JBoss RichFaces ICEFaces

Temas

Page 41: Navegando em um mar de siglas do mundo java

JSF (s/ extensão)

Page 42: Navegando em um mar de siglas do mundo java
Page 43: Navegando em um mar de siglas do mundo java

JSF - Pontos fracos?

Page 44: Navegando em um mar de siglas do mundo java

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)

Page 45: Navegando em um mar de siglas do mundo java

Persistência

Page 46: Navegando em um mar de siglas do mundo java

Banco de Dados

SELECT ...

Resultado

Banco de Dados

INSERT INTO ...

Page 47: Navegando em um mar de siglas do mundo java

JDBC (Java DataBase Connectivity)

● Pode comunicar com "qualquer" banco de dados

Conectar e executar comandos SQL nos bancos de dados

Page 48: Navegando em um mar de siglas do mundo java

JDBC

Exemplos:

Consultar cliente por Id

Incluir novo cliente

Page 49: Navegando em um mar de siglas do mundo java

Jdbc - Pontos fracos?

Page 50: Navegando em um mar de siglas do mundo java

Jdbc - Pontos fracos?

O desenvolvedor tem que escrever a SQL

Page 51: Navegando em um mar de siglas do mundo java

Jdbc - Pontos fracos?

O desenvolvedor tem que escrever a SQL

O que fazer com herança?

Page 52: Navegando em um mar de siglas do mundo java

JPA (Java Persistence API)

Abstrair o fato que o banco de dados não é orientado a objetos

Page 53: Navegando em um mar de siglas do mundo java

Banco de Dados

SELECT ...

Resultado

Banco de Dados

INSERT INTO ...

JPA

JPA

Page 54: Navegando em um mar de siglas do mundo java

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

Page 55: Navegando em um mar de siglas do mundo java

JPA - Pontos fracos?

Geração de código SQL

Page 56: Navegando em um mar de siglas do mundo java

JPA

API Framework

Hibernate

Page 57: Navegando em um mar de siglas do mundo java

JPA

API Framework

Só interfaces e annotations Faz o trabalho duro

Hibernate

Page 58: Navegando em um mar de siglas do mundo java

JPA

API Framework

Só interfaces e annotations Faz o trabalho duro

Especificação JavaEE Segue espec e tem + coisas

Hibernate

Page 59: Navegando em um mar de siglas do mundo java

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

Page 60: Navegando em um mar de siglas do mundo java

Lógica de Negócio

Page 61: Navegando em um mar de siglas do mundo java

Lógica de Negócio

Exemplo:

Transferência bancária entre contas

Page 62: Navegando em um mar de siglas do mundo java

Preciso de alguma API/framework para implementar minha lógica de

negócio?

Page 63: Navegando em um mar de siglas do mundo java

Lógica de Negócio

Revisitando o exemplo:

Transferência bancária entre contas

Page 64: Navegando em um mar de siglas do mundo java

Preciso de alguma API/framework para implementar minha lógica de

negócio?

Page 65: Navegando em um mar de siglas do mundo java

Mas seria bom separar minha lógica de negócios do "resto"

Em geral, NÃO

Page 66: Navegando em um mar de siglas do mundo java

EJB (Enterprise JavaBeans)

● Especificação bastante abrangente

Separa a lógica de negócios da infraestrutura

Page 67: Navegando em um mar de siglas do mundo java

Quais são os problemas de infraestrutura?

● Transação

Page 68: Navegando em um mar de siglas do mundo java

Quais são os problemas de infraestrutura?

● Transação

● Acesso remoto

Page 69: Navegando em um mar de siglas do mundo java

Quais são os problemas de infraestrutura?

● Transação

● Acesso remoto

● Autenticação e Autorização

Page 70: Navegando em um mar de siglas do mundo java

Quais são os problemas de infraestrutura?

● Transação

● Acesso remoto

● Autenticação e Autorização

● Envio de mensagens assíncronas

Page 71: Navegando em um mar de siglas do mundo java

Quais são os problemas de infraestrutura?

● Transação

● Acesso remoto

● Autenticação e Autorização

● Envio de mensagens assíncronas

● Agendamento de tarefas

Page 72: Navegando em um mar de siglas do mundo java

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

Page 73: Navegando em um mar de siglas do mundo java

EJB - Pontos fracos?

Page 74: Navegando em um mar de siglas do mundo java

EJB - Pontos fracos?

Precisa de um Servidor de Aplicação

Page 75: Navegando em um mar de siglas do mundo java

Servidor Web

Tomcat, Jetty JBoss, GlassFish, WebSphere

Servidor de Aplicação

Page 76: Navegando em um mar de siglas do mundo java

Servidor Web

Tomcat, Jetty JBoss, GlassFish, WebSphere

Não entende EJB Entende EJB

Servidor de Aplicação

Page 77: Navegando em um mar de siglas do mundo java

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

Page 78: Navegando em um mar de siglas do mundo java

Sendo um consultor de arquiteturas

Page 79: Navegando em um mar de siglas do mundo java

Cenário 1

Sistema para locadora do bairro onde você mora

Page 80: Navegando em um mar de siglas do mundo java

Cenário 1

Sistema para locadora do bairro onde você mora

JSF JPA

(JBoss)

EJB

Page 81: Navegando em um mar de siglas do mundo java

Cenário 2

Sistema para locadora do bairro onde você mora

Page 82: Navegando em um mar de siglas do mundo java

Cenário 2

Sistema para locadora do bairro onde você mora

JSP

ServletJPA

(Tomcat)

Page 83: Navegando em um mar de siglas do mundo java

Cenário 3

Sistema para um consultório médico

Page 84: Navegando em um mar de siglas do mundo java

Cenário 3

Sistema para um consultório médico

JSF JPA

(JBoss)

Page 85: Navegando em um mar de siglas do mundo java

Cenário 4

Reestruturação de um módulo de um sistema bancário

Page 86: Navegando em um mar de siglas do mundo java

Cenário 4

Reestruturação de um pedaço de um sistema bancário

JSF JPA

(Tomcat)

Page 87: Navegando em um mar de siglas do mundo java

Cenário 5

Criação de gestor de conteúdo para site de grande porte

Page 88: Navegando em um mar de siglas do mundo java

Cenário 5

Criação de gestor de conteúdo para site de grande porte

JSF JPA

(Tomcat)

Page 89: Navegando em um mar de siglas do mundo java

@andreitognolo

[email protected]