Navegando em um mar de siglas do mundo java

Post on 27-Jun-2015

703 views 1 download

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

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çã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

andreitognolo@gmail.com