SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
TERCEIRA SEMANA
THIAGO FORTES
FEATURES NOVAS JAVA 8
• Expressões Lambda
• Stream
O QUE SÃO EXPRESSÕES LAMBDA?
• As funções lambda utilizam técnicas de programação funcional
• É um paradigma no qual o seu ponto central se baseia na aplicação de
funções.
PRINCIPAIS VANTAGENS
• Código mais simples;
• Simplificar diversas operações em cima de uma coleção de dados;
• Possui uma sintaxe extremamente simples.
EXEMPLO EXPRESSÃO LAMBDA
STREAM
• Permite processar dados de forma declarativa.
• Permite aproveitar as arquiteturas de núcleos múltiplos sem ter que
programar linhas de código multiprocesso.
UTILIZANDO STREAM X LAMBDA
• Pode se utilizar o Stream para filtrar elementos de uma coleção de objetos
UTILIZANDO STREAM X LAMBDA
FEATURES JAVA 9
• Jshell
• Flow
O QUE É JSHELL?
• É um terminal interativo que você pode utilizar para rodar código Java sem
ter que ficar criando classes e métodos Main para executar seus
experimentos e testes de maneira rápida.
• Ótimo para testar linhas de códigos para ver se funcionam antes de
implementar em seu projeto.
EXEMPLO UTILIZANDO JSHELL
O QUE É FLOW?
• É uma API que é composta pela classe abstrata Flow e suas interfaces
internas, que seguem o padrão de publicador e assinante
• Ele vem pra resolver o famoso problema de processamentos assíncronos em
que um componente de origem envia dados sem saber ao certo se isso está
em uma quantidade maior do que aquela com a qual o consumidor pode
lidar.
EXEMPLO FLOW UTILIZANDO JSHELL
FEATURES JAVA 10
• Interferências de tipos (var)
• Alocação de heap em dispositivos de memória alternativa
INTERFERÊNCIAS DE TIPOS
• Consiste em usar a palavra "var" no lugar da declaração do tipo de atribuição
• agora podemos utilizar o var na declaração de variáveis locais, pois o Java irá
inferir este tipo “automagicamente”.
• Como por exemplo:
• hashMap<String, Integer> map = new HashMap<>();
• var map = new HashMap<String, Integer>();
ALOCAÇÃO DE HEAP EM DISPOSITIVOS DE MEMÓRIA
ALTERNATIVA
• Permite que a VM HotSpot aloque o heap de objeto Java em um dispositivo
de memória alternativo, especificado pelo usuário.
• Por exemplo:
• Esse recurso possibilita atribuir processos de prioridade maisbaixa para usar a memória
NV-DIMM e, em vez disso, alocar apenas os processos de prioridade mais alta para a
DRAM em um ambiente com várias JVMs.
FEATURES JAVA 11
• Expressão lambda
• HTTP client
EXPRESSÃO LAMBDA
• Alteração na sintaxe.
• Agora permite a inferência de tipos para variáveis locais em expressões
lambda
EXEMPLO LAMBDA
HTTP CLIENT
• No java 9 já havia dado um pequeno passo à frente em questão do http
client, então no java 11 ele ganha uma padronização e esta consolidado
para ser utilizado.
EXEMPLO HTTP CLIENT
EXEMPLO HTTP CLIENT
MICROSERVICES
• O que são?
• Modo específico de projetar softwares como conjuntos de serviços de implementação
independentes.
• Os microservices possuem muitas vantagens em relação às aplicações monolíticas, onde o
código é centralizado em um único bloco.
MONOLÍTICOS
• O que são?
• São compostos basicamente por módulos ou funcionalidades agrupadasque, juntas,
compõem o software.
• Como exemplos:
• podemos citar os sistemas ERP (Enterprise Resource Planning), como o SAP ou Protheus.
• Módulos para controle do setor financeiro, contábil, compras, entre outros, agrupados numa
única solução que acessa o banco de dados.
SOA
• O que é?
• É uma arquitetura que promove a integração do negócio com a tecnologiada
informação com componentesde serviços
• Os resultadosque SOA traz são:
• agilidade para atender as novas demandas;
• flexibilidade nas mudanças;
• redução de custo e reuso de serviços.
DIFERENÇA ENTRE MONOLÍTICOS - SOA -
MICROSERVICES
• A diferença é que o monolítico se atribui a um código extenso e sobrecarregado tudo em um
único módulo.
• Já os microserviços são subsistemas que cada um atribuí sua própria
funcionalidade
• E o SOA consiste em pequenos sistemas que necessitam da implementação
dos outros sistemas atribuidos na arquitetura do projeto
PROTOCOLO HTTP
• Hypertext Transfer Protocol - Protocolo de Transferência de Hipertexto
• É o método utilizado para enviar e receber informações na web.
• Baseado em requisições e respostas entre clientes e servidores.
MENSAGEM HTTP
• O HTTP faz a comunicação entre o cliente e o servidor por meio de
mensagens. O cliente envia uma mensagem de requisição de um recurso e o
servidor envia uma mensagem de resposta ao cliente com a solicitação.
CABEÇALHO
• O cabeçalho da mensagem é utilizado para transmitir informações adicionais
entre o cliente e o servidor. Ele é especificado imediatamente após a linha
inicial da transação (método), tanto para a requisição do cliente quanto para
a resposta do servidor, seguido de dois pontos e um valor.
• Existem quatro tipos de cabeçalhos que poderão ser incluídos na mensagem
os quais são: general-header, request-header, response-header e entity-header.
CABEÇALHO
• General-header
• Podem ser usados tanto em solicitações quanto em respostas, porém sem relação com os
dados eventualmente transmitidos no corpo da mensagem.
• Request-header
• Contém mais informaçõessobre o recurso a ser obtido ou sobre o próprio cliente.
CABEÇALHO
• Response-header
• Contém informaçõesadicional sobre a solicitação, como a sua localização ou sobre o
servidor.
• Entity-header
• Contém mais informação sobre o conteúdo da entidade, como o tamanho do conteúdo ou
o seu MIME-type.
CORPO
• Uma mensagem HTTP pode conter um corpo de dados que são enviados abaixo das
linhas de cabeçalho.
• Em uma mensagem de resposta, o corpo da mensagem é o recurso que foi
requisitado pelo cliente, ou ainda uma mensagem de erro, caso este recurso não seja
possível.
• Já em uma mensagem de requisição, o corpo pode conter dados que serão enviados
diretamente pelo usuário ou um arquivo que será enviado para o servidor.
MENSAGEM DE REQUISIÇÃO
• Uma mensagem de requisição do cliente é composta pelos seguintes campos:
uma linha inicial linhas de cabeçalhos;
• uma linha em branco obrigatória e um corpo de mensagem opcional.
• A linha inicial de uma requisição é composta por três partes separadas por
espaços:
• o método, a identificação do URI e a versão do HTTP utilizado.
MENSAGEM DE REQUISIÇÃO
MENSAGEM DE RESPOSTA
REQUEST
• GET
• solicita uma representação do recurso especificado. Solicitações usando GET só devem recuperar dados.
• POST
• Envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso
especificado.
• PUT
• O método PUT envia os dados de forma semelhante ao POST, através do corpo do HTTP a diferença
entre os 2 métodos é semântica. No caso o PUT ele pode ser utilizado para atualizações de dados.
• DELETE
• Exclui o recurso.
REQUEST
• PATCH
• Parecido com o PUT e POST mas ele é mais fácil se você quiser atualizar somente um dado de um
usuário por exemplo, ele atualiza somente um pequeno trecho.
• OPTIONS
• Recupera os métodosHTTP que o servidor aceita.
• HEAD
• Parecido com o GET ele faz uma requisição, um pedido mas ele retorna somente os cabeçalhos
• TRACE
• Ecoa o pedido, de maneira que o cliente possa saber o que os servidoresintermediários estão mudando
em seu pedido.
EXEMPLO DE UMA REQUEST
CÓDIGOS DE STATUS
• 1XX: Informativo – a solicitação foi aceita ou o processo continua em andamento;
• 2XX: Confirmação – a ação foi concluída ou entendida;
• 3XX: Redirecionamento – indica que algo mais precisa ser feito ou precisou ser feito
para completar a solicitação;
• 4XX: Erro do cliente- indica que a solicitação não pode ser concluída ou contém a
sintaxe incorreta;
• 5XX: Erro no servidor – o servidor falhou ao concluir a solicitação.
CÓDIGOS DE STATUS
• 100 continue – Essa resposta provisória indica que tudo ocorreu bem até agora e
que o cliente deve continuar com a requisição ou ignorar se já concluiu o que
gostaria.
• 200 ok – Esta requisição foi bem sucedida
• Erro 403 – Significa que o servidor entendeu a solicitação do navegador mas se
recusa a fazê-lo, pois o navegador não possui autorização para isso. Ao enviar este
erro, o servidor comunica “Você não ter permissão para acessar este servidor”.
Então o acesso foi negado.
CÓDIGOS DE STATUS
401 Unauthorized Embora o padrão HTTP especifique "unauthorized", semanticamente, essa
resposta significa "unauthenticated". Ou seja, o cliente deve se autenticar para obter a resposta
solicitada.
• Erro 404 - Quando você digita uma URL e recebe a mensagem ERROR 404 – PAGE NOT FOUND
quer dizer que esta URL não te levou a lugar nenhum. Os motivos podem ser: a página não existe
mais, a URL deste site mudou ou você digitou a URL errada.
• Erro 500 significa que algum script ou solicitação não foi compreendida – o que nem sempre
indica um problema com o servidor.
• ERRO 503 significa serviço temporariamente indisponível.
• https://www.hostinger.com.br/tutoriais/o-que-e-http-error-e-principais-codigos-http/
VERSIONAMENTO DE CONTRATO
• Controle de versão de APIs Web se deve aos contratos usados para evitar a
quebra de aplicações clientes.
• Uma forma de controle de versão é adicionar a versão para o URI:
• http://api.technocorp.clientes/v1/
VERSIONAMENTO DE CONTRATO
• Um problema quando a URI para um recurso muda é que o recurso pode não
ser mais encontrado com a URI antiga, a menos que redirecionamentos sejam
utilizados.
• Uma alternativa é adicionar a versão para o nome de domínio:
• http://v1.api.technocorp.clientes/
VERSIONAMENTO DE CONTRATO
• Outra alternativa é versionar os media types
• Esta alternativa é baseada na negociação de conteúdo e adiciona um
número de versão no media type em Accept e cabeçalhos de Content-Type:
• application/vnd.technocorp.desenvolvedores.v1+json

