SlideShare a Scribd company logo
1 of 35
Download to read offline
Java EE 7, na era do Cloud Computing
             Eder Magalhães
              @edermag
            www.yaw.com.br

                              Globalcode	
  –	
  Open4education
Agenda
!     Serviços de cloud computing atuais;
!     A nova filosofia da plataforma Java EE;
!     Objetivos da plataforma Java EE 7;
!     Auto provisionamento;
!     Multi-tenancy;
!     Novas APIs & melhorias nas APIs atuais;
!     Novidades do Java EE 7 para web;
!     Planejamento do Java EE 7;
!     Links;
                                          Globalcode	
  –	
  Open4education
Computação em nuvem...




                  Globalcode	
  –	
  Open4education
Modelos de serviços para Cloud




                             Globalcode	
  –	
  Open4education
Foco: padrão para PaaS
!     Produtos com suporte a Java:
!     Amazon Elastic Beanstalk;
!     Cloud Foundry;
!     Google App Engine;
!     Red Hat OpenShift;
!     CloudBees;
!     Heroku;

    Muito pouco (quase nada) é padronizado!

                                              Globalcode	
  –	
  Open4education
A filosofia ...



A plataforma Java EE oferece serviços!




                              Globalcode	
  –	
  Open4education
A nova filosofia !



A plataforma Java EE é o serviço!




                              Globalcode	
  –	
  Open4education
Java EE 7, objetivos da especificação
 !   Metadados e provisionamento automático;
 !   Elasticidade e escalabilidade autônoma;
 !   Suporte a Multi-tenancy nas APIs atuais;
 !   Adicionar APIs importantes na nuvem;
 !   Apoio as tecnologias HTML5 (WebSocket, JSON);
 !   Melhorias em APIs antigas;
 !   Definição de novas APIs;
 !   Atualização do Web Profile;
                                        JSR 342
                                     Globalcode	
  –	
  Open4education
Modelo de implantação atual
 ! Mapear as configurações dos serviços utilizados;




                                      Globalcode	
  –	
  Open4education
Modelo de implantação atual
 ! Mapear as configurações dos serviços utilizados;




      1          2           3               4




                                      Globalcode	
  –	
  Open4education
Modelo de implantação atual
 ! Mapear as configurações dos serviços utilizados;




      1          2            3              4



      5          deploy ear/war
                                      Globalcode	
  –	
  Open4education
Auto provisionamento
 !   Configuração via serviço cloud!




      1



      2           deploy ear/war
                                       Globalcode	
  –	
  Open4education
Multi-tenancy
 ! Locação da mesma infra-estrutura e/ou aplicação
   para vários clientes.




                                     Globalcode	
  –	
  Open4education
Suporte a multi-tenancy
 ! Flexibilidade em distribuir instâncias da mesma
   aplicação para diferentes clientes (tenants);
 ! Mapeamento do tenant é realizado no container;
 ! Algumas APIs que suportaram multi-tenancy:
   !   JPA 2.1;
   !   EJB 3.2;
   !   Servlets 3.1;
   !   JMS 2.0;


                                      Globalcode	
  –	
  Open4education
Outras melhorias...




                      Globalcode	
  –	
  Open4education
Java Persistence API 2.1
 !   UPDATE e DELETE em lote usando Criteria;
 ! Novidades em JPA QL:
     !   FUNCTION: uso de funções pré-definidas;
     !   TREAT: permite cast em consultas;
     !   ON: outra abordagem para relacionamentos;
 ! Suporte a consultas via Stored Procedures;
 !   Listeners utilizando CDI;
 ! Controle da sincronização do persistence context;
                                          JSR 338
                                       Globalcode	
  –	
  Open4education
Exemplo JPA 2.1 (I)
//bulk update
CriteriaUpdate<Produto> q =
      cb.createCriteriaUpdate(Produto.class);
Root<Produto> s = q.from(Produto.class);
q.set(s.get(Produto_.status), "indisponivel");
q.where(cb.lt(s.get(Produto_.preco), 100));


//downcasting via JPA-QL
SELECT l.nome, l.ISBN
FROM Pedido p JOIN TREAT(p.produto AS Livro) l;




                                                Globalcode	
  –	
  Open4education
