Tutorial Java EE

74
Slide 1 Globalcode Mini-curso Gratuito

description

Mini-curso Globalcode / VOfficeMC34 - Tutorial Java EE

Transcript of Tutorial Java EE

Page 1: Tutorial Java EE

Slide 1 Globalcode

Mini-curso Gratuito

Page 2: Tutorial Java EE

Slide 2 Globalcode

Tutorial Java Enterprise Tutorial Java Enterprise Edition Edition ((Java EEJava EE))

Mini-curso Gratuito

Rodrigo Cândido da Silva Instrutor VOffice / Globalcode

Page 3: Tutorial Java EE

Slide 3 Globalcode

Objetivo

Conhecer a plataforma Java Enterprise Edition 5

e entender as principais diferenças desta versão

em relação as versões anteriores

Page 4: Tutorial Java EE

Slide 4 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 5: Tutorial Java EE

Slide 5 Globalcode

Rodrigo Cândido da Silva Rodrigo Cândido da Silva –– rcandidosilvarcandidosilva@@gmailgmail..comcom TrabalhaTrabalha: : Arquiteto Java Arquiteto Java / / InstrutorInstrutor

ExperiênciaExperiência: : 88 anos na anos na áárea de desenvolvimento de rea de desenvolvimento de sistemassistemas, , trabalhando com Java desde trabalhando com Java desde 20012001;;

CertificaCertificaççõesões: : SCJASCJA, , SCJPSCJP, , SCWCDSCWCD, , SCBCDSCBCD, , SCEASCEA

Palestrante

Page 6: Tutorial Java EE

Slide 6 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 7: Tutorial Java EE

Slide 7 Globalcode

Plataforma Java

• Desenvolvimento de software robusto para diferentes tipos de dispositivos � PC, celular, palmtop, robôs, etc.

• Software Multiplataforma � “Escreva uma vez e execute em qualquer lugar...” � Código não precisa ser recompilado para executar em outro sistema

operacional

• Máquina Virtual (Java Virtual Machine - JVM) � Responsável por oferecer a flexibilidade de sistema operacional para

um software Java

• Mantida pela comunidade de desenvolvedores por meio do JCP (Java Community Process)

Page 8: Tutorial Java EE

Slide 8 Globalcode

Java Community Process (JCP)

Page 9: Tutorial Java EE

Slide 9 Globalcode

Plataforma Java

• A plataforma é dividida em três partes:

�Java Standard Edition (Java SE) � Base do Java que contém as principais APIs

�Java Enterprise Editon (Java EE) � Versão de Java para desenvolvimento de aplicações Web e enterprise

que rodam em servidores padronizados

�Java Micro Edition (Java ME)

� Redução da plataforma Standard para dispositivos móveis como PDA e celulares

Page 10: Tutorial Java EE

Slide 10 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 11: Tutorial Java EE

Slide 11 Globalcode

Java Enterprise Edition

• Suporte ao desenvolvimento de aplicações “enterprise” �Aplicações distribuídas, seguras, escaláveis, de alta

disponibilidade e com baixo custo de manutenção

• Plataforma para desenvolvimento de software de

pequeno, médio e grande porte em múltiplas camadas de componentes �Componentes “rodam” em um servidor Java EE

Page 12: Tutorial Java EE

Slide 12 Globalcode

Arquitetura Java EE

Page 13: Tutorial Java EE

Slide 13 Globalcode

Arquitetura Java EE

Page 14: Tutorial Java EE

Slide 14 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 15: Tutorial Java EE

Slide 15 Globalcode

Java Servlet

• Aplicações que rodam no servidor e respondem requisições de clientes Web

Page 16: Tutorial Java EE

Slide 16 Globalcode

Java Servlet

Page 17: Tutorial Java EE

Slide 17 Globalcode

Java Servlet

• Responsável pela geração de conteúdo dinâmico • É uma classe Java que estende HttpServlet; • Tecnologia “mãe” do JSP; • Deve ser declarado e configurado no web.xml; • Usado como controladores no padrão MVC • Servlet vs. JSP:

