RxJava - Visão geral
RxJava é uma extensão baseada em Java do ReactiveX. Ele fornece implementação ou projeto ReactiveX em Java. A seguir estão as principais características do RxJava.
Estende o padrão do observador.
Suporta sequências de dados / eventos.
Fornece operadores para compor sequências de forma declarativa.
Lida com threading, sincronização, thread-safety e estruturas de dados concorrentes internamente.
O que é ReactiveX?
ReactiveX é um projeto que visa fornecer conceito de programação reativa para várias linguagens de programação. A programação reativa se refere ao cenário em que o programa reage à medida que os dados aparecem. É um conceito de programação baseado em eventos e os eventos podem se propagar para observadores de registradores.
Conforme Reactive, eles combinaram o melhor do padrão Observer, do padrão Iterator e do padrão funcional.
O padrão Observer bem feito. ReactiveX é uma combinação das melhores ideias do padrão Observer, do padrão Iterator e da programação funcional.
Programação Funcional
A programação funcional gira em torno da construção do software usando funções puras. Uma função pura não depende do estado anterior e sempre retorna o mesmo resultado para os mesmos parâmetros passados. As funções puras ajudam a evitar problemas associados a objetos compartilhados, dados mutáveis e efeitos colaterais geralmente predominantes em ambientes de multi-threading.
Programação reativa
A programação reativa se refere à programação orientada a eventos, em que os fluxos de dados chegam de forma assíncrona e são processados quando chegam.
Programação Reativa Funcional
RxJava implementa ambos os conceitos juntos, onde os dados dos fluxos mudam ao longo do tempo e a função do consumidor reage de acordo.
O Manifesto Reativo
Manifesto reativo é um documento online que afirma o alto padrão dos sistemas de software de aplicação. De acordo com o manifesto, a seguir estão os principais atributos de um software reativo -
Responsive - Deve sempre responder em tempo hábil.
Message Driven - Deve usar a passagem de mensagens assíncrona entre os componentes para que eles mantenham um acoplamento fraco.
Elastic - Deve permanecer ágil mesmo sob carga elevada.
Resilient - Deve permanecer responsivo mesmo se algum componente falhar.
Principais componentes do RxJava
RxJava tem dois componentes principais: Observables e Observer.
Observable - Representa um objeto semelhante ao Stream que pode emitir zero ou mais dados, pode enviar mensagem de erro, cuja velocidade pode ser controlada durante a emissão de um conjunto de dados, pode enviar dados finitos como infinitos.
Observer- Assina os dados de sequência do Observable e reage por item dos observáveis. Os observadores são notificados sempre que Observable emite dados. Um Observer trata os dados um por um.
Um observador nunca é notificado se os itens não estiverem presentes ou um retorno de chamada não for retornado para um item anterior.