Tutorial Java EE

16,549 views

Published on

Mini-curso Globalcode / VOffice
MC34 - Tutorial Java EE

Published in: Technology

Tutorial Java EE

  1. 1. Mini-curso Gratuito Globalcode Slide 1
  2. 2. Mini-curso Gratuito Tutorial Java Enterprise Edition (Java EE) Rodrigo Cândido da Silva Instrutor VOffice / Globalcode Globalcode Slide 2
  3. 3. Objetivo Conhecer a plataforma Java Enterprise Edition 5 e entender as principais diferenças desta versão em relação as versões anteriores Globalcode Slide 3
  4. 4. 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 Globalcode Slide 4
  5. 5. Palestrante Rodrigo Cândido da Silva – rcandidosilva@gmail.com Trabalha: Arquiteto Java / Instrutor Experiência: 8 anos na área de desenvolvimento de sistemas, trabalhando com Java desde 2001; Certificações: SCJA, SCJP, SCWCD, SCBCD, SCEA Globalcode Slide 5
  6. 6. 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 Globalcode Slide 6
  7. 7. 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) Globalcode Slide 7
  8. 8. Java Community Process (JCP) Globalcode Slide 8
  9. 9. 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 Globalcode Slide 9
  10. 10. 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 Globalcode Slide 10
  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 Globalcode Slide 11
  12. 12. Arquitetura Java EE Globalcode Slide 12
  13. 13. Arquitetura Java EE Globalcode Slide 13
  14. 14. 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 Globalcode Slide 14
  15. 15. Java Servlet • Aplicações que rodam no servidor e respondem requisições de clientes Web Globalcode Slide 15
  16. 16. Java Servlet Globalcode Slide 16
  17. 17. 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; Globalcode Slide 17
  18. 18. Java Servlet 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>"); } } Globalcode Slide 18
  19. 19. Java Servlet • 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> Globalcode Slide 19
  20. 20. 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 Globalcode Slide 20
  21. 21. 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> Globalcode Slide 21
  22. 22. 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; Globalcode Slide 22
  23. 23. 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 Globalcode Slide 23
  24. 24. 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 Globalcode Slide 24
  25. 25. JavaServer Faces (JSF) J2EE Web Container J2EE EJB Container JavaServer Faces Controller View Model Servlet Java Custom JavaBeans EJB Server Tag Pages Globalcode Slide 25
  26. 26. JavaServer Faces (JSF) Globalcode Slide 26
  27. 27. JavaServer Faces (JSF) Página JSF faces-config.xml Managed Bean Globalcode Slide 27
  28. 28. JavaServer Faces (JSF) Componentes para JavaServer Faces • DataGrid; • Tabbed Panel; • PanelGrid; • SelectOneMenu, SelectOneRadio, SelectOneListBox; • SelectManyMenu, SelectManyRadio, SelectManyListBox; • FileUpload; • Auto-complete AJAX; • Muitos outros… Globalcode Slide 28
  29. 29. 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 Globalcode Slide 29
  30. 30. 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 Globalcode Slide 30
  31. 31. Enterprise JavaBeans (EJB) Componentes Negócio Compartilhados Cliente WS EJB Session Bean Swing Web Browser Java Web JVM + Container EE Rede Local Globalcode Slide 31
  32. 32. Enterprise JavaBeans (EJB) Infra Estrutura do Container Controle Transacional EJB Escalabilidade Segurança EJB Session Bean Queues Data Topics Sources Environment Entries Globalcode Slide 32
  33. 33. EJB Session Bean • 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; Globalcode Slide 33
  34. 34. EJB Session Bean • Stateless (sem estado) Período que uma instancia do EJB fica “preso” a um cliente Globalcode Slide 34
  35. 35. EJB Session Bean • Stateless (sem estado) Globalcode Slide 35
  36. 36. EJB Session Bean • Stateful (com estado) Período que uma instancia do EJB fica “preso” a um cliente Globalcode Slide 36
  37. 37. EJB Session Bean • Stateful (com estado) Globalcode Slide 37
  38. 38. 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). Globalcode Slide 38
  39. 39. EJB Session Bean • Local Interface • Remote Interface Globalcode Slide 39
  40. 40. 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; Globalcode Slide 40
  41. 41. EJB Message-Driven Bean (MDB) • Vejamos o comparativo de uma chamada síncrona, e uma chamada assíncrona utilizando um serviço de mensagens Síncrono Assíncrono Globalcode Slide 41
  42. 42. EJB Message-Driven Bean (MDB) • 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; Globalcode Slide 42
  43. 43. EJB Message-Driven Bean (MDB) • Exemplo de um MDB Globalcode Slide 43
  44. 44. 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 Globalcode Slide 44
  45. 45. 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 Globalcode Slide 45
  46. 46. Java Persistence API (JPA) Globalcode Slide 46
  47. 47. Entidade JPA Globalcode Slide 47
  48. 48. 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 Globalcode Slide 48
  49. 49. Java Persistence API (JPA) • PersistenceContext Conjunto de objetos “managed” associados a um EntityManager EntityManager PersistenceContext obj5 obj1 obj2 obj3 obj4 NEW / DETACHED MANAGED MANAGED MANAGED MANAGED Globalcode Slide 49
  50. 50. Java Persistence API (JPA) • Persistence Unit Uma unidade de persistência define um contexto de funcionamento para os EntityManagers Globalcode Slide 50
  51. 51. Utilizando JPA Globalcode Slide 51
  52. 52. 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 Globalcode Slide 52
  53. 53. 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. B A C Globalcode Slide 53
  54. 54. 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. lookups Serviço de Nomes A “ejb/componenteB” “jdbc/dataSourceC” B C Globalcode Slide 54
  55. 55. 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 Globalcode Slide 55
  56. 56. Injeção de Dependência class ComponenteA { @EJB(name=“ejb/componenteB”) InterfaceB b; @Resource(name=“jdbc/dataSourceC”) DataSource c; } injeção Serviço de Nomes A “ejb/componenteB” “jdbc/dataSourceC” B C Globalcode Slide 56
  57. 57. Injeção de Dependência • Exemplo de Utilização Globalcode Slide 57
  58. 58. 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) Globalcode Slide 58
  59. 59. 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 Globalcode Slide 59
  60. 60. 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. Globalcode Slide 60
  61. 61. Segurança • Exemplo de Verificações de Segurança Declarativa Globalcode Slide 61
  62. 62. Segurança • Exemplo de Verificações de Segurança Programática Globalcode Slide 62
  63. 63. 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 … Globalcode Slide 63
  64. 64. 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 Globalcode Slide 64
  65. 65. Servidores de Aplicação Fonte: Tutorial Java EE da Sun Globalcode Slide 65
  66. 66. 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 Globalcode Slide 66
  67. 67. 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... Globalcode Slide 67
  68. 68. 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 Globalcode Slide 68
  69. 69. 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 Globalcode Slide 69
  70. 70. 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 Globalcode Slide 70
  71. 71. 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. Globalcode Slide 71
  72. 72. Demo Globalcode Slide 72
  73. 73. Perguntas & Respostas Globalcode Slide 73
  74. 74. Mini-curso Gratuito Agradecemos a presença! http://sites.google.com/site/vofficejava/ Globalcode Slide 74

×