� Servet = mais utilizado para recepção e controle de requisições Web; � JSP = mais utilizado para geração de conteúdo;

Page 18: Tutorial Java EE

Slide 18 Globalcode

package xpto;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class OlaMundo extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response) throws IOException,

ServletException

{

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<html>");

out.println("<body>");

out.println("<head>");

out.println("<title>Hello World!</title>");

out.println("</head>");

out.println("<body>");

out.println("<h1>Hello World!</h1>");

out.println("</body>");

out.println("</html>");

}

}

Java Servlet

Page 19: Tutorial Java EE

Slide 19 Globalcode

• Exemplo de configuração no arquivo web.xml

<servlet>

<servlet-name>OlaMundo</servlet-name>

<servlet-class>exemplo01.OlaMundo</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>OlaMundo</servlet-name>

<url-pattern>/OlaMundo</url-pattern>

</servlet-mapping>

Java Servlet

Page 20: Tutorial Java EE

Slide 20 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 21: Tutorial Java EE

Slide 21 Globalcode

JavaServer Pages (JSP)

• É uma tecnologia Java para geração de conteúdo Web dinâmico (estático + banco de dados, por exemplo) mesclando código HTML com código Java:

<html>

<head>

<title>Olá Mundo</title>

</head>

<body>

Código HTML puro <br>

<% for(int x=0;x<100;x++) { %>

<p>Olá Mundo com laço: <%= x %></p>

<%}%>

</body>

</html>

Page 22: Tutorial Java EE

Slide 22 Globalcode

JavaServer Pages (JSP)

• Parecido com ASP, porém no lugar de Basic utilizamos Java;

• Robusto, flexível e componentizável; • Permite a criação de aplicativos simples, inteiramente

escritos dentro dos JSP’s (model one); • Permite a criação de aplicativos profissionais, utilizando

técnicas avançadas de modelagem como M.V.C.; • Rápido ; • É transformado em Servlet antes da sua execução;

Page 23: Tutorial Java EE

Slide 23 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 24: Tutorial Java EE

Slide 24 Globalcode

JavaServer Faces (JSF)

• Framework para a implementação de interfaces gráficas das aplicações Web baseadas no modelo Swing

• Incorpora características de um framework MVC para WEB e de um

modelo de interfaces gráficas baseado em eventos � Separação entre visualização e regras de negócio � Visualização pode ser feita por diferentes renderizadores

• Padrão de Componentes de User Interface � Especificação Java EE, portante exige uma implementação

• Amplo suporte de IDEs (Eclipse, Netbeans,DreamWeaver) � “Toolability = Ferramentabilidade”

• Diversas bibliotecas de componentes de UI de terceiros

Page 25: Tutorial Java EE

Slide 25 Globalcode

JavaServer Faces (JSF)

J2EE Web Container

J2EE EJB Container

Controller

Model

View

Servlet

JavaBeans

Java Server Pages

Custom Tag

EJB

JavaServer Faces

Page 26: Tutorial Java EE

Slide 26 Globalcode

JavaServer Faces (JSF)

Page 27: Tutorial Java EE

Slide 27 Globalcode

JavaServer Faces (JSF) P

ágin

a J

SF

face

s-co

nfi

g.x

ml

Man

aged

Bea

n

Page 28: Tutorial Java EE

Slide 28 Globalcode

JavaServer Faces (JSF)

Componentes para JavaServer Faces

• DataGrid;

• Tabbed Panel;

• PanelGrid;

• SelectOneMenu, SelectOneRadio, SelectOneListBox;

• SelectManyMenu, SelectManyRadio, SelectManyListBox;

• FileUpload;

• Auto-complete AJAX;

• Muitos outros…

Page 29: Tutorial Java EE

Slide 29 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 30: Tutorial Java EE

Slide 30 Globalcode

Enterprise JavaBeans (EJB)

• Componentes de regras de negócio que podem ser acessados remotamente � Podem ser utilizados em aplicações Web e não Web

