introdução a plataforma java ee

Post on 05-Dec-2014

2.076 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Globalcode  –  Open4education

Introdução a plataforma Java EE

Eder Magalhães@edermag

www.yaw.com.br

Thursday, July 5, 12

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

Globalcode  –  Open4education

Desenvolvimento corporativo

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

Thursday, July 5, 12

Globalcode  –  Open4education

Desenvolvimento corporativo

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

Thursday, July 5, 12

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

Globalcode  –  Open4education

Já ia me esquecendo...

Thursday, July 5, 12

Globalcode  –  Open4education

Produtivo!Como de costume: o prazo é para ontem.

Thursday, July 5, 12

Globalcode  –  Open4education

Java EE pretende resolver esses problemas.

Thursday, July 5, 12

Globalcode  –  Open4education

Java EE pretende resolver esses problemas.

Thursday, July 5, 12

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

Globalcode  –  Open4education

Breve comparação

������

����

��

Java SE

Thursday, July 5, 12

Globalcode  –  Open4education

Breve comparação

������

����

��

������

���

�� �� ���

����

Java SE Java EE

Thursday, July 5, 12

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

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

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

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

Globalcode  –  Open4education

Algumas APIs fundamentais!

Thursday, July 5, 12

Globalcode  –  Open4education

Algumas APIs fundamentais!

Thursday, July 5, 12

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

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

Globalcode  –  Open4education

JPA: Visão das camadas

Thursday, July 5, 12

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

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

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

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

Globalcode  –  Open4education

Validação

Necessidade de validar dados digitados pelo usuário:Tarefa comum e repetitiva;

Thursday, July 5, 12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Globalcode  –  Open4education

Java EE 7: A plataforma na nuvem!

Custo x Benefício

Thursday, July 5, 12

Globalcode  –  Open4education

eder@yaw.com.br@edermag

Obrigado !

Thursday, July 5, 12

top related