Download - JavaEE 7, na era do cloud computing
![Page 1: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/3.jpg)
Globalcode – Open4education
Computação em nuvem...
![Page 4: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/4.jpg)
Globalcode – Open4education
Modelos de serviços para Cloud
![Page 5: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/6.jpg)
Globalcode – Open4education
A filosofia ...
A plataforma Java EE oferece serviços!
![Page 7: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/7.jpg)
Globalcode – Open4education
A nova filosofia !
A plataforma Java EE é o serviço!
![Page 8: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/9.jpg)
Globalcode – Open4education
Modelo de implantação atual
! Mapear as configurações dos serviços utilizados;
![Page 10: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/12.jpg)
Globalcode – Open4education
Auto provisionamento
! Configuração via serviço cloud!
1
2 deploy ear/war
![Page 13: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/15.jpg)
Globalcode – Open4education
Outras melhorias...
![Page 16: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/27.jpg)
Globalcode – Open4education
Novidades para web...
![Page 28: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/32.jpg)
Globalcode – Open4education
Projeto Avatar
! Modelo de programação híbrido para diferentes clientes;
![Page 33: JavaEE 7, na era do cloud computing](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052622/558e48b41a28ab67518b4689/html5/thumbnails/34.jpg)
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