• Tem contexto transacional

� Servidor pode cuidar processo de commit / rollback automaticamente

• Classificados em: � Session Beans � Message-driven beans

Page 31: Tutorial Java EE

Slide 31 Globalcode

Enterprise JavaBeans (EJB)

EJB Session Bean

Java Web

Swing

Cliente WS

Web Browser

JVM + Container EE Rede Local

Componentes Negócio Compartilhados

Page 32: Tutorial Java EE

Slide 32 Globalcode

Enterprise JavaBeans (EJB)

EJB Session Bean

Seg

ura

nça

Co

ntr

ole

Tra

nsa

cio

nal

Esc

alab

ilid

ade

Queues Topics

Data Sources

Environment Entries

EJB

Infra Estrutura do Container

Page 33: Tutorial Java EE

Slide 33 Globalcode

• Representa um processo de negócio (regra de negócio); • Pode ser do tipo Stateless ou Stateful; • Stateless

� Não mantém estado de conversão com o cliente; � Não tem compromisso de manter uma sessão; � Não devemos utilizar atributos de negócio, somente atributos técnicos

em cache; � É um EJB econômico;

• Stateful

� Mantém estado de conversão com o cliente; � Cada cliente terá uma instancia do EJB exclusiva, desde a criação até

a remoção; � Podemos ter atributos de negócio com métodos getters e setters;

EJB Session Bean

Page 34: Tutorial Java EE

Slide 34 Globalcode

EJB Session Bean

• Stateless (sem estado)

Período que uma instancia do EJB fica “preso” a um cliente

Page 35: Tutorial Java EE

Slide 35 Globalcode

EJB Session Bean

• Stateless (sem estado)

Page 36: Tutorial Java EE

Slide 36 Globalcode

EJB Session Bean

• Stateful (com estado)

Período que uma instancia do EJB fica “preso” a um cliente

Page 37: Tutorial Java EE

Slide 37 Globalcode

EJB Session Bean

• Stateful (com estado)

Page 38: Tutorial Java EE

Slide 38 Globalcode

EJB Session Bean

• Clientes acessam o Session Bean através de uma interface Java simples (POJI);

• Métodos (serviços) são publicados através desta interface;

• A interface deve ser implementada pela classe do Bean; • Tipos de Interfaces

� Local (@Local) � Somente acesso local (mesma JVM); � Cliente pode ser um componente Web ou outro EJB; � Localização não é transparente (não suporta clusterização).

� Remota (@Remote) � Suporta acesso remoto (fora da JVM); � Cliente pode ser um componente Web, outro EJB ou aplicação desktop; � Transparência de localização (suporta clusterização).

Page 39: Tutorial Java EE

Slide 39 Globalcode

EJB Session Bean

• Local Interface • Remote Interface

Page 40: Tutorial Java EE

Slide 40 Globalcode

EJB Message-Driven Bean (MDB)

• EJB que é acionado de forma assíncrona; • Trabalha totalmente vinculado ao conceito de utilização

de um serviço de mensagens; • Utiliza a API do Java Message Service (JMS) em conjunto

com Session Beans; • Facilita a quebra de acoplamento entre o cliente e o

destino;

Page 41: Tutorial Java EE

Slide 41 Globalcode

• Vejamos o comparativo de uma chamada síncrona, e uma chamada assíncrona utilizando um serviço de mensagens

Síncrono Assíncrono

EJB Message-Driven Bean (MDB)

Page 42: Tutorial Java EE

Slide 42 Globalcode

• Existem dois tipos de destinos JMS � Point-to-point (queue): uma mensagem enviada para a fila será

consumida apenas por um cliente; � Publish-subscriber (topic): uma mensagem pode ser recepcionada por

múltiplos clientes;

EJB Message-Driven Bean (MDB)

Page 43: Tutorial Java EE

Slide 43 Globalcode

• Exemplo de um MDB

EJB Message-Driven Bean (MDB)

Page 44: Tutorial Java EE