Exemplo JPA 2.1 (II)
/*stored procedure */
StoredProcedreQuery sp =
EntityManager.createNamedStoredProcedureQuery("procExecute");
sp.registerStoredProcedureParameter(1,
      String.class,
      ParameterMode.INOUT);
sp.setParameter(1, "Executando stored procedure");
sp. registerStoredProcedureParameter(2,
      Integer.class,
      ParameterMode.IN);
sp.setParameter(2, 50);
sp.execute();
String result = sp.getOutputParameterValue(1);

                                             Globalcode	
  –	
  Open4education
JavaServer Faces 2.2
 !   Integração com HTML5;
 !   Utilizar filas para múltiplas requisições Ajax;
 !   Injeção em todos os artefatos JSF (lifecycle +
     converters + validators);
 !   Novos componentes: FileUpload & BackButton;
 !   Mais simples:
     !   Tag Handler não é mais necessário;
     !   URLs compactas para mapear TagLibraries;
     !   cc:interfaces opcional;              JSR 344
                                       Globalcode	
  –	
  Open4education
JAX-RS 2.0
 !     Definição de APIs para cliente;
 !     Validar parâmetros via Bean Validation;
 !     Processamento assíncrono (server-side);
 !     Possível definir filtros e interceptadores;
 !     Content negotiation (server-side);
 !     Suporte a Hypermedia (processar links);



                                                JSR 339
                                             Globalcode	
  –	
  Open4education
Exemplo JAX-RS 2.0 (Server)
@Path("/produtoAsync")
public class ProdutoService {
    @Context ExecutionContext ctx;

    @GET @Suspend
    public Product longOp() {
        Executors.newSingleThreadExecutor().submit(
            new Runnable() {
                  public void run() {
                      Produto p = qryFromDatabase();
                      ctx.resume(p);
                  }
            });
    }
}                                              Globalcode	
  –	
  Open4education
Exemplo JAX-RS 2.0 (Client)
Client c = ClientFactory.newClient();
Future<String> f = c.target("http://.../produtoAsync")
      .request("text/plain")
      .async()
      .get( new InvocationCallback<Produto>() {
                 @Override   //sucesso
                 public void completed(Produto p) { ... }


                 @Override   //falha
                 public void failed(InvocationException e) {
                     System.err.println(e.getCause());
                 }
      } );

                                               Globalcode	
  –	
  Open4education
Bean Validation 1.1
 ! Integração com outras especificações;
 ! Validação em parâmetros e/ou retorno de
     métodos;
 ! Validar elementos de uma coleção;
 !   Constraint composition com OR;




                                        JSR 349
                                     Globalcode	
  –	
  Open4education
Exemplo Bean Validation 1.1
@MethodValidated
public class OrderService {


      public void placeOrder(
             @NotNull @Size(min=3) String customerCode,
             @NotNull @Valid Item item){ ... }


      @NotNull @Future
      public Date getNextAvailableDeliveryDate(){ ... }


}



                                             Globalcode	
  –	
  Open4education
Java Message Service 2.0
 ! Simplificar a API;
 ! Reduzir o volume de código na troca de
     mensagens;
 ! Integração com CDI (@Inject);
 !   Connection, Session e outros são AutoCloseable;
 ! Maior integração entre provider e servidores;



                                          JSR 343
                                       Globalcode	
  –	
  Open4education
Concurrency utilities - new
 !   Define uma API simples e padronizada para
     utilização de concorrência em componentes da
     plataforma Java EE, sem comprometer a
     integridade do container;




                                         JSR 236
                                      Globalcode	
  –	
  Open4education
Novidades para web...




                    Globalcode	
  –	
  Open4education
JSON-P 1.0 - new
 !   Define uma API para representar conteúdo JSON;
 !   Define uma API para consumir/produzir JSON;
 ! Não cobre o binding de objetos Java x JSON;




                                         JSR 353
                                      Globalcode	
  –	
  Open4education
Exemplo JSON-P
JsonObject jObj = new JsonBuilder()
   .beginObject()
     .add("nome", "Eder")
     .add("idade", 30)
     .beginObject("endereco")
        .add("logr", "Rua Casa do Ator, nro 285")
        .add("cidade", "Sao Paulo")
     .endObject()
   .endObject()
.build();


String json = "{"nome":"Eder","idade":"30"}";
JsonValue jValue = new JsonReader(new StringReader(json))
      .readObject();
                                             Globalcode	
  –	
  Open4education
