Mini-curso Java EE
Sobre
Especialista Java Java Platform
Coordenador GUJavaSC http://gujavasc.org
Twitter @rcandidosilva
Personal http://rodrigocandido.me
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
Plataforma Java
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
Java Everywhere
Quais empresas usam Java
Mercado
Oportunidades
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
Java Enterprise Edition
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...
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
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)
Exercício
Criando um projeto Java EE
https://github.com/gujavasc/minicurso-javaee
JSF JavaServer Faces
JavaServer Faces
Java Especificação Integração Ajax Nativo
MVC - Dividir e conquistar
Beleza vs Funcionamento Código Organizado Manutenção Fácil Sabe aonde achar o erro
Principais Componentes J2EE Web Container J2EE EJB
Container
Controller
Model
View
Servlet
JavaBeans
Java Server Pages
Custom Tag
EJB
javax.faces
JSF e J2EE
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
JSF: principais componentes Pá
gina
JSF
fa
ces-
conf
ig.x
ml
Man
aged
Bea
n
Facelets
Integração
Frameworks em JSF
Basta baixar e usar
Exercício
Desenvolvimento Web com JSF
https://github.com/gujavasc/minicurso-javaee
JPA Java Persistence API
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
Java Persistence API
JPA Entity
Java Persistence API
Java Persistence API
EntityManager (javax.persistence)
(B) find / query (C) persist (D) clear / serialização (E) merge (F) remove
Java Persistence API
Persistence Unit
Exercício
Implementando persistência com JPA
https://github.com/gujavasc/minicurso-javaee
EJB Enterprise JavaBeans
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;
Enterprise Java Beans
EJB Session Bean
Java Web
Swing
Cliente WS
Web Browser
JVM + Container EE Rede Local
Componentes Negócio Compartilhados
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
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
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
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).
• 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
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
Message-Driven Bean
EJB que é acionado de forma assíncrona;
Síncrono Assíncrono
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;
Exercício
Implementando as regras de negócio com EJB
https://github.com/gujavasc/minicurso-javaee
CDI Contexts and Dependency Injection
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)
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
CDI no 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
CDI Managed Beans
Configuração CDI
Hello World
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
Principais Recursos
Injection Points Qualifiers Alternatives EL Names Producer Methods Java EE Resources Scopes and Contexts Interceptors Stereotypes Events
Exercício
Integrando as camadas da aplicação com CDI
https://github.com/gujavasc/minicurso-javaee
Perguntas e Respostas
?
Iniciativas
Eventos mensais; Blog; Redes sociais; Listas de discussão; Organização de eventos; Projetos open source; Adopt an JSR; …
Como Colaborar
Site: http://gujavasc.org
Twitter https://twitter.com/gujavasc
Github https://github.com/gujavasc
Facebok: http://facebook.com/groups/gujavasc
Top Related