Slide 44 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 45: Tutorial Java EE

Slide 45 Globalcode

Java Persistence API (JPA)

• Primeira especificação (padrão) de mapeamento de objetos Java para base de dados relacional � Integração com outros frameworks

� Hibernate é uma implementação de JPA � TopLink Essencials é uma implementação de JPA (RI)

• POJO (Plain Old Java Objects) ���� Entidades � Mapeamento via metadados (annotation Java 5)

• Pode ser utilizado fora de containeres EJBs (ligthweigth container)

• Uso de injeção de dependência ao invés de lookups JNDI

Page 46: Tutorial Java EE

Slide 46 Globalcode

Java Persistence API (JPA)

Page 47: Tutorial Java EE

Slide 47 Globalcode

Entidade JPA

Page 48: Tutorial Java EE

Slide 48 Globalcode

Java Persistence API (JPA)

• EntityManager (javax.persistence)

�Gerencia o ciclo de vida das entidades

(B) find / query (C) persist (D) clear / serialização (E) merge (F) remove

Page 49: Tutorial Java EE

Slide 49 Globalcode

Java Persistence API (JPA)

• PersistenceContext �Conjunto de objetos “managed” associados a um

EntityManager

EntityManager PersistenceContext

obj1 obj4 obj2 obj3 obj5

MANAGED MANAGED MANAGED MANAGED NEW / DETACHED

Page 50: Tutorial Java EE

Slide 50 Globalcode

Java Persistence API (JPA)

• Persistence Unit �Uma unidade de persistência define um contexto de

funcionamento para os EntityManagers

Page 51: Tutorial Java EE

Slide 51 Globalcode

Utilizando JPA

Page 52: Tutorial Java EE

Slide 52 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 53: Tutorial Java EE

Slide 53 Globalcode

Injeção de Dependência

• Mecanismo de “injeção” de recursos necessários a um componente de forma automática �Sem a presença de instruções explícitas para acessar o

recurso

• Exemplo: �O componente de negócios A depende do componente de

negócios B e do pool de conexões C.

A B

C

Page 54: Tutorial Java EE

Slide 54 Globalcode

Injeção de Dependência

• Sem injeção de dependência: �Código fonte do componente A contém instruções para

“buscar” o componente B e o recurso C.

A

B C

Serviço de Nomes

“ejb/componenteB”

“jdbc/dataSourceC”

lookups

Page 55: Tutorial Java EE

Slide 55 Globalcode

Injeção de Dependência

• Com injeção de dependência �Código do componente A não busca recursos e outros

componentes

�Devemos declarar as dependências de componentes e recursos nos atributos ou métodos setters do componente A

�Container (Java EE) interpreta as dependências declaradas no componente A e “injeta” os recursos e componentes necessários

Page 56: Tutorial Java EE

Slide 56 Globalcode

Injeção de Dependência

A

B C

Serviço de Nomes

“ejb/componenteB”

“jdbc/dataSourceC”

injeção

class ComponenteA {

@EJB(name=“ejb/componenteB”) InterfaceB b;

@Resource(name=“jdbc/dataSourceC”) DataSource c;

}

Page 57: Tutorial Java EE

Slide 57 Globalcode

Injeção de Dependência

• Exemplo de Utilização

Page 58: Tutorial Java EE

Slide 58 Globalcode

Injeção de Dependência

�Quem pode receber injeção ? � EJB, Interceptor � Servlet, Filter, *Listener, JSP Tag Handler

� JSF Managed Beans � Endpoints JAX-WS e Handlers

�O que pode ser injetado ? � Referências a EJBs e a Web Services � DataSource JDBC

� Destination e ConnectionFactory JMS � UserTransaction � EntityManager (JPA)

Page 59: Tutorial Java EE

Slide 59 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 60: Tutorial Java EE

Slide 60 Globalcode

Segurança

• Java EE suporta todos os níveis de segurança; • Utiliza o Java Authentication and Autorization Service (JAAS); • Consiste no mecanismo de autenticação e autorização de usuários,

