SlideShare uma empresa Scribd logo
Como aproveitar os novos
recursos do Java EE 7
Denis Tiago | @denistiago
Rodrigo Santos | @rodimes
● Websockets
○ Rapida introdução
○ Demo
○ Api
● Batch Api na prática
● Bean validation 1.1
Agenda
Web Sockets
● O que é?
○ Protocol RFC 6455
○ Bidirection communication channel
○ Over TCP
○ Provides Server push
Web Sockets
● Como funciona?
Client Request
GET /endpoint HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Origin: http://example.com
Server Response
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Web Sockets
● Como funciona?
Web Sockets
● Por que não usar long pooling ou comet?
○ Http overhead (kb not bytes)
○ Http não foi feito para isso
○ Real time???
Web Sockets
● Blz!! mas e o suporte nos browsers???
fonte: www.caniuse.com
● Fallback?
○ Atmosphere
○ Socket.io
○ ServerEndpointConfig.Builder.create
(ProgrammaticEndpoint.class, "/uri").build();
Web Sockets
Web Sockets
DEMO
Web Sockets
● Hello world api
import javax.websocket.*;
@ServerEndpoint("/hello")
public class HelloBean {
@OnMessage
public String onMessage(String name) {
return “Hello “ + name;
}
}
● Endpoint
@ServerEndpoint(
value="/subscribers/{user-id}",
encoders={JsonEndoder.class},
decoders={JsonEndoder.class},
configurator = {EndpointConfigurator.class}
)
public class SubscriberEndpoint {
...
}
Web Sockets
Web Sockets
● Lifecycle
@OnOpen
public void onOpen(Session session);
@OnCLose
public void onClose(Session session, CloseReason closeReason);
@OnError
public void onError(Session session, Throwable thr);
@OnMessage
public void onMessage(Session session, String data);
Web Sockets
● Session
session.addMessageHandler(new MessageHandler(){....});
session.isOpen();
session.getAsyncRemote().sendText("");
session.close(CloseReason.CloseCodes.CANNOT_ACCEPT);
Web Sockets
● Client
@ClientEndpoint(
value="/subscribers/{user-id}"
)
public class SubscriberEndpoint {
....
}
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(SubscriberEndpoint.class,URI.create("ws://localhost"));
Web sockets
● E segurança??
Web sockets
● Containers
Glassfish 4.0 (tyrus)
Jboss 8.0.0.Alpha1
Batch API
● Introdução a JSR 352
● Conceitos
● Projetando um Job de Download de
Imagens
○ Batchlet
○ Chunk
Batch API Introdução JSR 352
● O que é?
○ Processamento batch.
■ Possui muitas caracteristicas em comun
■ Atividade da maioria das aplicações corporativas
● Porque ?
○ Padronização de uma idéia boa.
Batch API Conceitos
Batch API Fluxo do Download Imagens
Batch API JSL - Job Specification Language
● Configuração dos Jobs
○ Arquivos xml em:
META-INF/batch-jobs
WEB-INF/classes/META-INF/batch-jobs
Batch API JSL - Job Specification Language
:
Batch API
:
Batch API Batchlet
● Simples, permite maior liberdade de implementação
● Executado apenas uma vez, orientado a tarefa
● Caracteristicas uteis para o mundo real
○ Cópia de arquivos.
○ Enviar emails , gerar um relatório.
○ Disparar querys de update em massa.
Mudanças Bean validations 1.1
● Dependency Injection and CDI integration
public class ZipCodeValidator implements ConstraintValidator<ZipCode, String> {
@Inject
private ZipCodeChecker checker;
public void initialize(ZipCode zipCode) {}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value==null) return true;
return checker.isZipCodeValid(value);
}
}
Mudanças Bean validations 1.1
● Group Conversion
public class Place {
@Valid
@ConvertGroup.List( {
@ConvertGroup(from=Default.class,
to=Complete.class),
} )
Address address;
}
public class User {
@Valid
Address address;
}
public class Address {
....
@NotNull(groups =Complete.class)
private Double lat;
@NotNull(groups = Complete.class )
private Double long;
}
Mudanças Bean validations 1.1
● Message interpolation via the unified
expression language
@DecimalMax(inclusive = true, value = "10.5")
private BigDecimal score;
javax.validation.constraints.DecimalMax.message=
must be less than ${inclusive == true ? 'or equal to ' : ''}{value}
Mudanças Bean validations 1.1
● Method Validation
public class UserService {
public User findUserById(@NotNull Long id) {
....
}
public @NotNull List<User> findAll() {
....
}
}
Mudanças Bean validations 1.1
● Method Validation
○ Pros
■ Design by Contract
■ Validações declarativas
○ Cons
■ Depende de um provedor de interceptors
■ Herança de validações ainda não funciona muito
bem
Fim
● Perguntas?
Estamos contratando. 100% home office!!!
recrutamento@tecsinapse.com.br
handson.tecsinapse.com.br

