35
Globalcode – Open4education Java EE 7, na era do Cloud Computing Eder Magalhães @edermag www.yaw.com.br

JavaEE 7, na era do cloud computing

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Java EE 7, na era do Cloud Computing

Eder Magalhães @edermag

www.yaw.com.br

Page 2: JavaEE 7, na era do cloud computing

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;

Page 3: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Computação em nuvem...

Page 4: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Modelos de serviços para Cloud

Page 5: JavaEE 7, na era do cloud computing

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!

Page 6: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

A filosofia ...

A plataforma Java EE oferece serviços!

Page 7: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

A nova filosofia !

A plataforma Java EE é o serviço!

Page 8: JavaEE 7, na era do cloud computing

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

Page 9: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Modelo de implantação atual

! Mapear as configurações dos serviços utilizados;

Page 10: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Modelo de implantação atual

! Mapear as configurações dos serviços utilizados;

1 2 3 4

Page 11: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Modelo de implantação atual

! Mapear as configurações dos serviços utilizados;

1 2 3 4

5 deploy ear/war

Page 12: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Auto provisionamento

!  Configuração via serviço cloud!

1

2 deploy ear/war

Page 13: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Multi-tenancy

! Locação da mesma infra-estrutura e/ou aplicação para vários clientes.

Page 14: JavaEE 7, na era do cloud computing

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;

Page 15: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Outras melhorias...

Page 16: JavaEE 7, na era do cloud computing

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

Page 17: JavaEE 7, na era do cloud computing

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;

Page 18: JavaEE 7, na era do cloud computing

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);

Page 19: JavaEE 7, na era do cloud computing

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

Page 20: JavaEE 7, na era do cloud computing

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

Page 21: JavaEE 7, na era do cloud computing

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);

}

});

}

}

Page 22: JavaEE 7, na era do cloud computing

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());

}

} );

Page 23: JavaEE 7, na era do cloud computing

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

Page 24: JavaEE 7, na era do cloud computing

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(){ ... }

}

Page 25: JavaEE 7, na era do cloud computing

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

Page 26: JavaEE 7, na era do cloud computing

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

Page 27: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Novidades para web...

Page 28: JavaEE 7, na era do cloud computing

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

Page 29: JavaEE 7, na era do cloud computing

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();

Page 30: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Java API for Web Sockets - new

!  Define um modelo de programação para Web Sockets dentro da plataforma Java;

JSR 356

Page 31: JavaEE 7, na era do cloud computing

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);

Page 32: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Projeto Avatar

!  Modelo de programação híbrido para diferentes clientes;

Page 33: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

Planejamento

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

*GlassFish Server 4

Page 34: JavaEE 7, na era do cloud computing

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

Page 35: JavaEE 7, na era do cloud computing

Globalcode  –  Open4education

[email protected] @edermag

Obrigado !