baseado em uma identidade e roles (perfil de acesso) associados.

Page 61: Tutorial Java EE

Slide 61 Globalcode

Segurança

• Exemplo de Verificações de Segurança Declarativa

Page 62: Tutorial Java EE

Slide 62 Globalcode

Segurança

• Exemplo de Verificações de Segurança Programática

Page 63: Tutorial Java EE

Slide 63 Globalcode

Java Enterprise Edition

• Outras APIs: �JCA (Java Conector Architecture) �JTA (Java Transaction API) �JNDI, RMI-IIOP �JDBC �JMS (Java Messaging Service) �JAXP, JAX-RPC, �JMX �…

Page 64: Tutorial Java EE

Slide 64 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 65: Tutorial Java EE

Slide 65 Globalcode

Servidores de Aplicação

Fonte: Tutorial Java EE da Sun

Page 66: Tutorial Java EE

Slide 66 Globalcode

Servidores de Aplicação

• Web Container �Trabalha em conjunto com um Servidor HTTP para

oferecer suporte aos componentes da camada Web � Tomcat (Apache) � Jetty � JRun (Adobe)

• EJB Container

�É o servidor de componentes transacionais EJB � OpenEJB (Apache) *

�Containeres específicos dos fabricantes de servidores de aplicação

Page 67: Tutorial Java EE

Slide 67 Globalcode

Servidores de Aplicação

• Serviços oferecidos pelos containeres Java EE: �Gestão de memória, ciclo de vida de objetos e estado de

objetos �Conexões, Transações, Serviço de nomes �Segurança �Tolerância a falhas � Integração �WebServices �Clustering �Alta disponibilidade �Confiabilidade...

Page 68: Tutorial Java EE

Slide 68 Globalcode

Servidores de Aplicação

• Servidores de aplicação Java EE (* gratuitos) �JBoss Application Server (RedHat) * �GlassFish (RI) (Sun) * �Gerônimo (Apache) * �Websphere Application Server (IBM) �WebLogic Server (BEA) �Oracle application Server – OC4J (Oracle)

• A escolha do servidor deve considerar se a versão escolhida é compatível com o Java EE utilizado (1.4 ou 5) �Servidores certificados são listados em:

http://java.sun.com/javaee/overview/compatibility.jsp

Page 69: Tutorial Java EE

Slide 69 Globalcode

Agenda

Plataforma Java

Java Enterprise Edition

Principais Tecnologias (APIs) Java Servlet JSP

JSF

EJB

JPA

Injeção de Dependência

Segurança

Servidores de Aplicação

Comparativo de Versões

Demo

Perguntas e Respostas

Page 70: Tutorial Java EE

Slide 70 Globalcode

Comparativo de Versões • Java EE 1.4

� Novembro de 2003

� EJB 2.1, Servlet 2.4 e JSP 2.0

� Principais problemas

� Deployment descriptor

� Interfaces

� Entity beans

� Complexidade de aprendizado e desenvolvimento

• Java EE 5

� Maio de 2006 � Aumentar a produtividade e facilitar o desenvolvimento � Principais mudanças

� Anotações � Enterprise JavaBeans 3.0 � Java Persistence API (JPA) � Injeção de dependência � Inclusão de JSF 1.2 � Novas versões das APIs existentes

Page 71: Tutorial Java EE

Slide 71 Globalcode

Comparativo de Versões

• Java EE 6 (O que vem por aí !!!) �Previsão da final specification no 1Q2009; �Futuras mudanças

� Java Servlet 3.0;

� EJB 3.1; � JPA 2.0; � JSF 2.0;

� Web Beans; � Profiles (deployment); � Novas versões das APIs existentes.

Page 72: Tutorial Java EE

Slide 72 Globalcode

Demo

Page 73: Tutorial Java EE

Slide 73 Globalcode

Perguntas & Respostas

Page 74: Tutorial Java EE

Slide 74 Globalcode

Mini-curso Gratuito

Agradecemos a presença!

http://sites.google.com/site/vofficejava/