Java API for Web Sockets - new
 !   Define um modelo de programação para Web
     Sockets dentro da plataforma Java;




                                       JSR 356
                                    Globalcode	
  –	
  Open4education
Outras especificações
 !     Servlets 3.1 (JSR 340);
 !     Expression Language 3.0 (JSR 341);
 !     EJB 3.1 (JSR 345);
 !     CDI 1.1 (JSR 346);
 !     State Managment (JSR 350);
 !     Batch Application for Java Platform (JSR 352);




                                          Globalcode	
  –	
  Open4education
Projeto Avatar
 !   Modelo de programação híbrido para diferentes
     clientes;




                                       Globalcode	
  –	
  Open4education
Planejamento

	
 !   Previsão para o lançamento:
     !   1o semestre de 2013;




                                   *GlassFish Server 4


                                   Globalcode	
  –	
  Open4education
Links
! http://java.net/projects/javaee-spec/pages/Home
! https://blogs.oracle.com/arungupta/entry/
  java_ee_7_key_features
! https://blogs.oracle.com/arungupta/tags/javaee
! https://blogs.oracle.com/theaquarium/
! http://www.slideshare.net/arungupta1
! http://glassfish.java.net/javaone2011/
! http://www.infoq.com/br/articles/javaee7-cloud-
  support
! http://www.infoq.com/br/news/2012/01/javaEE7-
  novidades

                                       Globalcode	
  –	
  Open4education
Obrigado !

eder@yaw.com.br
   @edermag




                  Globalcode	
  –	
  Open4education

More Related Content

What's hot

XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
Stephen Chin
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
elliando dias
 
TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDI
Rodrigo Cândido da Silva
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Ricardo Ferreira
 

What's hot (18)

Precisamos falar sobre Gradle
Precisamos falar sobre GradlePrecisamos falar sobre Gradle
Precisamos falar sobre Gradle
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
 
Grails
GrailsGrails
Grails
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
Android DevConference - Elastic Search como ferramenta de busca em aplicações...Android DevConference - Elastic Search como ferramenta de busca em aplicações...
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EE
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NETTDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDI
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
 

Viewers also liked

Viewers also liked (9)

JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidades
 
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
 
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
 
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
 
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
 
Prime Faces
Prime FacesPrime Faces
Prime Faces
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistência
 

Similar to JavaEE 7, na era do cloud computing

TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
Inael Rodrigues
 
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
 

Similar to JavaEE 7, na era do cloud computing (20)

TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
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
 
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
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabr...
VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabr...VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabr...
VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabr...
 
TDC 2008 Spring Framework
TDC 2008 Spring FrameworkTDC 2008 Spring Framework
TDC 2008 Spring Framework
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Introducao ao Spring Web MVC
Introducao ao Spring Web MVCIntroducao ao Spring Web MVC
Introducao ao Spring Web MVC
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma Java
 
IC-Testes Invasao
IC-Testes InvasaoIC-Testes Invasao
IC-Testes Invasao
 

More from Eder Magalhães

JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
Eder Magalhães
 

More from Eder Magalhães (13)

Cvc programacao reativa
Cvc programacao reativaCvc programacao reativa
Cvc programacao reativa
 
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
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring Roo
 
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
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
Profissao java gwt e javafx
Profissao java gwt e javafxProfissao java gwt e javafx
Profissao java gwt e javafx
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Android SestInfo 2010
Android SestInfo 2010Android SestInfo 2010
Android SestInfo 2010
 
JavaFX SestInfo 2010
JavaFX SestInfo 2010JavaFX SestInfo 2010
JavaFX SestInfo 2010
 
Gwt-Guice_TDC2009
Gwt-Guice_TDC2009Gwt-Guice_TDC2009
Gwt-Guice_TDC2009
 