Mais conteúdo relacionado

Mais procurados

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)Nuno Loureiro
 
Servidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelSaveincloud
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBelliando dias
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor webMauro Duarte
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5Gilberto Holms
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringDaniel Brandão
 

Mais procurados (19)

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)
 
Servidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP Panel
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEB
 
Apostila asp
Apostila aspApostila asp
Apostila asp
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
Aula 02 30072010
Aula 02 30072010Aula 02 30072010
Aula 02 30072010
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
 
Html5 Aula 4
Html5 Aula 4Html5 Aula 4
Html5 Aula 4
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e Querystring
 
Html5 Aula 5
Html5 Aula 5Html5 Aula 5
Html5 Aula 5
 
Otimização de aplicações web
Otimização de aplicações webOtimização de aplicações web
Otimização de aplicações web
 

Semelhante a Estudos Technocorp

Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo httpCarlos Veiga
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Minicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreMinicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreBruno Roldão
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web ServicesEvaldo Junior
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
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, Vinicius Pulgatti
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 

Semelhante a Estudos Technocorp (20)

Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo http
 
365on Lab - Asp.Net MVC
365on Lab - Asp.Net MVC365on Lab - Asp.Net MVC
365on Lab - Asp.Net MVC
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Web service
Web serviceWeb service
Web service
 
