GUJavaSC - Mini-curso Java EE

1.086 visualizações

Publicada em

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.

Publicada em: Software

GUJavaSC - Mini-curso Java EE

  1. 1. Mini-curso Java EE
  2. 2. Sobre Especialista Java Java Platform Coordenador GUJavaSC http://gujavasc.org Twitter @rcandidosilva Personal http://rodrigocandido.me
  3. 3. 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
  4. 4. Plataforma Java
  5. 5. 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
  6. 6. Java Everywhere
  7. 7. Quais empresas usam Java
  8. 8. Mercado
  9. 9. Oportunidades
  10. 10. JAVA EE
  11. 11. 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
  12. 12. Java Enterprise Edition
  13. 13. 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...
  14. 14. 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 JAX-RPC, CMP/ BMP, JSR 88 Web Profile JAX-RS 2
  15. 15. Java EE Overview Managed Beans 1.0 EJB 3.2 Connector 1.6 Servlet 3.1 Portable Extensions JSF 2.2 JAX-RS 2.0 Bean Validation 1.1 EL 3.0 JPA 2.1 JTA 1.2 JMS 2.0 JSP 2.2 Interceptors 1.1 CDI 1.1 Common Annotations 1.1 Major Updated Release New Concurrency Utilities (JSR 236) Batch Applications (JSR 352) Java API for JSON (JSR 353) Java API for WebSocket (JSR 356)
  16. 16. Exercício Criando um projeto Java EE https://github.com/gujavasc/minicurso-javaee
  17. 17. JavaServer Faces JSF
  18. 18. JavaServer Faces Java Especificação Integração Ajax Nativo
  19. 19. MVC - Dividir e conquistar Beleza vs Funcionamento Código Organizado Manutenção Fácil Sabe aonde achar o erro
  20. 20. Principais Componentes J2EE Web Container J2EE EJB Container JSF e J2EE Controller Model View Java Server Pages Servlet JavaBeans Custom Tag EJB javax.faces
  21. 21. Página JSF Tags: JSF HTML Tags: JSF Core Request Managed Bean Session Managed Bean Application Managed Bean Links, formulários, imagens, combo-box, tabelas, etc… Expression Language: EL Através destas tags adicionamos validação, conversão de dados, listeners Dados para popular as tabelas, combo-box, textos. Páginas JSF
  22. 22. JSF: principais componentes faces-config.xml Página JSF Managed Bean
  23. 23. Facelets
  24. 24. Integração
  25. 25. Frameworks em JSF Basta baixar e usar
  26. 26. Exercício Desenvolvimento Web com JSF https://github.com/gujavasc/minicurso-javaee
  27. 27. Java Persistence API JPA
  28. 28. 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
  29. 29. Java Persistence API
  30. 30. Java Persistence API JPA Entity
  31. 31. Java Persistence API EntityManager (javax.persistence) (B) find / query (C) persist (D) clear / serialização (E) merge (F) remove
  32. 32. Java Persistence API Persistence Unit
  33. 33. Exercício Implementando persistência com JPA https://github.com/gujavasc/minicurso-javaee
  34. 34. Enterprise JavaBeans EJB
  35. 35. 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;
  36. 36. Enterprise Java Beans EJB Componentes Negócio Compartilhados Session Bean Java Web Swing Cliente WS Web Browser JVM + Container EE Rede Local
  37. 37. Enterprise Java Beans EJB Session Bean Segurança Controle Transacional Escalabilidade Queues Topics Data Sources Environment Entries EJB Infra Estrutura do Container
  38. 38. Enterprise Java Beans 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
  39. 39. Session Bean 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;
  40. 40. 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).
  41. 41. Enterprise Java Beans • EJB Lite ü Sub-conjunto de funcionalidades direcionadas para deploy dos EJBs no container Java EE Web Profile (.war) 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
  42. 42. 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
  43. 43. Message-Driven Bean EJB que é acionado de forma assíncrona; Síncrono Assíncrono
  44. 44. 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;
  45. 45. Exercício Implementando as regras de negócio com EJB https://github.com/gujavasc/minicurso-javaee
  46. 46. Contexts and Dependency Injection CDI
  47. 47. 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)
  48. 48. 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
  49. 49. CDI no Java EE
  50. 50. 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
  51. 51. CDI Managed Beans
  52. 52. Configuração CDI
  53. 53. Hello World
  54. 54. 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
  55. 55. Principais Recursos Injection Points Qualifiers Alternatives EL Names Producer Methods Java EE Resources Scopes and Contexts Interceptors Stereotypes Events
  56. 56. Exercício Integrando as camadas da aplicação com CDI https://github.com/gujavasc/minicurso-javaee
  57. 57. Perguntas e Respostas ?
  58. 58. Iniciativas Eventos mensais; Blog; Redes sociais; Listas de discussão; Organização de eventos; Projetos open source; Adopt an JSR; …
  59. 59. Como Colaborar Site: http://gujavasc.org Twitter https://twitter.com/gujavasc Github https://github.com/gujavasc Facebok: http://facebook.com/groups/gujavasc

×