Introdução a Plataforma Java EE
-
Upload
eder-magalhaes -
Category
Technology
-
view
2.077 -
download
3
description
Transcript of Introdução a Plataforma Java EE
![Page 1: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/1.jpg)
Globalcode – Open4education
Introdução a plataforma Java EE
Eder Magalhães@edermag
www.yaw.com.br
Thursday, July 5, 12
![Page 2: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/2.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 3: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/3.jpg)
Globalcode – Open4education
Desenvolvimento corporativo
Pensar só na “linguagem” não é o suficiente;Existem outros fatores de impacto;
Thursday, July 5, 12
![Page 4: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/4.jpg)
Globalcode – Open4education
Desenvolvimento corporativo
Pensar só na “linguagem” não é o suficiente;Existem outros fatores de impacto;
Thursday, July 5, 12
![Page 5: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/5.jpg)
Globalcode – Open4education
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”);
Thursday, July 5, 12
![Page 6: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/6.jpg)
Globalcode – Open4education
Já ia me esquecendo...
Thursday, July 5, 12
![Page 7: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/7.jpg)
Globalcode – Open4education
Produtivo!Como de costume: o prazo é para ontem.
Thursday, July 5, 12
![Page 8: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/8.jpg)
Globalcode – Open4education
Java EE pretende resolver esses problemas.
Thursday, July 5, 12
![Page 9: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/9.jpg)
Globalcode – Open4education
Java EE pretende resolver esses problemas.
Thursday, July 5, 12
![Page 10: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/10.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 11: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/11.jpg)
Globalcode – Open4education
Breve comparação
������
����
��
Java SE
Thursday, July 5, 12
![Page 12: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/12.jpg)
Globalcode – Open4education
Breve comparação
������
����
��
������
���
�� �� ���
����
Java SE Java EE
Thursday, July 5, 12
![Page 13: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/13.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 14: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/14.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 15: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/15.jpg)
Globalcode – Open4education
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…
Thursday, July 5, 12
![Page 16: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/16.jpg)
Globalcode – Open4education
Evolução do Java EE
J2EE 1.2
Servlet, JSP, EJB, JMS, RMI
J2EE 1.3
CMP, Coneector, Architecture
J2EE 1.4
Web Services, Management, Deployment,
Async.
Java EE 5
Easy of Development, Annotations,
EJB 3.0, Persistence API,
New Web Services
Java EE 6
EJB Lite, Restful WS,
CDI, Validation,
Extensibility.
Web Profile
Dez 99 10 specs
Set 01 13 specs
Nov 03 20 specs
May 06 23 specs
Dec 09 33 specs
Thursday, July 5, 12
![Page 17: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/17.jpg)
Globalcode – Open4education
Algumas APIs fundamentais!
Thursday, July 5, 12
![Page 18: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/18.jpg)
Globalcode – Open4education
Algumas APIs fundamentais!
Thursday, July 5, 12
![Page 19: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/19.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 20: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/20.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 21: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/21.jpg)
Globalcode – Open4education
JPA: Visão das camadas
Thursday, July 5, 12
![Page 22: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/22.jpg)
Globalcode – Open4education
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;
...
}
Thursday, July 5, 12
![Page 23: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/23.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 24: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/24.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 25: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/25.jpg)
Globalcode – Open4education
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
//...
}
}
Thursday, July 5, 12
![Page 26: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/26.jpg)
Globalcode – Open4education
Validação
Necessidade de validar dados digitados pelo usuário:Tarefa comum e repetitiva;
Thursday, July 5, 12
![Page 27: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/27.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 28: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/28.jpg)
Globalcode – Open4education
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;
}
...
}
Thursday, July 5, 12
![Page 29: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/29.jpg)
Globalcode – Open4education
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);
Thursday, July 5, 12
![Page 30: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/30.jpg)
Globalcode – Open4education
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);
Thursday, July 5, 12
![Page 31: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/31.jpg)
Globalcode – Open4education
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);
}
}
Thursday, July 5, 12
![Page 32: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/32.jpg)
Globalcode – Open4education
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>
Thursday, July 5, 12
![Page 33: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/33.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 34: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/34.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 35: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/35.jpg)
Globalcode – Open4education
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>
Thursday, July 5, 12
![Page 36: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/36.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 37: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/37.jpg)
Globalcode – Open4education
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;
Thursday, July 5, 12
![Page 38: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/38.jpg)
Globalcode – Open4education
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>
Thursday, July 5, 12
![Page 39: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/39.jpg)
Globalcode – Open4education
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>
Thursday, July 5, 12
![Page 40: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/40.jpg)
Globalcode – Open4education
ScrumToys: a DEMO brazuca do Java EE
Projeto exemplo do NetBeans e Glassfish;Tecnologias utilizadas:
JSF;JPA;Bean Validation;
Thursday, July 5, 12
![Page 41: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/41.jpg)
Globalcode – Open4education
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;...
Thursday, July 5, 12
![Page 42: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/42.jpg)
Globalcode – Open4education
Java EE 7: A plataforma na nuvem!
…
Custo x Benefício
Thursday, July 5, 12
![Page 43: Introdução a Plataforma Java EE](https://reader030.fdocument.pub/reader030/viewer/2022020101/54899e7db47959fb0c8b59f9/html5/thumbnails/43.jpg)
Globalcode – Open4education
Linkshttp://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/arungupta1http://www.slideshare.net/edermag
http://www.slideshare.net/vsengerhttp://vimeo.com/10079192
http://netbeans.org/kb/samples/scrum-toys.html
Thursday, July 5, 12