Aplicações web parte 2
Aplicações web parte 2Aplicações web parte 2
Aplicações web parte 2
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Minicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreMinicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net Core
 
Aula 1
Aula 1Aula 1
Aula 1
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web Services
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
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,
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Dawi o protocolo-http
Dawi o protocolo-httpDawi o protocolo-http
Dawi o protocolo-http
 
Rest
RestRest
Rest
 

Estudos Technocorp

  • 2. FEATURES NOVAS JAVA 8 • Expressões Lambda • Stream
  • 3. O QUE SÃO EXPRESSÕES LAMBDA? • As funções lambda utilizam técnicas de programação funcional • É um paradigma no qual o seu ponto central se baseia na aplicação de funções.
  • 4. PRINCIPAIS VANTAGENS • Código mais simples; • Simplificar diversas operações em cima de uma coleção de dados; • Possui uma sintaxe extremamente simples.
  • 6. STREAM • Permite processar dados de forma declarativa. • Permite aproveitar as arquiteturas de núcleos múltiplos sem ter que programar linhas de código multiprocesso.
  • 7. UTILIZANDO STREAM X LAMBDA • Pode se utilizar o Stream para filtrar elementos de uma coleção de objetos
  • 9. FEATURES JAVA 9 • Jshell • Flow
  • 10. O QUE É JSHELL? • É um terminal interativo que você pode utilizar para rodar código Java sem ter que ficar criando classes e métodos Main para executar seus experimentos e testes de maneira rápida. • Ótimo para testar linhas de códigos para ver se funcionam antes de implementar em seu projeto.
  • 12. O QUE É FLOW? • É uma API que é composta pela classe abstrata Flow e suas interfaces internas, que seguem o padrão de publicador e assinante • Ele vem pra resolver o famoso problema de processamentos assíncronos em que um componente de origem envia dados sem saber ao certo se isso está em uma quantidade maior do que aquela com a qual o consumidor pode lidar.
  • 14. FEATURES JAVA 10 • Interferências de tipos (var) • Alocação de heap em dispositivos de memória alternativa
  • 15. INTERFERÊNCIAS DE TIPOS • Consiste em usar a palavra "var" no lugar da declaração do tipo de atribuição • agora podemos utilizar o var na declaração de variáveis locais, pois o Java irá inferir este tipo “automagicamente”. • Como por exemplo: • hashMap<String, Integer> map = new HashMap<>(); • var map = new HashMap<String, Integer>();
  • 16. ALOCAÇÃO DE HEAP EM DISPOSITIVOS DE MEMÓRIA ALTERNATIVA • Permite que a VM HotSpot aloque o heap de objeto Java em um dispositivo de memória alternativo, especificado pelo usuário. • Por exemplo: • Esse recurso possibilita atribuir processos de prioridade maisbaixa para usar a memória NV-DIMM e, em vez disso, alocar apenas os processos de prioridade mais alta para a DRAM em um ambiente com várias JVMs.
  • 17. FEATURES JAVA 11 • Expressão lambda • HTTP client
  • 18. EXPRESSÃO LAMBDA • Alteração na sintaxe. • Agora permite a inferência de tipos para variáveis locais em expressões lambda
  • 20. HTTP CLIENT • No java 9 já havia dado um pequeno passo à frente em questão do http client, então no java 11 ele ganha uma padronização e esta consolidado para ser utilizado.
  • 23. MICROSERVICES • O que são? • Modo específico de projetar softwares como conjuntos de serviços de implementação independentes. • Os microservices possuem muitas vantagens em relação às aplicações monolíticas, onde o código é centralizado em um único bloco.
  • 24. MONOLÍTICOS • O que são? • São compostos basicamente por módulos ou funcionalidades agrupadasque, juntas, compõem o software. • Como exemplos: • podemos citar os sistemas ERP (Enterprise Resource Planning), como o SAP ou Protheus. • Módulos para controle do setor financeiro, contábil, compras, entre outros, agrupados numa única solução que acessa o banco de dados.
  • 25. SOA • O que é? • É uma arquitetura que promove a integração do negócio com a tecnologiada informação com componentesde serviços • Os resultadosque SOA traz são: • agilidade para atender as novas demandas; • flexibilidade nas mudanças; • redução de custo e reuso de serviços.
  • 26. DIFERENÇA ENTRE MONOLÍTICOS - SOA - MICROSERVICES • A diferença é que o monolítico se atribui a um código extenso e sobrecarregado tudo em um único módulo. • Já os microserviços são subsistemas que cada um atribuí sua própria funcionalidade • E o SOA consiste em pequenos sistemas que necessitam da implementação dos outros sistemas atribuidos na arquitetura do projeto
  • 27. PROTOCOLO HTTP • Hypertext Transfer Protocol - Protocolo de Transferência de Hipertexto • É o método utilizado para enviar e receber informações na web. • Baseado em requisições e respostas entre clientes e servidores.
  • 28. MENSAGEM HTTP • O HTTP faz a comunicação entre o cliente e o servidor por meio de mensagens. O cliente envia uma mensagem de requisição de um recurso e o servidor envia uma mensagem de resposta ao cliente com a solicitação.
  • 29. CABEÇALHO • O cabeçalho da mensagem é utilizado para transmitir informações adicionais entre o cliente e o servidor. Ele é especificado imediatamente após a linha inicial da transação (método), tanto para a requisição do cliente quanto para a resposta do servidor, seguido de dois pontos e um valor. • Existem quatro tipos de cabeçalhos que poderão ser incluídos na mensagem os quais são: general-header, request-header, response-header e entity-header.
  • 30. CABEÇALHO • General-header • Podem ser usados tanto em solicitações quanto em respostas, porém sem relação com os dados eventualmente transmitidos no corpo da mensagem. • Request-header • Contém mais informaçõessobre o recurso a ser obtido ou sobre o próprio cliente.
  • 31. CABEÇALHO • Response-header • Contém informaçõesadicional sobre a solicitação, como a sua localização ou sobre o servidor. • Entity-header • Contém mais informação sobre o conteúdo da entidade, como o tamanho do conteúdo ou o seu MIME-type.
  • 32. CORPO • Uma mensagem HTTP pode conter um corpo de dados que são enviados abaixo das linhas de cabeçalho. • Em uma mensagem de resposta, o corpo da mensagem é o recurso que foi requisitado pelo cliente, ou ainda uma mensagem de erro, caso este recurso não seja possível. • Já em uma mensagem de requisição, o corpo pode conter dados que serão enviados diretamente pelo usuário ou um arquivo que será enviado para o servidor.
  • 33. MENSAGEM DE REQUISIÇÃO • Uma mensagem de requisição do cliente é composta pelos seguintes campos: uma linha inicial linhas de cabeçalhos; • uma linha em branco obrigatória e um corpo de mensagem opcional. • A linha inicial de uma requisição é composta por três partes separadas por espaços: • o método, a identificação do URI e a versão do HTTP utilizado.
  • 36. REQUEST • GET • solicita uma representação do recurso especificado. Solicitações usando GET só devem recuperar dados. • POST • Envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado. • PUT • O método PUT envia os dados de forma semelhante ao POST, através do corpo do HTTP a diferença entre os 2 métodos é semântica. No caso o PUT ele pode ser utilizado para atualizações de dados. • DELETE • Exclui o recurso.
  • 37. REQUEST • PATCH • Parecido com o PUT e POST mas ele é mais fácil se você quiser atualizar somente um dado de um usuário por exemplo, ele atualiza somente um pequeno trecho. • OPTIONS • Recupera os métodosHTTP que o servidor aceita. • HEAD • Parecido com o GET ele faz uma requisição, um pedido mas ele retorna somente os cabeçalhos • TRACE • Ecoa o pedido, de maneira que o cliente possa saber o que os servidoresintermediários estão mudando em seu pedido.
  • 38. EXEMPLO DE UMA REQUEST
  • 39. CÓDIGOS DE STATUS • 1XX: Informativo – a solicitação foi aceita ou o processo continua em andamento; • 2XX: Confirmação – a ação foi concluída ou entendida; • 3XX: Redirecionamento – indica que algo mais precisa ser feito ou precisou ser feito para completar a solicitação; • 4XX: Erro do cliente- indica que a solicitação não pode ser concluída ou contém a sintaxe incorreta; • 5XX: Erro no servidor – o servidor falhou ao concluir a solicitação.
  • 40. CÓDIGOS DE STATUS • 100 continue – Essa resposta provisória indica que tudo ocorreu bem até agora e que o cliente deve continuar com a requisição ou ignorar se já concluiu o que gostaria. • 200 ok – Esta requisição foi bem sucedida • Erro 403 – Significa que o servidor entendeu a solicitação do navegador mas se recusa a fazê-lo, pois o navegador não possui autorização para isso. Ao enviar este erro, o servidor comunica “Você não ter permissão para acessar este servidor”. Então o acesso foi negado.
  • 41. CÓDIGOS DE STATUS 401 Unauthorized Embora o padrão HTTP especifique "unauthorized", semanticamente, essa resposta significa "unauthenticated". Ou seja, o cliente deve se autenticar para obter a resposta solicitada. • Erro 404 - Quando você digita uma URL e recebe a mensagem ERROR 404 – PAGE NOT FOUND quer dizer que esta URL não te levou a lugar nenhum. Os motivos podem ser: a página não existe mais, a URL deste site mudou ou você digitou a URL errada. • Erro 500 significa que algum script ou solicitação não foi compreendida – o que nem sempre indica um problema com o servidor. • ERRO 503 significa serviço temporariamente indisponível. • https://www.hostinger.com.br/tutoriais/o-que-e-http-error-e-principais-codigos-http/
  • 42. VERSIONAMENTO DE CONTRATO • Controle de versão de APIs Web se deve aos contratos usados para evitar a quebra de aplicações clientes. • Uma forma de controle de versão é adicionar a versão para o URI: • http://api.technocorp.clientes/v1/
  • 43. VERSIONAMENTO DE CONTRATO • Um problema quando a URI para um recurso muda é que o recurso pode não ser mais encontrado com a URI antiga, a menos que redirecionamentos sejam utilizados. • Uma alternativa é adicionar a versão para o nome de domínio: • http://v1.api.technocorp.clientes/
  • 44. VERSIONAMENTO DE CONTRATO • Outra alternativa é versionar os media types • Esta alternativa é baseada na negociação de conteúdo e adiciona um número de versão no media type em Accept e cabeçalhos de Content-Type: • application/vnd.technocorp.desenvolvedores.v1+json