Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[Jornada Summit 2021] Programação reativa com Java: o que é preciso saber antes do primeiro projeto

[Jornada Summit 2021] Programação reativa com Java: o que é preciso saber antes do primeiro projeto

More Decks by Kamila de fatima santos oliveira

Other Decks in Programming

Transcript

  1. Paradigma reativo É um paradigma de programação orientado para fluxos

    de dados / eventos, bem como sua propagação de forma assíncrona. @kamila_code
  2. Paradigma reativo Como funciona de forma assíncrona, é altamente recomendável

    lidar com grandes volumes de dados que sofrem grandes alterações em tempo real. @kamila_code
  3. Message Driven Os aplicativos reativos contam com mensagens assíncronas para

    estabelecer um limite entre os componentes, garantindo acoplamento flexível, isolamento e transparência @kamila_code
  4. RxJava É uma implementação para o Reactive Extensions JVM, que

    é uma biblioteca assíncrona e baseada em eventos que funciona com sequências observables. @kamila_code
  5. RxJava Estende do padrão observer -> cada objeto chamado (sujeito),

    possui uma lista de dependentes (observadores) que são notificados automaticamente pelo sujeito a cada mudança de estado por meio de seus operadores e métodos. @kamila_code
  6. RxJava Suporta sequências de dados e eventos para compor suas

    strings de eventos de forma declarativa. @kamila_code
  7. Reactive Streams Iniciativa que visa forncece um guia/padrão para fluxo

    de mensagens assíncronas de forma NIO. @kamila_code
  8. Reactive Streams Desenvolvida para ambientes de runtime como a JVM,

    bem como alguns protocolos de comunicação: https: //github.com/reactive-streams/reactive-streams-jvm @kamila_code
  9. Reactive Streams Em resumo, é um conjunto de métodos, interfaces

    e protocolos que vão descrever as operações entidades necessárias para o transporte de informações de forma assíncrona. @kamila_code
  10. Backpressure Resistência ou força que se opõe ao fluxo de

    dados desejado através do software. Feedback do receptor para o produtor de que ele não está suportando a carga. @kamila_code
  11. Stream Sequência de objetos que suporta vários métodos que podem

    ser operados para produzir um resultado. @kamila_code
  12. Flux Pode emitir de 0 a N eventos, passando por

    OnNext(), onComplete() e OnError(); @kamila_code
  13. Mono Pode emitir de 0 a 1 eventos, passando por

    OnNext(), onComplete() e OnError(); @kamila_code
  14. Cold Observable a sequência de eventos só é executada se

    Observable tiver um Subscriber associado @kamila_code
  15. Spring WebFlux Spring WebFlux pode ser definido como uma versão

    “paralela” ao já conhecido e amplamente utilizado Spring MVC (servlet), tendo como principal diferença o suporte para streams NIO reativos e por suportar o conceito de backpressure com o servidor Netty vindo por padrão embutido em sua arquitetura. @kamila_code
  16. Spring WebFlux A partir da versão 5.0 do Spring Framework

    temos uma parte reativa além da estrutura Servlet que já existia, cada módulo destes é opcional, você pode usar a parte Servlet, a parte reativa ou mesmo ambas em suas aplicações. @kamila_code
  17. Spring WebFlux Spring Webflux foi desenvolvido porque precisávamos de aplicativos

    não bloqueantes que pudessem funcionar com um pequeno número de threads simultaneamente e que pudessem ser executados com alguns recursos de hardware. @kamila_code
  18. Projeto Reactor É uma biblioteca baseada nas Reactive Streams Specification,

    é totalmente não bloqueante e interage diretamente com a API Java funcional (Stream, Duration e Completable Future), para composição de elementos utilizando Flux e Mono em arquiteturas de microsserviços, oferecendo mecanismos de contrapressão prontos para TCP , UDP e HTTP (incluindo web sockets). @kamila_code