SlideShare uma empresa Scribd logo
1 de 59
Giovane Garcia
2ª semana
Java 8
18/03/2014
Java 8 - Interface
● Adicionados métodos default e static nas interfaces, até então, interfaces
não podiam ter métodos com ação (código) no seu corpo.
● Static não podem ser sobrescritos e são acessados pelo nome da interface.
● Default podem ser acessados por instâncias de classes que implementam a
interface e podem ser sobrescritos.
● Default foram adicionados para incluir métodos em interfaces sem quebrar
suas implementações
● Optional
Java 8 - Interface
Java 8 - Expressões lambda
● Expressões lambda são expressões que lembram o paradigma funcional,
onde temos funções que fazem o nosso processamento, facilitam a
legibilidade do código
● Podem ser aplicadas em tudo que for uma interface funcional, ou seja,
aquelas que possuem apenas um método, assim como a Runnable, que tem
apenas o método run
● Ao fazer um foreach do Java8, também podemos fazer uso de lambdas
para alguma ação relacionada ao objeto
● Method reference
Java 8 - Expressões lambda
Java 8 - Stream API
● Interface criada para suportar novas operações em Listas usando técnicas
de programação funcional
● Coleta todos os dados da lista para trabalhar de forma mais dinâmica e
fluída
● É recheada de métodos como filter, map, collect, count, ifpresent
● É possível fazer fazer várias operações como cálculos, coletar dados, filtrar
os dados que tu precisa, fazer sort. Tudo de maneira mais fluída
● Alguns métodos retornam Optional para evitar null pointer
Java 8 - Stream API
Java 9
21/09/2019
Java 9 - Private interface methods
● Métodos de interfaces que tem corpo (comportamento) e que são privados
a interface
● Muito usados quando a interface tem métodos que precisam compartilhar
algum recurso ou fazem coisas iguais
● É criado então um método privado e todos os outros chamam esse método
quando necessário
Java 9 - Private interface methods
Java 9 - Immutable set
● Java 9 nos trás também a possibilidade de criar um Set imutável com o uso
de set.of()
● Ao tentar remover ou adicionar valores após a criação, é lançada uma
UnsupportedOperationException
● É permitido alterar os valores dentro de um objeto já guardado no set
● Valores nulos não podem ser adicionados
Java 9 - Immutable set
Java 10
03/2018
Java 10 - inferência de tipos
● Foi adicionada a inferência de tipos, assim com é utilizado no JavaScript
● Para tal, devemos usar a palavra var. Exemplo, var test = List.of("one test", "two tests", "three
tests");
● Podemos receber um objeto ou métodos nessa variável
● Só pode ser usada para variáveis locais com inicializadores
● Devemos usar com cautela pois pode ficar difícil de ler ao termos muitas
variáveis assim
● Podemos usar para receber retorno de métodos mas não como tipo de
método e nem como parâmetros
Java 10 - inferência de tipos
Java 10 - orElseThrow() method
● Adicionado o método orElsethrow() à classe Optional
● Permite lançar exception direto na utilização do método
● Mais um método para puxar um pouco de programação funcional
Java 10 - orElseThrow() method
Java 11
25/09/2018
Java 11 - padronização http
● Novo pacote java.net lançado
● Padroniza o cliente http para fazer requests que suporta requisições
síncronas e assíncronas
● Temos request, bodyPublisher para requisições que tem um corpo,
response para gerenciar respostas, interface funcional bodyhandler
● Utiliza o pattern builder na criação de clientes e requests
● Permite realizar as operações com suporte a novas features como http 2
sem precisar de dependências
Java 11 - padronização http GET
Java 11 - padronização http POST
Java 11 - var como parâmetros em lambda
● Agora é possível usar variáveis var como parâmetros em expressões
lambda, mas com algumas proibições
● Não podemos usar um var para vários parâmetros na mesma expressão
● Não podemos misturar var com tipos explícitos
Java 11 - var como parâmetros em lambda
HTTP
Http - conceito
● HyperText transfer protocol
● Responsável pelo transporte dos dados, sejam eles frutos de requisições ou
respostas
● Desenvolvido para comunicação entre servidores web e navegadores web
● É stateless, não mantém dados
● Normalmente é usado com tcp/ip mas pode ser usado com qualquer
camada de transporte, como udp
Http - funcionamento
● É baseado em requisição e resposta
● Alguém faz uma requisição de alguma informação e outro alguém responde
com outra informação
● A isso damos o nome de request e response, respectivamente
● Como atores dessa comunicação temos o cliente, o servidor e o proxy
● Cliente (user-agent)
○ É quem faz solicitação, pode ser um navegador, uma máquina conectada a internet, o
software de atualização de um celular e por aí vai
Http - funcionamento
● Servidor
○ É quem responde a essas solicitações quando necessário
● Proxy
○ É o representante da conexão quando necessário e configurado
○ Ele é quem recebe e requisição e acaba transmitindo a quem realmente precisa receber
aquele requisição
○ Esse roteamento acontece muito quando trabalhamos com balanceamento de carga
utilizando proxy
● Toda essa troca é feita por uma “conversa” entre as parte, essa conversa é
dividida em duas partes básicas, cabeçalho e corpo
Http - Cabeçalho (header)
● O cabeçalho é um conjunto de informações adicionais à requisição
● Podem especificar que tipo de dado é aceito ou que é enviado, especificar o
tipo de caracteres e muito mais
● É composto por nome e valor (parecido com o map que é chave e valor)
○ O nome é case-insensitive seguido de : (dois pontos) e seu valor, sem quebra de linhas
○ Podemos usar nomes personalizados e outros padronizados
○ Personalizados são usados com um X- antes do nome, mas isso está depreciado por
causar alguns problemas
● Aqui podemos encontrar a maioria dos message headers que existem, fora
os personalizados
Http - Cabeçalho (header)
● Os message Headers mais comumente vistos são
○ Accept que dizem qual é o tipo de documento que aceitamos, em qual idioma, qual a
codificação de caracteres
○ Authentication para informar login e senha, quando necessários
○ Content-type para informar que tipo de conteúdo estamos enviando e que tipo estamos
recebendo e ainda outros tipos de content que indicam várias coisas referentes ao
conteúdo
○ User-agent
○ Date
○ Keep-alive que indica a quantidade mínima e máxima de tempo que uma conexão deve ficar
aberta
Http - Cabeçalho (header)
● Quando se trata de documentos, normalmente transmitimos json, xml ou
html
● Junto a esses cabeçalhos, temos alguns itens que já vem com o protocolo,
que são o status code que serve para nos dizer o que acontece
● Dentro desse header podemos fazer operações, por exemplo, um if para
aceitar um conteúdo apenas se preencher um requisito, redirecionar para
outro endpoint e outras mais
Http - Status code
● Uma das informações mais importantes da requisição e resposta é status
code, ele nos dá um norte do que está acontecendo
● São armazenados em cinco famílias
○ Respostas de informação - 1xx
○ Respostas de sucesso - 2xx
○ Redirecionamentos - 3xx
○ Erros do cliente - 4xx
○ Erros do servidor - 5xx
Http - Status code - 1xx
● 100 - Continue
○ Mostra que “até agora” está tudo certo e o usuário pode continuar ou encerrar a operação,
caso já tenha o que precisa
■ Perguntar se o srv está disponível, por exemplo
● 101 - Switching protocol
○ Indica a qual protocolo o srv está alternando
● 102 - Processing
○ Indica que srv recebeu a solicitação mas não tem nenhuma resposta no momento
Http - Status code - 2xx
● 200 - OK
○ indica que deu tudo certo, “tudo certo” varia de método para método
● 201 - Created
○ indica que o recurso foi criado, normalmente usado em POST
● 202 - Accepted
○ Indica que a solicitação foi aceita, mas nada foi feito com ela. Pode ser que outro srv vá
tomar alguma ação ou algo assim
● 204 - No Content
○ Não há conteúdo para essa solicitação, muito utilizada para atualizar os cabeçalhos
Http - Status code - 3xx
● 300 - Multiple Choices
○ Há mais de uma resposta para a requisição, o user deve escolher qual, mas não há uma
maneira padrão.
■ Solicitar em formato específico, por exemplo
● 301 - Moved Permanently
○ A URI responsável foi movida, provavelmente será enviada a nova URI no cabeçalho
● 304 - Not Modified
○ Diz que o recurso não foi modificado, então pode ser usado o que está no cache
Http - Status code - 4xx
● 400 - Bad Request
○ Diz que o srv não entendeu a requisição devido a uma sintaxe inválida
● 401 - Unauthorized
○ Significa que o usuário precisa se autenticar para acessar o recurso
● 402 - Payment Required
○ Não é usado atualmente, o intuito era usar em sistemas de pagamento
● 403 - Forbidden
○ Usuário não tem permissão para acessar, mas aqui ele já é conhecido
● 404 - Not Found
○ Muito comum, o recurso solicitado não foi encontrado
Http - Status code - 4xx
● 405 - Method Not Allowed
○ O método da nossa requisição não é permitido para aquele recurso
■ Enviar um POST para um endpoint que só atende GET, por exemplo
● 415 - Unsupported Media Type
○ O tipo de mídia não é suportado pelo servidor
● 451 - Unavailable For Legal Reasons
○ Informado quando um recurso ilegal tem tentativa de acesso
■ Acessar uma página censurada, por exemplo
Http - Status code - 5xx
● 500 - Internal Server Error
○ Ocorreu uma situação com a qual o srv não sabe lidar
● 502 - Bad Gateway
○ Diz que o srv está atuando como uma ponte e que o srv que realmente atendeu a demanda
enviou uma resposta que a “ponte” não entende
● 503 - Service Unavailable
○ O srv não está pronto para atender
■ Pode ser que está em manutenção, por exemplo
● 504 - Gateway Timeout
○ Diz que o srv “ponte” não obteve resposta a tempo
Http - Todos os status
● Clique aqui para acessar a lista com todos os Status Code
Http - Methods
● O protocolo especifica alguns métodos para realizar as requisições
● São eles
○ GET
■ Solicita a representação do recurso solicitado passando parâmetros na URL
○ HEAD
■ Idêntico ao GET, porém a resposta não contém corpo, muito usado para atualizar
headers
○ POST
■ É utilizado para criar, enviar, submeter algum dado ao srv ou recurso, pode ou não
receber corpo na resposta
Http - Methods
● PUT
○ É usado para fazer um update de algo com o corpo da requisição, editar um usuário, por
exemplo
● DELETE
○ Como o nome diz, é usado para deletar, apagar, arquivos, dados ou qualquer coisa que
possa ser apagada, pode ter corpo ou não na resposta
● CONNECT
○ É usado para conectar o srv, não tem corpo na resposta e nem na requisição
● OPTIONS
○ É usado para saber o que o srv suporta, quais métodos e outras opções, podemos
especificar a url ou colocar um * para fazer referência ao srv todo
Http - Methods
● TRACE
○ Realiza um loop-back no caminho para saber se está tudo correto, muito utilizado para
debug, não tem corpo
● PATCH
○ Usado para fazer modificações parciais para um recurso, tem corpo na requisição e
resposta, alterar apenas o nome de um usuário
Http - modelo
● Requisição ● Resposta
Http2
● Surgido em 2015, apareceu para melhorar a performance e segurança dos
dados
● Não muda a semântica nem os métodos da versão 1
● É obrigatório o uso de certificados SSL, não por imposição da versão 2 ,
mas sim pelos browser que relataram suportar apenas o uso de TLS
● Habilita também, de forma automática a compressão dos dados com gzip e
dos metadados com hpack, diminuindo tamanho da transferência e
proporcionando mais velocidade
Http2
● Também faz uso de paralelismo nas requisições e respostas
● É possível priorizar recursos na ordem de solicitação
SOA x Microservices
SOA
● Soa trata de quebrar “negócio” inteiro de acordo com suas áreas
● Ter um serviço responsável pelo financeiro, outro pelo administrativo, outro
pelo comercial e por aí vai
● Fazer com que esses serviços possam se comunicar e comunicar-se
também com um repositório central de serviços
● Esse repositório será responsável por listar quais serviços estão disponíveis
para uso e quais não
● Proporciona uma integração muito grande de sistemas a medida que todos
eles podem se conversar agora
SOA
● Essa integração beneficia muito as áreas, devido a comunicação direta,
eliminando intermediários e fazendo com que os custos sejam reduzidos e
que as informações sejam mais transparentes
● Normalmente é feito em serviços que são compartilhados por toda a
organização ou por grande parte dela, como emissão de NFs, por exemplo
● Em SOA temos um registro, cliente e um provedor de serviços
● Registro é onde vão estar listados todos os serviços disponíveis, onde os
clientes vão buscar o serviço desejado
SOA
● Cliente é quem consome o serviço
● Provedor é onde vai estar disponível aquele serviço, o registro informa onde
o serviço está, que é no provedor
● Diminui o acoplamento de aplicação, fazendo a comunicação baseada em
solicitação e resposta
● Possibilita o reuso de código, uma vez que uma lógica de negócio pode ser
alterada para utilizar um ou mais serviços
● Temos em soa também um barramento de serviços, onde novas
ferramentas possam fazer uso desse barramento
SOA
● Esse barramento representa é interface de comunicação entre provedores e
consumidores
● Podemos ter aplicações desenvolvidas em qualquer linguagem, uma vez
que as aplicações irão adotar um padrão de comunicação que pode ser
Soap, ActiveMQ ou Apache Thrift
● O barramento principal de serviços é guardado em um srv, se ele falhar,
todos os serviços que fazem parte desse barramento ficam fora
SOA
● A performance é um ponto delicado, em empresas muito grandes pode não
ser viável, pois apesar da divisão em serviços, o barramento pode ficar
muito complexo
● Porém, é meio que sair de uma estrutura monolítica para usar outra, quando
criado o ESB
● O banco de dados pode ser compartilhado por vários serviços da aplicação
Microsserviços
Microsserviços
● De certa forma, são parecidos com SOA, uma vez que buscam dividir uma
aplicação em várias aplicações
● Mas diferente de SOA, não há um barramento, ou, pelo menos, não tão
grande, a ponto de se tornar o “monolitão”
● Cada função de uma aplicação se torna um serviço, exemplo do youtube
○ A caixa de pesquisa é um serviço, o botão de curtir é outro serviço e assim vai por cada
função da aplicação
● Cada serviço pode usar uma linguagem diferente, desde que usem um
protocolo padrão para se comunicar
Microsserviços
● Assim como na linguagem, cada aplicação pode usar um banco de dados
diferente
● Podemos ter várias instâncias do mesmo serviço para balancear a carga
● Podemos atualizar um serviço sem que isso atrapalhe o funcionamento da
aplicação “maior”
● E no caso da queda de um serviço, o resto da aplicação funciona
● O banco de dados é único para cada microsserviço
Versionamento de
contrato
O que é o “contrato”?
● É a API em si
● Nela é que estão as “regras” do contrato, quais os pontos que podemos
acessar, o que podemos fazer nessa API
● E as vezes precisamos fazer alterações neste contrato, aí é necessário
lançar uma nova versão deste contrato
Versionar
● As vezes, precisamos fazer alterações na nossa API, seja para implementar
um novo recurso, excluir, adicionar novas informações em um recurso já
existente
● Então é preciso lançar uma nova versão para esses novos conteúdos, mas,
se simplesmente modificarmos tudo, quem já consome o serviço vai ter sua
aplicação quebrada
● Então lançamos uma nova versão e damos total suporte as versões antigas,
até que o serviço antigo não seja mais utilizado
Como versionar?
● Podemos versionar de dois modos básicos, existem mais maneiras.
● Adicionar um v1, ou v(e o número da tua versão) após raiz do teu endereço,
por exemplo, www.minhaapi.com/v1, assim como o Github faz
● Quem consumia apenas www.minhaapi.com vai continuar consumindo da
mesma maneira, quem quiser consumir a nova, tem que adaptar seus
sistemas para as novas respostas e requests
● Essa é a maneira mais fácil, precisamos “apenas” adicionar uma “pasta”
nova com o conteúdo a ser adicionado
Como versionar?
● É necessário informar também aos consumidores como a nova versão vai
funcionar
● Podemos também usar o versionamento por Domínio, que ao invés de usar
um v(qualquer versão) após a raiz da API, vai usar o v logo no início
● Isso fará com que o site mude tbm, por exemplo, v1.minhaapi.com
● Esse modo já envolve outros times, como o de infra para ajustar o domínio,
aplicar algumas regras que sejam necessárias
● E funciona da mesma maneira, incluímos os serviços novos e
disponibilizamos, sempre dando suporte aos serviços antigos

Mais conteúdo relacionado

Mais procurados

Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
Adriano Castro
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3
Inael Rodrigues
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
Armando Daniel
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
Sergio Henrique
 

Mais procurados (18)

Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
Javascript OO
Javascript OOJavascript OO
Javascript OO
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
04 comunicacao entreobjetos-cursogxxbr
04 comunicacao entreobjetos-cursogxxbr04 comunicacao entreobjetos-cursogxxbr
04 comunicacao entreobjetos-cursogxxbr
 
Python for the last Jedi episode I - Tchelinux Caxias do Sul 2018 - Joelmir R...
Python for the last Jedi episode I - Tchelinux Caxias do Sul 2018 - Joelmir R...Python for the last Jedi episode I - Tchelinux Caxias do Sul 2018 - Joelmir R...
Python for the last Jedi episode I - Tchelinux Caxias do Sul 2018 - Joelmir R...
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Full Text Search - Busca Textual no PostgreSQL
Full Text Search -  Busca Textual no PostgreSQLFull Text Search -  Busca Textual no PostgreSQL
Full Text Search - Busca Textual no PostgreSQL
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 

Semelhante a Estudos Technocorp

Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
Alexandre Antunes
 

Semelhante a Estudos Technocorp (20)

Apres s3
Apres s3 Apres s3
Apres s3
 
Protocolo Http
Protocolo HttpProtocolo Http
Protocolo Http
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Aula10 -PHP
Aula10 -PHPAula10 -PHP
Aula10 -PHP
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
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,
 
GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?
 
Dawi o protocolo-http
Dawi o protocolo-httpDawi o protocolo-http
Dawi o protocolo-http
 
Aplicações web parte 1
Aplicações web parte 1Aplicações web parte 1
Aplicações web parte 1
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo http
 
O get and post para etico hacker
O get and post para etico hackerO get and post para etico hacker
O get and post para etico hacker
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
 
Rest
RestRest
Rest
 
Zope
ZopeZope
Zope
 

Último

Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
RogrioGonalves41
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
lenapinto
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 

Último (20)

Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 

Estudos Technocorp

  • 3. Java 8 - Interface ● Adicionados métodos default e static nas interfaces, até então, interfaces não podiam ter métodos com ação (código) no seu corpo. ● Static não podem ser sobrescritos e são acessados pelo nome da interface. ● Default podem ser acessados por instâncias de classes que implementam a interface e podem ser sobrescritos. ● Default foram adicionados para incluir métodos em interfaces sem quebrar suas implementações ● Optional
  • 4. Java 8 - Interface
  • 5. Java 8 - Expressões lambda ● Expressões lambda são expressões que lembram o paradigma funcional, onde temos funções que fazem o nosso processamento, facilitam a legibilidade do código ● Podem ser aplicadas em tudo que for uma interface funcional, ou seja, aquelas que possuem apenas um método, assim como a Runnable, que tem apenas o método run ● Ao fazer um foreach do Java8, também podemos fazer uso de lambdas para alguma ação relacionada ao objeto ● Method reference
  • 6. Java 8 - Expressões lambda
  • 7. Java 8 - Stream API ● Interface criada para suportar novas operações em Listas usando técnicas de programação funcional ● Coleta todos os dados da lista para trabalhar de forma mais dinâmica e fluída ● É recheada de métodos como filter, map, collect, count, ifpresent ● É possível fazer fazer várias operações como cálculos, coletar dados, filtrar os dados que tu precisa, fazer sort. Tudo de maneira mais fluída ● Alguns métodos retornam Optional para evitar null pointer
  • 8. Java 8 - Stream API
  • 10. Java 9 - Private interface methods ● Métodos de interfaces que tem corpo (comportamento) e que são privados a interface ● Muito usados quando a interface tem métodos que precisam compartilhar algum recurso ou fazem coisas iguais ● É criado então um método privado e todos os outros chamam esse método quando necessário
  • 11. Java 9 - Private interface methods
  • 12. Java 9 - Immutable set ● Java 9 nos trás também a possibilidade de criar um Set imutável com o uso de set.of() ● Ao tentar remover ou adicionar valores após a criação, é lançada uma UnsupportedOperationException ● É permitido alterar os valores dentro de um objeto já guardado no set ● Valores nulos não podem ser adicionados
  • 13. Java 9 - Immutable set
  • 15. Java 10 - inferência de tipos ● Foi adicionada a inferência de tipos, assim com é utilizado no JavaScript ● Para tal, devemos usar a palavra var. Exemplo, var test = List.of("one test", "two tests", "three tests"); ● Podemos receber um objeto ou métodos nessa variável ● Só pode ser usada para variáveis locais com inicializadores ● Devemos usar com cautela pois pode ficar difícil de ler ao termos muitas variáveis assim ● Podemos usar para receber retorno de métodos mas não como tipo de método e nem como parâmetros
  • 16. Java 10 - inferência de tipos
  • 17. Java 10 - orElseThrow() method ● Adicionado o método orElsethrow() à classe Optional ● Permite lançar exception direto na utilização do método ● Mais um método para puxar um pouco de programação funcional
  • 18. Java 10 - orElseThrow() method
  • 20. Java 11 - padronização http ● Novo pacote java.net lançado ● Padroniza o cliente http para fazer requests que suporta requisições síncronas e assíncronas ● Temos request, bodyPublisher para requisições que tem um corpo, response para gerenciar respostas, interface funcional bodyhandler ● Utiliza o pattern builder na criação de clientes e requests ● Permite realizar as operações com suporte a novas features como http 2 sem precisar de dependências
  • 21. Java 11 - padronização http GET
  • 22. Java 11 - padronização http POST
  • 23. Java 11 - var como parâmetros em lambda ● Agora é possível usar variáveis var como parâmetros em expressões lambda, mas com algumas proibições ● Não podemos usar um var para vários parâmetros na mesma expressão ● Não podemos misturar var com tipos explícitos
  • 24. Java 11 - var como parâmetros em lambda
  • 25. HTTP
  • 26. Http - conceito ● HyperText transfer protocol ● Responsável pelo transporte dos dados, sejam eles frutos de requisições ou respostas ● Desenvolvido para comunicação entre servidores web e navegadores web ● É stateless, não mantém dados ● Normalmente é usado com tcp/ip mas pode ser usado com qualquer camada de transporte, como udp
  • 27. Http - funcionamento ● É baseado em requisição e resposta ● Alguém faz uma requisição de alguma informação e outro alguém responde com outra informação ● A isso damos o nome de request e response, respectivamente ● Como atores dessa comunicação temos o cliente, o servidor e o proxy ● Cliente (user-agent) ○ É quem faz solicitação, pode ser um navegador, uma máquina conectada a internet, o software de atualização de um celular e por aí vai
  • 28. Http - funcionamento ● Servidor ○ É quem responde a essas solicitações quando necessário ● Proxy ○ É o representante da conexão quando necessário e configurado ○ Ele é quem recebe e requisição e acaba transmitindo a quem realmente precisa receber aquele requisição ○ Esse roteamento acontece muito quando trabalhamos com balanceamento de carga utilizando proxy ● Toda essa troca é feita por uma “conversa” entre as parte, essa conversa é dividida em duas partes básicas, cabeçalho e corpo
  • 29. Http - Cabeçalho (header) ● O cabeçalho é um conjunto de informações adicionais à requisição ● Podem especificar que tipo de dado é aceito ou que é enviado, especificar o tipo de caracteres e muito mais ● É composto por nome e valor (parecido com o map que é chave e valor) ○ O nome é case-insensitive seguido de : (dois pontos) e seu valor, sem quebra de linhas ○ Podemos usar nomes personalizados e outros padronizados ○ Personalizados são usados com um X- antes do nome, mas isso está depreciado por causar alguns problemas ● Aqui podemos encontrar a maioria dos message headers que existem, fora os personalizados
  • 30. Http - Cabeçalho (header) ● Os message Headers mais comumente vistos são ○ Accept que dizem qual é o tipo de documento que aceitamos, em qual idioma, qual a codificação de caracteres ○ Authentication para informar login e senha, quando necessários ○ Content-type para informar que tipo de conteúdo estamos enviando e que tipo estamos recebendo e ainda outros tipos de content que indicam várias coisas referentes ao conteúdo ○ User-agent ○ Date ○ Keep-alive que indica a quantidade mínima e máxima de tempo que uma conexão deve ficar aberta
  • 31. Http - Cabeçalho (header) ● Quando se trata de documentos, normalmente transmitimos json, xml ou html ● Junto a esses cabeçalhos, temos alguns itens que já vem com o protocolo, que são o status code que serve para nos dizer o que acontece ● Dentro desse header podemos fazer operações, por exemplo, um if para aceitar um conteúdo apenas se preencher um requisito, redirecionar para outro endpoint e outras mais
  • 32. Http - Status code ● Uma das informações mais importantes da requisição e resposta é status code, ele nos dá um norte do que está acontecendo ● São armazenados em cinco famílias ○ Respostas de informação - 1xx ○ Respostas de sucesso - 2xx ○ Redirecionamentos - 3xx ○ Erros do cliente - 4xx ○ Erros do servidor - 5xx
  • 33. Http - Status code - 1xx ● 100 - Continue ○ Mostra que “até agora” está tudo certo e o usuário pode continuar ou encerrar a operação, caso já tenha o que precisa ■ Perguntar se o srv está disponível, por exemplo ● 101 - Switching protocol ○ Indica a qual protocolo o srv está alternando ● 102 - Processing ○ Indica que srv recebeu a solicitação mas não tem nenhuma resposta no momento
  • 34. Http - Status code - 2xx ● 200 - OK ○ indica que deu tudo certo, “tudo certo” varia de método para método ● 201 - Created ○ indica que o recurso foi criado, normalmente usado em POST ● 202 - Accepted ○ Indica que a solicitação foi aceita, mas nada foi feito com ela. Pode ser que outro srv vá tomar alguma ação ou algo assim ● 204 - No Content ○ Não há conteúdo para essa solicitação, muito utilizada para atualizar os cabeçalhos
  • 35. Http - Status code - 3xx ● 300 - Multiple Choices ○ Há mais de uma resposta para a requisição, o user deve escolher qual, mas não há uma maneira padrão. ■ Solicitar em formato específico, por exemplo ● 301 - Moved Permanently ○ A URI responsável foi movida, provavelmente será enviada a nova URI no cabeçalho ● 304 - Not Modified ○ Diz que o recurso não foi modificado, então pode ser usado o que está no cache
  • 36. Http - Status code - 4xx ● 400 - Bad Request ○ Diz que o srv não entendeu a requisição devido a uma sintaxe inválida ● 401 - Unauthorized ○ Significa que o usuário precisa se autenticar para acessar o recurso ● 402 - Payment Required ○ Não é usado atualmente, o intuito era usar em sistemas de pagamento ● 403 - Forbidden ○ Usuário não tem permissão para acessar, mas aqui ele já é conhecido ● 404 - Not Found ○ Muito comum, o recurso solicitado não foi encontrado
  • 37. Http - Status code - 4xx ● 405 - Method Not Allowed ○ O método da nossa requisição não é permitido para aquele recurso ■ Enviar um POST para um endpoint que só atende GET, por exemplo ● 415 - Unsupported Media Type ○ O tipo de mídia não é suportado pelo servidor ● 451 - Unavailable For Legal Reasons ○ Informado quando um recurso ilegal tem tentativa de acesso ■ Acessar uma página censurada, por exemplo
  • 38. Http - Status code - 5xx ● 500 - Internal Server Error ○ Ocorreu uma situação com a qual o srv não sabe lidar ● 502 - Bad Gateway ○ Diz que o srv está atuando como uma ponte e que o srv que realmente atendeu a demanda enviou uma resposta que a “ponte” não entende ● 503 - Service Unavailable ○ O srv não está pronto para atender ■ Pode ser que está em manutenção, por exemplo ● 504 - Gateway Timeout ○ Diz que o srv “ponte” não obteve resposta a tempo
  • 39. Http - Todos os status ● Clique aqui para acessar a lista com todos os Status Code
  • 40. Http - Methods ● O protocolo especifica alguns métodos para realizar as requisições ● São eles ○ GET ■ Solicita a representação do recurso solicitado passando parâmetros na URL ○ HEAD ■ Idêntico ao GET, porém a resposta não contém corpo, muito usado para atualizar headers ○ POST ■ É utilizado para criar, enviar, submeter algum dado ao srv ou recurso, pode ou não receber corpo na resposta
  • 41. Http - Methods ● PUT ○ É usado para fazer um update de algo com o corpo da requisição, editar um usuário, por exemplo ● DELETE ○ Como o nome diz, é usado para deletar, apagar, arquivos, dados ou qualquer coisa que possa ser apagada, pode ter corpo ou não na resposta ● CONNECT ○ É usado para conectar o srv, não tem corpo na resposta e nem na requisição ● OPTIONS ○ É usado para saber o que o srv suporta, quais métodos e outras opções, podemos especificar a url ou colocar um * para fazer referência ao srv todo
  • 42. Http - Methods ● TRACE ○ Realiza um loop-back no caminho para saber se está tudo correto, muito utilizado para debug, não tem corpo ● PATCH ○ Usado para fazer modificações parciais para um recurso, tem corpo na requisição e resposta, alterar apenas o nome de um usuário
  • 43. Http - modelo ● Requisição ● Resposta
  • 44. Http2 ● Surgido em 2015, apareceu para melhorar a performance e segurança dos dados ● Não muda a semântica nem os métodos da versão 1 ● É obrigatório o uso de certificados SSL, não por imposição da versão 2 , mas sim pelos browser que relataram suportar apenas o uso de TLS ● Habilita também, de forma automática a compressão dos dados com gzip e dos metadados com hpack, diminuindo tamanho da transferência e proporcionando mais velocidade
  • 45. Http2 ● Também faz uso de paralelismo nas requisições e respostas ● É possível priorizar recursos na ordem de solicitação
  • 47. SOA ● Soa trata de quebrar “negócio” inteiro de acordo com suas áreas ● Ter um serviço responsável pelo financeiro, outro pelo administrativo, outro pelo comercial e por aí vai ● Fazer com que esses serviços possam se comunicar e comunicar-se também com um repositório central de serviços ● Esse repositório será responsável por listar quais serviços estão disponíveis para uso e quais não ● Proporciona uma integração muito grande de sistemas a medida que todos eles podem se conversar agora
  • 48. SOA ● Essa integração beneficia muito as áreas, devido a comunicação direta, eliminando intermediários e fazendo com que os custos sejam reduzidos e que as informações sejam mais transparentes ● Normalmente é feito em serviços que são compartilhados por toda a organização ou por grande parte dela, como emissão de NFs, por exemplo ● Em SOA temos um registro, cliente e um provedor de serviços ● Registro é onde vão estar listados todos os serviços disponíveis, onde os clientes vão buscar o serviço desejado
  • 49. SOA ● Cliente é quem consome o serviço ● Provedor é onde vai estar disponível aquele serviço, o registro informa onde o serviço está, que é no provedor ● Diminui o acoplamento de aplicação, fazendo a comunicação baseada em solicitação e resposta ● Possibilita o reuso de código, uma vez que uma lógica de negócio pode ser alterada para utilizar um ou mais serviços ● Temos em soa também um barramento de serviços, onde novas ferramentas possam fazer uso desse barramento
  • 50. SOA ● Esse barramento representa é interface de comunicação entre provedores e consumidores ● Podemos ter aplicações desenvolvidas em qualquer linguagem, uma vez que as aplicações irão adotar um padrão de comunicação que pode ser Soap, ActiveMQ ou Apache Thrift ● O barramento principal de serviços é guardado em um srv, se ele falhar, todos os serviços que fazem parte desse barramento ficam fora
  • 51. SOA ● A performance é um ponto delicado, em empresas muito grandes pode não ser viável, pois apesar da divisão em serviços, o barramento pode ficar muito complexo ● Porém, é meio que sair de uma estrutura monolítica para usar outra, quando criado o ESB ● O banco de dados pode ser compartilhado por vários serviços da aplicação
  • 53. Microsserviços ● De certa forma, são parecidos com SOA, uma vez que buscam dividir uma aplicação em várias aplicações ● Mas diferente de SOA, não há um barramento, ou, pelo menos, não tão grande, a ponto de se tornar o “monolitão” ● Cada função de uma aplicação se torna um serviço, exemplo do youtube ○ A caixa de pesquisa é um serviço, o botão de curtir é outro serviço e assim vai por cada função da aplicação ● Cada serviço pode usar uma linguagem diferente, desde que usem um protocolo padrão para se comunicar
  • 54. Microsserviços ● Assim como na linguagem, cada aplicação pode usar um banco de dados diferente ● Podemos ter várias instâncias do mesmo serviço para balancear a carga ● Podemos atualizar um serviço sem que isso atrapalhe o funcionamento da aplicação “maior” ● E no caso da queda de um serviço, o resto da aplicação funciona ● O banco de dados é único para cada microsserviço
  • 56. O que é o “contrato”? ● É a API em si ● Nela é que estão as “regras” do contrato, quais os pontos que podemos acessar, o que podemos fazer nessa API ● E as vezes precisamos fazer alterações neste contrato, aí é necessário lançar uma nova versão deste contrato
  • 57. Versionar ● As vezes, precisamos fazer alterações na nossa API, seja para implementar um novo recurso, excluir, adicionar novas informações em um recurso já existente ● Então é preciso lançar uma nova versão para esses novos conteúdos, mas, se simplesmente modificarmos tudo, quem já consome o serviço vai ter sua aplicação quebrada ● Então lançamos uma nova versão e damos total suporte as versões antigas, até que o serviço antigo não seja mais utilizado
  • 58. Como versionar? ● Podemos versionar de dois modos básicos, existem mais maneiras. ● Adicionar um v1, ou v(e o número da tua versão) após raiz do teu endereço, por exemplo, www.minhaapi.com/v1, assim como o Github faz ● Quem consumia apenas www.minhaapi.com vai continuar consumindo da mesma maneira, quem quiser consumir a nova, tem que adaptar seus sistemas para as novas respostas e requests ● Essa é a maneira mais fácil, precisamos “apenas” adicionar uma “pasta” nova com o conteúdo a ser adicionado
  • 59. Como versionar? ● É necessário informar também aos consumidores como a nova versão vai funcionar ● Podemos também usar o versionamento por Domínio, que ao invés de usar um v(qualquer versão) após a raiz da API, vai usar o v logo no início ● Isso fará com que o site mude tbm, por exemplo, v1.minhaapi.com ● Esse modo já envolve outros times, como o de infra para ajustar o domínio, aplicar algumas regras que sejam necessárias ● E funciona da mesma maneira, incluímos os serviços novos e disponibilizamos, sempre dando suporte aos serviços antigos