SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Introdução a plataforma Java EE
                       Eder Magalhães
                         @edermag
                       www.yaw.com.br

                                        Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Desenvolvimento corporativo

            Pensar só na “linguagem” não é o suficiente;
            Existem outros fatores de impacto;




                                               Globalcode	
  –	
  Open4education
Thursday, July 5, 12
Desenvolvimento corporativo

            Pensar só na “linguagem” não é o suficiente;
            Existem outros fatores de impacto;




                                               Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Já ia me esquecendo...




                                    Globalcode	
  –	
  Open4education
Thursday, July 5, 12
Produtivo!
                       Como de costume: o prazo é para ontem.




                                                   Globalcode	
  –	
  Open4education
Thursday, July 5, 12
Java EE pretende resolver esses
           problemas.




                                    Globalcode	
  –	
  Open4education
Thursday, July 5, 12
Java EE pretende resolver esses
           problemas.




                                    Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Breve comparação
                       Java SE




                                 Globalcode	
  –	
  Open4education
Thursday, July 5, 12
Breve comparação
                       Java SE   Java EE




                                      Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Algumas APIs fundamentais!




                              Globalcode	
  –	
  Open4education
Thursday, July 5, 12
Algumas APIs fundamentais!




                              Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
JPA: Visão das camadas




                            Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Validação
            Necessidade de validar dados digitados pelo
            usuário:
            Tarefa comum e repetitiva;




                                              Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
ScrumToys: a DEMO brazuca do Java EE
            Projeto exemplo do NetBeans e Glassfish;
            Tecnologias utilizadas:
              JSF;
              JPA;
              Bean Validation;




                                              Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Java EE 7:
               A plataforma na nuvem!
                                             …

                             Custo x Benefício




                               Globalcode	
  –	
  Open4education
Thursday, July 5, 12
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	
  –	
  Open4education
Thursday, July 5, 12
Obrigado !

                       eder@yaw.com.br
                          @edermag




                                         Globalcode	
  –	
  Open4education
Thursday, July 5, 12

Contenu connexe

Tendances

Apresentação java
Apresentação javaApresentação java
Apresentação java
munosai
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
Regis Magalhães
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
Aécio Costa
 

Tendances (18)

Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Java 01 Java Visao Geral
Java 01 Java Visao GeralJava 01 Java Visao Geral
Java 01 Java Visao Geral
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Mc1 JAVA
Mc1 JAVAMc1 JAVA
Mc1 JAVA
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8
 

Similaire à Introdução a Plataforma Java EE

GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
Bruno Borges
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
Rodrigo Cândido da Silva
 
Arquitetura jee bp_overview
Arquitetura jee bp_overviewArquitetura jee bp_overview
Arquitetura jee bp_overview
Juarez Junior
 
Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012
rogerlista
 

Similaire à Introdução a Plataforma Java EE (20)

TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring Roo
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMI
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Java
 
Arquitetura jee bp_overview
Arquitetura jee bp_overviewArquitetura jee bp_overview
Arquitetura jee bp_overview
 
Spring Roo
Spring RooSpring Roo
Spring Roo
 
JEE6 - Introdução
JEE6 - IntroduçãoJEE6 - Introdução
JEE6 - Introdução
 
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
 
Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 

Plus de Eder Magalhães

Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
Eder Magalhães
 

Plus de Eder Magalhães (20)

Cvc programacao reativa
Cvc programacao reativaCvc programacao reativa
Cvc programacao reativa
 
Concorrencia, baixa Latência e alta disponibilidade
Concorrencia, baixa Latência e alta disponibilidadeConcorrencia, baixa Latência e alta disponibilidade
Concorrencia, baixa Latência e alta disponibilidade
 
Java Is Back, Novidade do Java 8
Java Is Back, Novidade do Java 8Java Is Back, Novidade do Java 8
Java Is Back, Novidade do Java 8
 
Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o Forge
 
MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistência
 
Java e uma visão sobre PaaS
Java e uma visão sobre PaaSJava e uma visão sobre PaaS
Java e uma visão sobre PaaS
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidades
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8
 
Futuro da linguagem e plataforma: Java 7 e 8
Futuro da linguagem e plataforma: Java 7 e 8Futuro da linguagem e plataforma: Java 7 e 8
Futuro da linguagem e plataforma: Java 7 e 8
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Introducao ao Spring Web MVC
Introducao ao Spring Web MVCIntroducao ao Spring Web MVC
Introducao ao Spring Web MVC
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
Profissao java gwt e javafx
Profissao java gwt e javafxProfissao java gwt e javafx
Profissao java gwt e javafx
 

Introdução a Plataforma Java EE

  • 1. Introdução a plataforma Java EE Eder Magalhães @edermag www.yaw.com.br Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 3. Desenvolvimento corporativo Pensar só na “linguagem” não é o suficiente; Existem outros fatores de impacto; Globalcode  –  Open4education Thursday, July 5, 12
  • 4. Desenvolvimento corporativo Pensar só na “linguagem” não é o suficiente; Existem outros fatores de impacto; Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 6. Já ia me esquecendo... Globalcode  –  Open4education Thursday, July 5, 12
  • 7. Produtivo! Como de costume: o prazo é para ontem. Globalcode  –  Open4education Thursday, July 5, 12
  • 8. Java EE pretende resolver esses problemas. Globalcode  –  Open4education Thursday, July 5, 12
  • 9. Java EE pretende resolver esses problemas. Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 11. Breve comparação Java SE Globalcode  –  Open4education Thursday, July 5, 12
  • 12. Breve comparação Java SE Java EE Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 17. Algumas APIs fundamentais! Globalcode  –  Open4education Thursday, July 5, 12
  • 18. Algumas APIs fundamentais! Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 21. JPA: Visão das camadas Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 26. Validação Necessidade de validar dados digitados pelo usuário: Tarefa comum e repetitiva; Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 40. ScrumToys: a DEMO brazuca do Java EE Projeto exemplo do NetBeans e Glassfish; Tecnologias utilizadas: JSF; JPA; Bean Validation; Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 42. Java EE 7: A plataforma na nuvem! … Custo x Benefício Globalcode  –  Open4education Thursday, July 5, 12
  • 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  –  Open4education Thursday, July 5, 12
  • 44. Obrigado ! eder@yaw.com.br @edermag Globalcode  –  Open4education Thursday, July 5, 12