GUJavaSC - Mini-curso Java EE

60
Mini-curso Java EE

description

Venha conhecer as principais tecnologias disponibilizadas para o desenvolvimento de aplicações Web utilizando a plataforma Java Enterprise. Neste mini-curso serão demonstrados conceitos e exemplos das bibliotecas para o desenvolvimento Java EE, como: JSF, JPA, CDI EJB, JAX-RS, dentre outras.

Transcript of GUJavaSC - Mini-curso Java EE

Page 1: GUJavaSC - Mini-curso Java EE

Mini-curso Java EE

Page 2: GUJavaSC - Mini-curso Java EE

Sobre

 Especialista Java  Java Platform

 Coordenador GUJavaSC http://gujavasc.org

 Twitter  @rcandidosilva

 Personal http://rodrigocandido.me

Page 3: GUJavaSC - Mini-curso Java EE

Agenda

 Plataforma Java   Java Enterprise Edition (Java EE)   Java Persistence API (JPA)  Enterprise JavaBeans (EJB)   JavaServer Faces (JSF)  Contexts and Dependency Injection (CDI)  Perguntas e Respostas

Page 4: GUJavaSC - Mini-curso Java EE

Plataforma Java

Page 5: GUJavaSC - Mini-curso Java EE

Porque Java?

 68% das novas aplicações são em Java   Java substituiu o C++ como a competência mais procurada em profissionais  2 milhões de novos profissionais de TI são necessários a cada ano   Java é executado em múltiplas plataformas   Java é executado em ampla gama de dispositivos, de Smart Cards aos servidores dos grandes Data Centers

Page 6: GUJavaSC - Mini-curso Java EE

Java Everywhere

Page 7: GUJavaSC - Mini-curso Java EE

Quais empresas usam Java

Page 8: GUJavaSC - Mini-curso Java EE

Mercado

Page 9: GUJavaSC - Mini-curso Java EE

Oportunidades

Page 10: GUJavaSC - Mini-curso Java EE

JAVA EE

Page 11: GUJavaSC - Mini-curso 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 12: GUJavaSC - Mini-curso Java EE

Java Enterprise Edition

Page 13: GUJavaSC - Mini-curso 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 14: GUJavaSC - Mini-curso Java EE

Java EE Timeline

J2EE 1.3 CMP, Connector Architecture

J2EE 1.4 Web Services Mgmt, Deployment, Async Connector

Java EE 5 Ease of Development, EJB 3, JPA, JSF, JAXB, JAX-WS, StAX, SAAJ

Java EE 6 Pruning, Extensibility Ease of Dev, CDI, JAX-RS

Web  Profile    Servlet 3, EJB 3.1 Lite  

Java EE 7  JMS 2, Batch, TX, Concurrency, Interceptor, WebSocket, JSON  

Web  Profile    JAX-RS 2  

JAX-RPC, CMP/ BMP, JSR 88

Page 15: GUJavaSC - Mini-curso Java EE

Java EE Overview

Connector 1.6

Managed Beans 1.0 EJB 3.2

Servlet 3.1

Portable Extensions

JSF 2.2 JAX-RS 2.0

Bea

n Va

lidat

ion

1.1

JMS 2.0 JPA 2.1

EL 3.0

JTA 1.2

JSP 2.2

Interceptors 1.1 CDI 1.1 Common

Annotations 1.1

Updated Major Release

New

Concurrency Utilities (JSR 236)

Batch Applications (JSR 352)

Java API for JSON (JSR 353)

Java API for WebSocket (JSR 356)

Page 16: GUJavaSC - Mini-curso Java EE

Exercício

 Criando um projeto Java EE

https://github.com/gujavasc/minicurso-javaee

Page 17: GUJavaSC - Mini-curso Java EE

JSF JavaServer Faces

Page 18: GUJavaSC - Mini-curso Java EE

JavaServer Faces

  Java  Especificação   Integração  Ajax Nativo

Page 19: GUJavaSC - Mini-curso Java EE

MVC - Dividir e conquistar

 Beleza vs Funcionamento  Código Organizado  Manutenção Fácil  Sabe aonde achar o erro

Page 20: GUJavaSC - Mini-curso Java EE

Principais Componentes J2EE Web Container J2EE EJB

Container

Controller

Model

View

Servlet

JavaBeans

Java Server Pages

Custom Tag

EJB

javax.faces

JSF e J2EE

Page 21: GUJavaSC - Mini-curso Java EE

Página JSF

Tags: JSF HTML

Tags: JSF Core

Request

Managed Bean

Session

Managed Bean

Application

Managed Bean

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 22: GUJavaSC - Mini-curso Java EE

JSF: principais componentes Pá

gina

