Introdução a plataforma Java EE                       Eder Magalhães                         @edermag                     ...
Agenda            Desafios do desenvolvimento corporativo;            A plataforma Java EE;            Plataforma baseada ...
Desenvolvimento corporativo            Pensar só na “linguagem” não é o suficiente;            Existem outros fatores de i...
Desenvolvimento corporativo            Pensar só na “linguagem” não é o suficiente;            Existem outros fatores de i...
Quais fatores?            Escalabilidade;            Disponibilidade;            Performance durante execução;            ...
Já ia me esquecendo...                                    Globalcode	  –	  Open4educationThursday, July 5, 12
Produtivo!                       Como de costume: o prazo é para ontem.                                                   ...
Java EE pretende resolver esses           problemas.                                    Globalcode	  –	  Open4educationThu...
Java EE pretende resolver esses           problemas.                                    Globalcode	  –	  Open4educationThu...
Java Enterprise Edition            O Java EE é uma plataforma que atende as            necessidades de uma vasta gama de a...
Breve comparação                       Java SE                                 Globalcode	  –	  Open4educationThursday, Ju...
Breve comparação                       Java SE   Java EE                                      Globalcode	  –	  Open4educat...
Java EE na visão dos fornecedores            Empresas “terceiras” que criam servidores para            gerenciar aplicativ...
Java EE na visão dos desenvolvedores            Podem usufruir de uma série de APIs,            padronizadas pela platafor...
Especificações: a tecnologia + poderosa            A especificação é um contrato:              Determina o que deve ser fe...
Evolução do Java EE                                                                               Java EE 6               ...
Algumas APIs fundamentais!                              Globalcode	  –	  Open4educationThursday, July 5, 12
Algumas APIs fundamentais!                              Globalcode	  –	  Open4educationThursday, July 5, 12
Persistência            Grande maioria das aplicações utilizam banco de            dados relacional;            Converter ...
JPA - Java Persistence API            Define um padrão para frameworks ORM;            Simples e fácil de usar:           ...
JPA: Visão das camadas                            Globalcode	  –	  Open4educationThursday, July 5, 12
Exemplo JPA   @Entity   @Table(name = "projects")   public class Project {       @Column(nullable = false, unique = true) ...
Complexidade nas regras de negócio            A necessidade de integração com tecnologias            diferentes (legado); ...
EJB - Enterprise JavaBeans            Define um modelo avançado de componentes            para plataforma;            Com ...
Exemplo EJB   @Stateless   public class ProjectServiceBean implements ProjectService {           @PersistenceContext      ...
Validação            Necessidade de validar dados digitados pelo            usuário:            Tarefa comum e repetitiva;...
Bean Validation            Define um modelo de validações simples e            prático, através de anotações;            D...
Exemplo Bean Validation   @Entity @Table(name="sprints")   public class Sprint {           @NotNull           private Stri...
Desenvolvimento web: o início            Desenvolver aplicações que são executadas na            web por um navegador;    ...
Servlet & JSP - JavaServer Pages            Servlets:              Componentes Java com a capacidade de              atend...
Exemplo Servlet   @WebServlet(url= "/project")   public class ProjectServlet extends HttpServlet {       public void doGet...
Exemplo JSP   <html>       <head>          <title>Projects</title>       </head>       <body>       <table>           <tr>...
Desenvolvimento web: a evolução            Aplicações web seguindo o modelo MVC;            Aplicações web complexas, com ...
JSF - JavaServer Faces            Determina uma framework padrão para            construção de aplicativos MVC em Java EE;...
Exemplo JSF  <html xmlns="http://www.w3.org/1999/xhtml" ...    xmlns:h="http://java.sun.com/jsf/html">      <h:form id="fr...
Desenvolvimento web: nível avançado            Em sistemas de porte maior ou com regras            flexíveis é interessant...
CDI - Context Dependency Injection            Promove a integração entre componentes para            aplicações Java EE de...
Exemplo CDI       @Named       public class DashboardManager {               @Inject               private ProjectDao dao;...
Exemplo CDI       @Named       public class DashboardManager {               @Inject               private ProjectDao dao;...
ScrumToys: a DEMO brazuca do Java EE            Projeto exemplo do NetBeans e Glassfish;            Tecnologias utilizadas...
Outros componentes Java EE            Java Message Service API;            Java Transaction API;            JavaMail;     ...
Java EE 7:               A plataforma na nuvem!                                             …                             ...
Links        http://www.oracle.com/technetwork/java/javaee/        http://blog.globalcode.com.br/        http://docs.oracl...
Obrigado !                       eder@yaw.com.br                          @edermag                                        ...
Próximos SlideShares
Carregando em…5
×

Introdução a Plataforma Java EE

2.240 visualizações

Publicada em

Slides da apresentação sobre Introdução ao Java EE: primeiros passos com a plataforma. Palestra realizada durante o #TDC2012.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.240
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
104
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Plataforma Java EE

  1. 1. Introdução a plataforma Java EE Eder Magalhães @edermag www.yaw.com.br Globalcode  –  Open4educationThursday, July 5, 12
  2. 2. Agenda Desafios do desenvolvimento corporativo; A plataforma Java EE; Plataforma baseada em especificações; Camada de persistência; Regras de negócio; Desenvolvimento web; Demonstrando Java EE com ScrumToys; Outros componentes Java EE; Links; Globalcode  –  Open4educationThursday, July 5, 12
  3. 3. Desenvolvimento corporativo Pensar só na “linguagem” não é o suficiente; Existem outros fatores de impacto; Globalcode  –  Open4educationThursday, July 5, 12
  4. 4. Desenvolvimento corporativo Pensar só na “linguagem” não é o suficiente; Existem outros fatores de impacto; Globalcode  –  Open4educationThursday, July 5, 12
  5. 5. Quais fatores? Escalabilidade; Disponibilidade; Performance durante execução; Integração com outros aplicativos; Segurança; Flexível a mudanças; O custo deve ser baixo; E vários outros ... (“ades”); Globalcode  –  Open4educationThursday, July 5, 12
  6. 6. Já ia me esquecendo... Globalcode  –  Open4educationThursday, July 5, 12
  7. 7. Produtivo! Como de costume: o prazo é para ontem. Globalcode  –  Open4educationThursday, July 5, 12
  8. 8. Java EE pretende resolver esses problemas. Globalcode  –  Open4educationThursday, July 5, 12
  9. 9. Java EE pretende resolver esses problemas. Globalcode  –  Open4educationThursday, July 5, 12
  10. 10. Java Enterprise Edition O Java EE é uma plataforma que atende as necessidades de uma vasta gama de aplicações corporativas; A plataforma é formada por modelos de programação, APIs e frameworks; Elaborada através de especificações; Determina quais funcionalidades devem ser implementadas pelos fornecedores de servidores de aplicação; Globalcode  –  Open4educationThursday, July 5, 12
  11. 11. Breve comparação Java SE Globalcode  –  Open4educationThursday, July 5, 12
  12. 12. Breve comparação Java SE Java EE Globalcode  –  Open4educationThursday, July 5, 12
  13. 13. Java EE na visão dos fornecedores Empresas “terceiras” que criam servidores para gerenciar aplicativos Java EE; Devem respeitar as regras definidas pelas especificações Java EE; Garantem o código que resolve (implementa) as APIs Java EE; Globalcode  –  Open4educationThursday, July 5, 12
  14. 14. Java EE na visão dos desenvolvedores Podem usufruir de uma série de APIs, padronizadas pela plataforma; Têm o poder de escolha de qual servidor Java EE utilizar; Tecnologias disponíves podem ser classificadas: Web Services; Componentes p/ desenvolvimento web; Componentes p/ desenvolvimento enterprise; Componentes p/ gestão e segurança; Globalcode  –  Open4educationThursday, July 5, 12
  15. 15. Especificações: a tecnologia + poderosa A especificação é um contrato: Determina o que deve ser feito; Favorece a concorrência entre fornecedores; Mais opções para os desenvolvedores; É possível acompanhar o rumo da tecnologia; Um grupo de empresas (e pessoas) com poder de decisão. Oracle, Google, IBM, Intel, HP, Twitter, Red Hat, Eclipse Foundation, SouJava, TOTVS, Samsung, SAP e outros… Globalcode  –  Open4educationThursday, July 5, 12
  16. 16. Evolução do Java EE Java EE 6 EJB Lite, Java EE 5 Restful WS, CDI, Easy of Validation, Development, Extensibility. J2EE 1.4 Annotations, EJB 3.0, Persistence API, Web Profile J2EE 1.3 Web Services, New Web Management, Services CMP, Deployment, J2EE 1.2 Coneector, Async. Architecture Servlet, JSP, EJB, JMS, RMI Dez 99 Set 01 Nov 03 May 06 Dec 09 10 specs 13 specs 20 specs 23 specs 33 specs Globalcode  –  Open4educationThursday, July 5, 12
  17. 17. Algumas APIs fundamentais! Globalcode  –  Open4educationThursday, July 5, 12
  18. 18. Algumas APIs fundamentais! Globalcode  –  Open4educationThursday, July 5, 12
  19. 19. Persistência Grande maioria das aplicações utilizam banco de dados relacional; Converter o modelo de classes em tabelas relacionais é trabalhoso; Implementar uma aplicação multi banco de dados não é fácil; Usar uma tecnologia ORM diminui esse esforço; Globalcode  –  Open4educationThursday, July 5, 12
  20. 20. JPA - Java Persistence API Define um padrão para frameworks ORM; Simples e fácil de usar: Anotar classes e atributos/métodos; Resolve os relacionamentos O.O.: Herança; Composição, agregação e associação; Conta com vários providers; Tem alta adoção no mercado; Globalcode  –  Open4educationThursday, July 5, 12
  21. 21. JPA: Visão das camadas Globalcode  –  Open4educationThursday, July 5, 12
  22. 22. Exemplo JPA @Entity @Table(name = "projects") public class Project { @Column(nullable = false, unique = true) private String name; @OneToMany(mappedBy = "project", cascade = CascadeType.ALL) private List<Sprint> sprints; ... } Globalcode  –  Open4educationThursday, July 5, 12
  23. 23. Complexidade nas regras de negócio A necessidade de integração com tecnologias diferentes (legado); Um módulo do sistema deve ser processado em outra máquina/cluster; O uso de cache de objetos favorece a escalabilidade; Executar um fluxo de negócio demorado de forma assíncrona; Garantir a consistência de uma operação transacional; Globalcode  –  Open4educationThursday, July 5, 12
  24. 24. EJB - Enterprise JavaBeans Define um modelo avançado de componentes para plataforma; Com EJB é possível resolver: Integração com outras tecnologias; Processamento remoto / assíncrono / agendado; Controle transacional; Faz cache de objetos; Pode ser utilizado em aplicação web ou desktop; Estabelece uma versão Lite p/ aplicações simples; Globalcode  –  Open4educationThursday, July 5, 12
  25. 25. Exemplo EJB @Stateless public class ProjectServiceBean implements ProjectService { @PersistenceContext private EntityManager em; public void save(Project p) { em.persist(p); //insert na tabela } @Schedule(hour="2", minute="30", dayOfMonth="*") public void backupData() { //metodo agendado //... } } Globalcode  –  Open4educationThursday, July 5, 12
  26. 26. Validação Necessidade de validar dados digitados pelo usuário: Tarefa comum e repetitiva; Globalcode  –  Open4educationThursday, July 5, 12
  27. 27. Bean Validation Define um modelo de validações simples e prático, através de anotações; Disponiliza uma série de validações pré- definidas; Permite a customização de validadores; Pode ser plugada em diversas tecnologias Java: Hibernate, JSF, Spring MVC e outros; Globalcode  –  Open4educationThursday, July 5, 12
  28. 28. Exemplo Bean Validation @Entity @Table(name="sprints") public class Sprint { @NotNull private String name; @Min(1) @Max(10) private Integer storyPoints; ... @SprintNameUniquenessConstraint public String getName() { return name; } ... } Globalcode  –  Open4educationThursday, July 5, 12
  29. 29. Desenvolvimento web: o início Desenvolver aplicações que são executadas na web por um navegador; Criar componentes em Java para gerar conteúdo dinâmico para web (HTML, JavaScript, CSS); Globalcode  –  Open4educationThursday, July 5, 12
  30. 30. Servlet & JSP - JavaServer Pages Servlets: Componentes Java com a capacidade de atender o fluxo requisição x resposta (HTTP); Eficientes, são projetos para escalar; Atualmente são responsáveis pela infra- estrutura de um aplicativo web; JSP: Componentes web responsáveis por gerar conteúdo visual (HTML, JavaScript, CSS); Simples, usam o formato de marcação (tags); Globalcode  –  Open4educationThursday, July 5, 12
  31. 31. Exemplo Servlet @WebServlet(url= "/project") public class ProjectServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletReponse resp){ ProjectDAO dao = new DefaultProjectDAO(); req.setAttribute("projects", dao.getAll()); RequestDispatcher rd = req.getDispactcher("projects.jsp"); rd.forward(req, resp); } } Globalcode  –  Open4educationThursday, July 5, 12
  32. 32. Exemplo JSP <html> <head> <title>Projects</title> </head> <body> <table> <tr><td>Name</td><td>Action</td></tr> <c:forEach items="${projects}" var="{p}" > <tr> <td>${p.name}</td> <td> <a href="/delProject?id=${p.id}">Delete</a> </td> </tr> </c:forEach> </table> </html> Globalcode  –  Open4educationThursday, July 5, 12
  33. 33. Desenvolvimento web: a evolução Aplicações web seguindo o modelo MVC; Aplicações web complexas, com maior iteratividade (Ajax) e usabilidade; Maior produtividade para o desenvolvimento; Usar uma tecnologia baseada em componentes seria uma ótima opção; Globalcode  –  Open4educationThursday, July 5, 12
  34. 34. JSF - JavaServer Faces Determina uma framework padrão para construção de aplicativos MVC em Java EE; Evolui a proposta do JSP; Disponibiliza uma série de componentes visuais; Suporta Ajax; Promove o uso de templates para construção de páginas; Permite a criação de novos componentes visuais; É fácil de utilizar; Tem alta adoção no mercado; Globalcode  –  Open4educationThursday, July 5, 12
  35. 35. Exemplo JSF <html xmlns="http://www.w3.org/1999/xhtml" ... xmlns:h="http://java.sun.com/jsf/html"> <h:form id="frmListProjects"> <h:dataTable value="#{projectManager.projects}" var="p" title="Projects"> <h:column> <f:facet name="header"><h:outputText value="Name" /></f:facet> <h:outputText value="#{project.name}" /> </h:column> <h:column> <f:facet name="header"><h:outputText value="Action"/></f:facet> <h:commandButton action="#{projectManager.edit}" value="Edit" /> </h:column> </h:dataTable> </h:form> </html> Globalcode  –  Open4educationThursday, July 5, 12
  36. 36. Desenvolvimento web: nível avançado Em sistemas de porte maior ou com regras flexíveis é interessante manter um bom nível de isolamento; Buscar o fraco acoplamento e a alta coesão é sempre uma ótima opção; Algumas aplicações exigem a integração de diferentes camadas de aplicação, ex: JSF + EJB; Globalcode  –  Open4educationThursday, July 5, 12
  37. 37. CDI - Context Dependency Injection Promove a integração entre componentes para aplicações Java EE de forma desacoplada; Torna transparente a integração JSF & EJB; Controla/gerencia instâncias de objetos; Habilidade de resolver dependências com um sofisticado mecanismo de injeção; Provê um modelo de eventos, conforme ciclo de vida dos objetos; Implementa um mecanismo eficiente para armazenar dados de um aplicativo web; Globalcode  –  Open4educationThursday, July 5, 12
  38. 38. Exemplo CDI @Named public class DashboardManager { @Inject private ProjectDao dao; public String getDefaultProject(){ return dao.getFirstProject().getName(); } } <h:body> <h:outputText value="#{dashboardManager.defaultProject}" /> </h:body> Globalcode  –  Open4educationThursday, July 5, 12
  39. 39. Exemplo CDI @Named public class DashboardManager { @Inject private ProjectDao dao; public String getDefaultProject(){ return dao.getFirstProject().getName(); } } <h:body> <h:outputText value="#{dashboardManager.defaultProject}" /> </h:body> Globalcode  –  Open4educationThursday, July 5, 12
  40. 40. ScrumToys: a DEMO brazuca do Java EE Projeto exemplo do NetBeans e Glassfish; Tecnologias utilizadas: JSF; JPA; Bean Validation; Globalcode  –  Open4educationThursday, July 5, 12
  41. 41. Outros componentes Java EE Java Message Service API; Java Transaction API; JavaMail; JSTL e EL; Java API for RESTful Web Services; Java API for XML-Based Web Services; Java Architecture for XML Binding; ... Globalcode  –  Open4educationThursday, July 5, 12
  42. 42. Java EE 7: A plataforma na nuvem! … Custo x Benefício Globalcode  –  Open4educationThursday, July 5, 12
  43. 43. Links http://www.oracle.com/technetwork/java/javaee/ http://blog.globalcode.com.br/ http://docs.oracle.com/javaee/6/tutorial/doc/ https://blogs.oracle.com/arungupta/ https://blogs.oracle.com/theaquarium/ http://www.slideshare.net/arungupta1 http://www.slideshare.net/edermag http://www.slideshare.net/vsenger http://vimeo.com/10079192 http://netbeans.org/kb/samples/scrum-toys.html Globalcode  –  Open4educationThursday, July 5, 12
  44. 44. Obrigado ! eder@yaw.com.br @edermag Globalcode  –  Open4educationThursday, July 5, 12

×