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

Estudos Technocorp

  • 1.
  • 2.
    FEATURES NOVAS JAVA8 • Expressões Lambda • Stream
  • 3.
    O QUE SÃOEXPRESSÕ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ódigomais simples; • Simplificar diversas operações em cima de uma coleção de dados; • Possui uma sintaxe extremamente simples.
  • 5.
  • 6.
    STREAM • Permite processardados de forma declarativa. • Permite aproveitar as arquiteturas de núcleos múltiplos sem ter que programar linhas de código multiprocesso.
  • 7.
    UTILIZANDO STREAM XLAMBDA • Pode se utilizar o Stream para filtrar elementos de uma coleção de objetos
  • 8.
  • 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.
  • 11.
  • 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.
  • 13.
  • 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 HEAPEM 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çãona sintaxe. • Agora permite a inferência de tipos para variáveis locais em expressões lambda
  • 19.
  • 20.
    HTTP CLIENT • Nojava 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.
  • 21.
  • 22.
  • 23.
    MICROSERVICES • O quesã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 quesã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 • HypertextTransfer 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 • OHTTP 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çalhoda 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 • Podemser 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éminformaçõ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 mensagemHTTP 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.
  • 34.
  • 35.
  • 36.
    REQUEST • GET • solicitauma 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 • Parecidocom 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.
  • 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 401Unauthorized 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