JSF

fa

ces-

conf

ig.x

ml

Man

aged

Bea

n

Page 23: GUJavaSC - Mini-curso Java EE

Facelets

Page 24: GUJavaSC - Mini-curso Java EE

Integração

Page 25: GUJavaSC - Mini-curso Java EE

Frameworks em JSF

 Basta baixar e usar

Page 26: GUJavaSC - Mini-curso Java EE

Exercício

 Desenvolvimento Web com JSF

https://github.com/gujavasc/minicurso-javaee

Page 27: GUJavaSC - Mini-curso Java EE

JPA Java Persistence API

Page 28: GUJavaSC - Mini-curso Java EE

Java Persistence API   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 29: GUJavaSC - Mini-curso Java EE

Java Persistence API

Page 30: GUJavaSC - Mini-curso Java EE

  JPA Entity

Java Persistence API

Page 31: GUJavaSC - Mini-curso Java EE

Java Persistence API

 EntityManager (javax.persistence)

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

Page 32: GUJavaSC - Mini-curso Java EE

Java Persistence API

 Persistence Unit

Page 33: GUJavaSC - Mini-curso Java EE

Exercício

  Implementando persistência com JPA

https://github.com/gujavasc/minicurso-javaee

Page 34: GUJavaSC - Mini-curso Java EE

EJB Enterprise JavaBeans

Page 35: GUJavaSC - Mini-curso 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 36: GUJavaSC - Mini-curso Java EE

Enterprise Java Beans

EJB Session Bean

Java Web

Swing

Cliente WS

Web Browser

JVM + Container EE Rede Local

Componentes Negócio Compartilhados

Page 37: GUJavaSC - Mini-curso Java EE

Enterprise Java Beans

EJB Session Bean

Segu

ranç

a

Con

trol

e Tr

ansa

cion

al

Esca

labi

lidad

e

Queues Topics

Data Sources

Environment Entries

EJB

Infra Estrutura do Container

Page 38: GUJavaSC - Mini-curso Java EE

 Tipos de EJB:  Session Bean

 Representa um processo de negócio  Message-Driven Bean

 Trabalha de forma assíncrona

 Singleton Bean  EJB introduzido na versão 3.1

 Entity Bean  Representa um objeto persistente  Definido pela especificação JPA

Enterprise Java Beans

Page 39: GUJavaSC - Mini-curso 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;

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

Session Bean

Page 40: GUJavaSC - Mini-curso Java EE

Session Bean   Podem ou não definir interface de acesso   @LocalBean define EJBs sem interfaces   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 41: GUJavaSC - Mini-curso 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 42: GUJavaSC - Mini-curso Java EE

Enterprise Java Beans

 Empacotamento Simplificado  Possibilita 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 43: GUJavaSC - Mini-curso Java EE

Message-Driven Bean

  EJB que é acionado de forma assíncrona;

Síncrono Assíncrono

Page 44: GUJavaSC - Mini-curso Java EE

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

Page 45: GUJavaSC - Mini-curso Java EE

Exercício

  Implementando as regras de negócio com EJB

https://github.com/gujavasc/minicurso-javaee

Page 46: GUJavaSC - Mini-curso Java EE

CDI Contexts and Dependency Injection

Page 47: GUJavaSC - Mini-curso 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 48: GUJavaSC - Mini-curso 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 49: GUJavaSC - Mini-curso Java EE

CDI no Java EE

Page 50: GUJavaSC - Mini-curso 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ência  Ciclo de vida  Interceptors  Events

Page 51: GUJavaSC - Mini-curso Java EE

CDI Managed Beans

Page 52: GUJavaSC - Mini-curso Java EE

Configuração CDI

Page 53: GUJavaSC - Mini-curso Java EE

Hello World

Page 54: GUJavaSC - Mini-curso 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 55: GUJavaSC - Mini-curso Java EE

Principais Recursos

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

Page 56: GUJavaSC - Mini-curso Java EE

Exercício

  Integrando as camadas da aplicação com CDI

https://github.com/gujavasc/minicurso-javaee

Page 57: GUJavaSC - Mini-curso Java EE

Perguntas e Respostas

?

Page 58: GUJavaSC - Mini-curso Java EE
Page 59: GUJavaSC - Mini-curso Java EE

Iniciativas

 Eventos mensais;  Blog;  Redes sociais;  Listas de discussão;  Organização de eventos;  Projetos open source;  Adopt an JSR;  …

Page 60: GUJavaSC - Mini-curso Java EE

Como Colaborar

  Site: http://gujavasc.org

  Twitter https://twitter.com/gujavasc

  Github https://github.com/gujavasc

  Facebok: http://facebook.com/groups/gujavasc