Mais conteúdo relacionado

PPTX
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
PPTX
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
PPTX
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
PPTX
Docker para Desenvolvedores - Developers-BR - Agosto-2018
PPTX
Docker para Desenvolvedores - Developers-BR - Julho-2018
PDF
Introdução ao Flyway
PPTX
TDC2016POA | Trilha .NET - O que esperar do C# 7
PPTX
gRPC: Por que você ainda usa REST?
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
Introdução ao Flyway
TDC2016POA | Trilha .NET - O que esperar do C# 7
gRPC: Por que você ainda usa REST?

Mais procurados (20)

PDF
Liferay com React - Boas práticas
PDF
Source-to-container no mundo real
PPT
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
PPTX
Debug de cabo a rabo
PPTX
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
PPTX
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
PDF
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
PPTX
Node JS - Parte 1
PPTX
Clojure: do zero ao deploy de uma API REST
PDF
Jenkins por dentro e por fora
PDF
7Masters - Devops - Do legado ao ci cd em 7 minutos
PDF
12 Factor App TDC São Paulo 2018
PPTX
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
PPTX
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
PPTX
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
PPTX
GitHub Boas Práticas
 
PPTX
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
PPTX
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
PPTX
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
PPTX
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Liferay com React - Boas práticas
Source-to-container no mundo real
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Debug de cabo a rabo
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
Node JS - Parte 1
Clojure: do zero ao deploy de uma API REST
Jenkins por dentro e por fora
7Masters - Devops - Do legado ao ci cd em 7 minutos
12 Factor App TDC São Paulo 2018
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
GitHub Boas Práticas
 
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Anúncio

Semelhante a Apresentação tdc como aproveitar os novos recursos do java ee 7 (20)

PDF
GUJavaSC - Java EE 7 In Action
PDF
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
PDF
Construindo APIs RESTful com Spring
PDF
APIs gerenciadas de ponta a ponta
PDF
APIs gerenciadas de ponta a ponta
PDF
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
ODP
Servlets e JSP
PDF
Novidades de Java EE 7
PDF
QCon 2015 - Combinando AngularJS com Java EE
PDF
JSP com tags padrão
PDF
GUJavaSC - Combinando AngularJS com Java EE
PDF
Webinar de Final de Ano WSO2: Novidades e Atualizações em nossa plataforma
PDF
TDC2016SP - Construindo Web APIs em Java na era do Big Data
PDF
10 Atributos de uma API de Sucesso
PPT
Web Services - Grupo F
PPT
PDF
PyData - Consumindo e publicando web APIs com Python
PDF
Campus Party 2015: Os 10 Atributos de uma API de Sucesso
PDF
Curso de WebServlets (Java EE 7)
PDF
Design de APIs RESTful Seguras e Escaláveis
GUJavaSC - Java EE 7 In Action
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Construindo APIs RESTful com Spring
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
Servlets e JSP
Novidades de Java EE 7
QCon 2015 - Combinando AngularJS com Java EE
JSP com tags padrão
GUJavaSC - Combinando AngularJS com Java EE
Webinar de Final de Ano WSO2: Novidades e Atualizações em nossa plataforma
TDC2016SP - Construindo Web APIs em Java na era do Big Data
10 Atributos de uma API de Sucesso
Web Services - Grupo F
PyData - Consumindo e publicando web APIs com Python
Campus Party 2015: Os 10 Atributos de uma API de Sucesso
Curso de WebServlets (Java EE 7)
Design de APIs RESTful Seguras e Escaláveis
Anúncio

Último (19)

PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula 18 - Manipulacao De Arquivos python
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
COBITxITIL-Entenda as diferença em uso governança TI
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula04-Academia Heri- Tecnologia Geral 2025
Apple Pippin Uma breve introdução. - David Glotz
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx

Apresentação tdc como aproveitar os novos recursos do java ee 7

  • 1. Como aproveitar os novos recursos do Java EE 7 Denis Tiago | @denistiago Rodrigo Santos | @rodimes
  • 2. ● Websockets ○ Rapida introdução ○ Demo ○ Api ● Batch Api na prática ● Bean validation 1.1 Agenda
  • 3. Web Sockets ● O que é? ○ Protocol RFC 6455 ○ Bidirection communication channel ○ Over TCP ○ Provides Server push
  • 4. Web Sockets ● Como funciona? Client Request GET /endpoint HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Origin: http://example.com Server Response HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade
  • 6. Web Sockets ● Por que não usar long pooling ou comet? ○ Http overhead (kb not bytes) ○ Http não foi feito para isso ○ Real time???
  • 7. Web Sockets ● Blz!! mas e o suporte nos browsers??? fonte: www.caniuse.com
  • 8. ● Fallback? ○ Atmosphere ○ Socket.io ○ ServerEndpointConfig.Builder.create (ProgrammaticEndpoint.class, "/uri").build(); Web Sockets
  • 10. Web Sockets ● Hello world api import javax.websocket.*; @ServerEndpoint("/hello") public class HelloBean { @OnMessage public String onMessage(String name) { return “Hello “ + name; } }
  • 12. Web Sockets ● Lifecycle @OnOpen public void onOpen(Session session); @OnCLose public void onClose(Session session, CloseReason closeReason); @OnError public void onError(Session session, Throwable thr); @OnMessage public void onMessage(Session session, String data);
  • 13. Web Sockets ● Session session.addMessageHandler(new MessageHandler(){....}); session.isOpen(); session.getAsyncRemote().sendText(""); session.close(CloseReason.CloseCodes.CANNOT_ACCEPT);
  • 14. Web Sockets ● Client @ClientEndpoint( value="/subscribers/{user-id}" ) public class SubscriberEndpoint { .... } WebSocketContainer container = ContainerProvider.getWebSocketContainer(); container.connectToServer(SubscriberEndpoint.class,URI.create("ws://localhost"));
  • 15. Web sockets ● E segurança??
  • 16. Web sockets ● Containers Glassfish 4.0 (tyrus) Jboss 8.0.0.Alpha1
  • 17. Batch API ● Introdução a JSR 352 ● Conceitos ● Projetando um Job de Download de Imagens ○ Batchlet ○ Chunk
  • 18. Batch API Introdução JSR 352 ● O que é? ○ Processamento batch. ■ Possui muitas caracteristicas em comun ■ Atividade da maioria das aplicações corporativas ● Porque ? ○ Padronização de uma idéia boa.
  • 20. Batch API Fluxo do Download Imagens
  • 21. Batch API JSL - Job Specification Language ● Configuração dos Jobs ○ Arquivos xml em: META-INF/batch-jobs WEB-INF/classes/META-INF/batch-jobs
  • 22. Batch API JSL - Job Specification Language :
  • 24. Batch API Batchlet ● Simples, permite maior liberdade de implementação ● Executado apenas uma vez, orientado a tarefa ● Caracteristicas uteis para o mundo real ○ Cópia de arquivos. ○ Enviar emails , gerar um relatório. ○ Disparar querys de update em massa.
  • 25. Mudanças Bean validations 1.1 ● Dependency Injection and CDI integration public class ZipCodeValidator implements ConstraintValidator<ZipCode, String> { @Inject private ZipCodeChecker checker; public void initialize(ZipCode zipCode) {} @Override public boolean isValid(String value, ConstraintValidatorContext context) { if (value==null) return true; return checker.isZipCodeValid(value); } }
  • 26. Mudanças Bean validations 1.1 ● Group Conversion public class Place { @Valid @ConvertGroup.List( { @ConvertGroup(from=Default.class, to=Complete.class), } ) Address address; } public class User { @Valid Address address; } public class Address { .... @NotNull(groups =Complete.class) private Double lat; @NotNull(groups = Complete.class ) private Double long; }
  • 27. Mudanças Bean validations 1.1 ● Message interpolation via the unified expression language @DecimalMax(inclusive = true, value = "10.5") private BigDecimal score; javax.validation.constraints.DecimalMax.message= must be less than ${inclusive == true ? 'or equal to ' : ''}{value}
  • 28. Mudanças Bean validations 1.1 ● Method Validation public class UserService { public User findUserById(@NotNull Long id) { .... } public @NotNull List<User> findAll() { .... } }
  • 29. Mudanças Bean validations 1.1 ● Method Validation ○ Pros ■ Design by Contract ■ Validações declarativas ○ Cons ■ Depende de um provedor de interceptors ■ Herança de validações ainda não funciona muito bem
  • 30. Fim ● Perguntas? Estamos contratando. 100% home office!!! recrutamento@tecsinapse.com.br handson.tecsinapse.com.br