JavaEE 7, na era do cloud computing

  • 1. Java EE 7, na era do Cloud Computing Eder Magalhães @edermag www.yaw.com.br Globalcode  –  Open4education
  • 2. Agenda !   Serviços de cloud computing atuais; !   A nova filosofia da plataforma Java EE; !   Objetivos da plataforma Java EE 7; !   Auto provisionamento; !   Multi-tenancy; !   Novas APIs & melhorias nas APIs atuais; !   Novidades do Java EE 7 para web; !   Planejamento do Java EE 7; !   Links; Globalcode  –  Open4education
  • 3. Computação em nuvem... Globalcode  –  Open4education
  • 4. Modelos de serviços para Cloud Globalcode  –  Open4education
  • 5. Foco: padrão para PaaS !   Produtos com suporte a Java: !   Amazon Elastic Beanstalk; !   Cloud Foundry; !   Google App Engine; !   Red Hat OpenShift; !   CloudBees; !   Heroku; Muito pouco (quase nada) é padronizado! Globalcode  –  Open4education
  • 6. A filosofia ... A plataforma Java EE oferece serviços! Globalcode  –  Open4education
  • 7. A nova filosofia ! A plataforma Java EE é o serviço! Globalcode  –  Open4education
  • 8. Java EE 7, objetivos da especificação ! Metadados e provisionamento automático; ! Elasticidade e escalabilidade autônoma; ! Suporte a Multi-tenancy nas APIs atuais; ! Adicionar APIs importantes na nuvem; ! Apoio as tecnologias HTML5 (WebSocket, JSON); ! Melhorias em APIs antigas; ! Definição de novas APIs; ! Atualização do Web Profile; JSR 342 Globalcode  –  Open4education
  • 9. Modelo de implantação atual ! Mapear as configurações dos serviços utilizados; Globalcode  –  Open4education
  • 10. Modelo de implantação atual ! Mapear as configurações dos serviços utilizados; 1 2 3 4 Globalcode  –  Open4education
  • 11. Modelo de implantação atual ! Mapear as configurações dos serviços utilizados; 1 2 3 4 5 deploy ear/war Globalcode  –  Open4education
  • 12. Auto provisionamento !   Configuração via serviço cloud! 1 2 deploy ear/war Globalcode  –  Open4education
  • 13. Multi-tenancy ! Locação da mesma infra-estrutura e/ou aplicação para vários clientes. Globalcode  –  Open4education
  • 14. Suporte a multi-tenancy ! Flexibilidade em distribuir instâncias da mesma aplicação para diferentes clientes (tenants); ! Mapeamento do tenant é realizado no container; ! Algumas APIs que suportaram multi-tenancy: !   JPA 2.1; !   EJB 3.2; !   Servlets 3.1; !   JMS 2.0; Globalcode  –  Open4education
  • 15. Outras melhorias... Globalcode  –  Open4education
  • 16. Java Persistence API 2.1 !   UPDATE e DELETE em lote usando Criteria; ! Novidades em JPA QL: !   FUNCTION: uso de funções pré-definidas; !   TREAT: permite cast em consultas; !   ON: outra abordagem para relacionamentos; ! Suporte a consultas via Stored Procedures; !   Listeners utilizando CDI; ! Controle da sincronização do persistence context; JSR 338 Globalcode  –  Open4education
  • 17. Exemplo JPA 2.1 (I) //bulk update CriteriaUpdate<Produto> q = cb.createCriteriaUpdate(Produto.class); Root<Produto> s = q.from(Produto.class); q.set(s.get(Produto_.status), "indisponivel"); q.where(cb.lt(s.get(Produto_.preco), 100)); //downcasting via JPA-QL SELECT l.nome, l.ISBN FROM Pedido p JOIN TREAT(p.produto AS Livro) l; Globalcode  –  Open4education
  • 18. Exemplo JPA 2.1 (II) /*stored procedure */ StoredProcedreQuery sp = EntityManager.createNamedStoredProcedureQuery("procExecute"); sp.registerStoredProcedureParameter(1, String.class, ParameterMode.INOUT); sp.setParameter(1, "Executando stored procedure"); sp. registerStoredProcedureParameter(2, Integer.class, ParameterMode.IN); sp.setParameter(2, 50); sp.execute(); String result = sp.getOutputParameterValue(1); Globalcode  –  Open4education
  • 19. JavaServer Faces 2.2 !   Integração com HTML5; !   Utilizar filas para múltiplas requisições Ajax; !   Injeção em todos os artefatos JSF (lifecycle + converters + validators); !   Novos componentes: FileUpload & BackButton; !   Mais simples: !   Tag Handler não é mais necessário; !   URLs compactas para mapear TagLibraries; !   cc:interfaces opcional; JSR 344 Globalcode  –  Open4education
  • 20. JAX-RS 2.0 ! Definição de APIs para cliente; ! Validar parâmetros via Bean Validation; ! Processamento assíncrono (server-side); ! Possível definir filtros e interceptadores; !   Content negotiation (server-side); ! Suporte a Hypermedia (processar links); JSR 339 Globalcode  –  Open4education
  • 21. Exemplo JAX-RS 2.0 (Server) @Path("/produtoAsync") public class ProdutoService { @Context ExecutionContext ctx; @GET @Suspend public Product longOp() { Executors.newSingleThreadExecutor().submit( new Runnable() { public void run() { Produto p = qryFromDatabase(); ctx.resume(p); } }); } } Globalcode  –  Open4education
  • 22. Exemplo JAX-RS 2.0 (Client) Client c = ClientFactory.newClient(); Future<String> f = c.target("http://.../produtoAsync") .request("text/plain") .async() .get( new InvocationCallback<Produto>() { @Override //sucesso public void completed(Produto p) { ... } @Override //falha public void failed(InvocationException e) { System.err.println(e.getCause()); } } ); Globalcode  –  Open4education
  • 23. Bean Validation 1.1 ! Integração com outras especificações; ! Validação em parâmetros e/ou retorno de métodos; ! Validar elementos de uma coleção; !   Constraint composition com OR; JSR 349 Globalcode  –  Open4education
  • 24. Exemplo Bean Validation 1.1 @MethodValidated public class OrderService { public void placeOrder( @NotNull @Size(min=3) String customerCode, @NotNull @Valid Item item){ ... } @NotNull @Future public Date getNextAvailableDeliveryDate(){ ... } } Globalcode  –  Open4education
  • 25. Java Message Service 2.0 ! Simplificar a API; ! Reduzir o volume de código na troca de mensagens; ! Integração com CDI (@Inject); !   Connection, Session e outros são AutoCloseable; ! Maior integração entre provider e servidores; JSR 343 Globalcode  –  Open4education
  • 26. Concurrency utilities - new !   Define uma API simples e padronizada para utilização de concorrência em componentes da plataforma Java EE, sem comprometer a integridade do container; JSR 236 Globalcode  –  Open4education
  • 27. Novidades para web... Globalcode  –  Open4education
  • 28. JSON-P 1.0 - new !   Define uma API para representar conteúdo JSON; !   Define uma API para consumir/produzir JSON; ! Não cobre o binding de objetos Java x JSON; JSR 353 Globalcode  –  Open4education
  • 29. Exemplo JSON-P JsonObject jObj = new JsonBuilder() .beginObject() .add("nome", "Eder") .add("idade", 30) .beginObject("endereco") .add("logr", "Rua Casa do Ator, nro 285") .add("cidade", "Sao Paulo") .endObject() .endObject() .build(); String json = "{"nome":"Eder","idade":"30"}"; JsonValue jValue = new JsonReader(new StringReader(json)) .readObject(); Globalcode  –  Open4education
  • 30. Java API for Web Sockets - new !   Define um modelo de programação para Web Sockets dentro da plataforma Java; JSR 356 Globalcode  –  Open4education
  • 31. Outras especificações !   Servlets 3.1 (JSR 340); !   Expression Language 3.0 (JSR 341); !   EJB 3.1 (JSR 345); !   CDI 1.1 (JSR 346); !   State Managment (JSR 350); !   Batch Application for Java Platform (JSR 352); Globalcode  –  Open4education
  • 32. Projeto Avatar !   Modelo de programação híbrido para diferentes clientes; Globalcode  –  Open4education
  • 33. Planejamento
 !   Previsão para o lançamento: !   1o semestre de 2013; *GlassFish Server 4 Globalcode  –  Open4education
  • 34. Links ! http://java.net/projects/javaee-spec/pages/Home ! https://blogs.oracle.com/arungupta/entry/ java_ee_7_key_features ! https://blogs.oracle.com/arungupta/tags/javaee ! https://blogs.oracle.com/theaquarium/ ! http://www.slideshare.net/arungupta1 ! http://glassfish.java.net/javaone2011/ ! http://www.infoq.com/br/articles/javaee7-cloud- support ! http://www.infoq.com/br/news/2012/01/javaEE7- novidades Globalcode  –  Open4education
  • 35. Obrigado ! eder@yaw.com.br @edermag Globalcode  –  Open4education