GUJavaSC - Desenvolvendo uma Aplicação com Java EE

49
Desenvolvendo uma Aplicação com Java EE

description

GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Transcript of GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Page 1: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Desenvolvendo uma Aplicação com Java EE

Page 2: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Agenda

Java Enterprise Edition (Java EE)

Java Persistence API (JPA)

Enterprise JavaBeans (EJB)

JavaServer Faces (JSF)

Contexts and Dependency Injection (CDI)

Demonstração

Novidades Java EE 7

Perguntas e Respostas

Page 3: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

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 4: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

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 5: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Enterprise Edition

Page 6: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Enterprise Edition

Containers Java EE

Page 7: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Enterprise Edition

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

Conexões, Transações, Serviço de nomes

Segurança

Tolerância a falhas

Integração

WebServices

Clustering

Alta disponibilidade

Confiabilidade...

Page 8: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Profiles

Page 9: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Profiles

Page 10: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

JPAJava Persistence API

Page 11: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Persistence API

Primeira especificação (padrão) de mapeamento de objetos Java para base de dados relacional

Integração com outros frameworksHibernate é uma implementação de JPATopLink Essencials é uma implementação de JPA (RI)

POJO (Plain Old Java Objects) EntidadesMapeamento 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 12: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Persistence API

Page 13: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

JPA Entity

Java Persistence API

Page 14: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Persistence API

EntityManager (javax.persistence)

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

Page 15: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java Persistence API

Persistence Unit

Page 16: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

EJBEnterprise JavaBeans

Page 17: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Enterprise Java Beans

Plataforma para criação de aplicações de negócio portáveis, robustas e reutilizáveis usando a linguagem de programação Java;

Componente para construir aplicações sem precisar reinventar uma série de recursos e serviços (transações, segurança, persistência);

Modelo de alto nível para objetos distribuídos (computação distribuída);

Pode ser utilizado em soluções Web e não Web;

Page 18: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Enterprise Java Beans

EJBSession Bean

Java Web

Swing

Cliente WS

Web Browser

JVM + Container EERede Local

Componentes Negócio Compartilhados

Page 19: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Enterprise Java Beans

EJBSession Bean

Se

gu

ran

ça

Co

ntr

ole

Tra

nsa

cio

na

l

Es

cala

bili

da

de

QueuesTopics

DataSources

Environment Entries

EJB

Infra Estrutura do Container

Page 20: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Tipos de EJB:Session Bean

Representa um processo de negócio

Message-Driven BeanTrabalha de forma assíncrona

Singleton BeanEJB introduzido na versão 3.1

Entity BeanRepresenta um objeto persistente

Definido pela especificação JPA

Enterprise Java Beans

Page 21: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Representa um processo de negócio (regra de negócio);

@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;

@StatefulManté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;

Session Bean

Page 22: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Session Bean

Podem ou não definir interface de acesso

@LocalBean define EJBs sem interfaces

Tipos de InterfacesLocal (@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 23: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

• EJB Lite Sub-conjunto de funcionalidades direcionadas para deploy dos EJBs no

container Java EE Web Profile (.war)

Enterprise Java Beans

EJB Lite EJB Full

• Local Session Beans• CMT / BMT• Segurança Declarativa• Interceptors

• Message-Driven Beans (MDB)• Web Service Endpoints• 2.x / 3.x Remove View• Inter-operabilidade com RMI-IIOP • Timer service• Chamada assíncrona à metodos• 2.x Local View• CMP / BMP Entity Beans

Page 24: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Enterprise Java Beans

Empacotamento SimplificadoPossibilita o deploy de componentes EJBs através de um .war

Somente disponível para os EJB Lite

ejb-jar.xml não é mais necessário

Java EE 5

Java EE 6

Page 25: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Message-Driven Bean

EJB que é acionado de forma assíncrona;

Síncrono Assíncrono

Page 26: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Message-Driven BeanExistem 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;

Page 27: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

JSFJavaServer Faces

Page 28: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

JavaServer Faces

Java

Especificação

Integração

Ajax Nativo

Page 29: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

MVC - Dividir e conquistar

Beleza vs Funcionamento

Código Organizado

Manutenção Fácil

Sabe aonde achar o erro

Page 30: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Principais ComponentesJ2EE Web Container J2EE EJB

Container

Controller ModelView

Servlet JavaBeansJavaServerPages

CustomTag

EJB

javax.faces

JSF e J2EE

Page 31: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Página JSF

Tags: JSF HTML

Tags: JSF Core

Request

ManagedBean

Session

ManagedBean

Application

ManagedBean

Expression Language: EL

Links, formulários, imagens,combo-box, tabelas, etc…

Através destas tags adicionamos validação, conversão de dados, listeners

Dados para popular as tabelas, combo-box, textos.

Páginas JSF

Page 32: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

JSF: principais componentes

Pág

ina

JSF

face

s-co

nfi

g.x

ml

Man

aged

Bea

n

Page 33: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Facelets

Page 34: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Integração

Page 35: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Frameworks em JSF

• Basta baixar e usar

Page 36: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

CDIContexts and Dependency Injection

Page 37: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

CDI (JSR-299)

• CDI = Context Dependency Injection• Novo modelo para gerenciamento de beans e

injeção de dependência• Nova definição para escopos de aplicação• Também conhecido como “Web Beans”• Integra as camadas web e negócio da aplicação

Facilita a implementação das aplicações que utilizam tecnologias como JSF e EJB (Java EE)

Page 38: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

CDI (JSR-299)

• Gerenciamento de ciclo de vida de componentes statefull

• Provê um mecanismo de DI typesafe• Disponibiliza mecanismo de eventos facilitando o

desenvolvimento com baixo acoplamento• Tem um mecanismo de Interceptors e Decorators• Possibilita a criação de extensões portáveis para

qualquer implementação• Integração com EL

Page 39: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

CDI no Java EE 6

Page 40: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

CDI Managed Beans

•Nova definição para “beans•Instâncias são gerenciadas pelo container•Serviços disponíveis

Injeção de DependênciaCiclo de vidaInterceptorsEvents

Page 41: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

CDI Managed Beans

Page 42: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Configuração CDI

Page 43: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Hello World

Page 44: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

O que pode ser injetado

• CDI Managed Beans (POJO)• Objetos retornados por @Produces • EJB Session Bean (local ou remoto)• Java EE Resources (DataSource, JMS)• JTA UserTransaction• EntityManager (JPA)• Bean Validation Factory• Destination e ConnectionFactory JMS

Page 45: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Principais Recursos

Injection Points Qualifiers Alternatives EL Names Producer Methods Java EE Resources Scopes and Contexts Interceptors Stereotypes Events

Page 46: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Demonstração

Page 47: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Novidades Java EE 7

Page 48: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Java EE 7

• Por onde começar?

Page 49: GUJavaSC - Desenvolvendo uma Aplicação com Java EE

Perguntas e Respostas

?