Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JavaEE 7, na era do cloud computing

1,724 views

Published on

Slides da apresentação sobre Java EE 7, na era do Cloud Computing. Palestra realizada durante o #TDC2012.

Published in: Technology

JavaEE 7, na era do cloud computing

  1. 1. Java EE 7, na era do Cloud Computing Eder Magalhães @edermag www.yaw.com.br Globalcode  –  Open4education
  2. 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. 3. Computação em nuvem... Globalcode  –  Open4education
  4. 4. Modelos de serviços para Cloud Globalcode  –  Open4education
  5. 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. 6. A filosofia ...A plataforma Java EE oferece serviços! Globalcode  –  Open4education
  7. 7. A nova filosofia !A plataforma Java EE é o serviço! Globalcode  –  Open4education
  8. 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. 9. Modelo de implantação atual ! Mapear as configurações dos serviços utilizados; Globalcode  –  Open4education
  10. 10. Modelo de implantação atual ! Mapear as configurações dos serviços utilizados; 1 2 3 4 Globalcode  –  Open4education
  11. 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. 12. Auto provisionamento !   Configuração via serviço cloud! 1 2 deploy ear/war Globalcode  –  Open4education
  13. 13. Multi-tenancy ! Locação da mesma infra-estrutura e/ou aplicação para vários clientes. Globalcode  –  Open4education
  14. 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. 15. Outras melhorias... Globalcode  –  Open4education
  16. 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. 17. Exemplo JPA 2.1 (I)//bulk updateCriteriaUpdate<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-QLSELECT l.nome, l.ISBNFROM Pedido p JOIN TREAT(p.produto AS Livro) l; Globalcode  –  Open4education
  18. 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. 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. 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. 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. 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. 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. 24. Exemplo Bean Validation 1.1@MethodValidatedpublic class OrderService { public void placeOrder( @NotNull @Size(min=3) String customerCode, @NotNull @Valid Item item){ ... } @NotNull @Future public Date getNextAvailableDeliveryDate(){ ... }} Globalcode  –  Open4education
  25. 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. 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. 27. Novidades para web... Globalcode  –  Open4education
  28. 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. 29. Exemplo JSON-PJsonObject 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. 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. 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. 32. Projeto Avatar !   Modelo de programação híbrido para diferentes clientes; Globalcode  –  Open4education
  33. 33. Planejamento
 !   Previsão para o lançamento: !   1o semestre de 2013; *GlassFish Server 4 Globalcode  –  Open4education
  34. 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. 35. Obrigado !eder@yaw.com.br @edermag Globalcode  –  Open4education

×