Por que eu devo ler este artigo:Este artigo é útil por apresentar os principais componentes e conceitos que envolvem o uso da biblioteca RxJava e da programação reativa, desde a criação de um Observable, simplificação de código usando lambdas e transformações de dados.

Também será possível conhecer alguns dos principais operadores do RxJava, como combinar Observables, como ter controle sobre os erros e entender o que são Subscriptions.

A partir desse conteúdo o leitor terá uma boa fundamentação para iniciar nesta nova opção que vem ganhando cada vez mais atenção de profissionais que atuam com Java.

A linguagem Java é imperativa e orientada a objetos. Sua versão 8 e a inserção, dentre outros recursos, das expressões lambda e dos streams, trouxe características da programação reativa funcional, abrindo o leque de possibilidades de se programar.

Dentre essas possibilidades, destaca-se a facilidade de se trabalhar e estruturar aplicações de forma menos verbosa e mais eficiente.

Programação reativa pode ser definida como um paradigma de desenvolvimento baseado em fluxos assíncronos de dados e na propagação de mudanças nesse fluxo.

Isso significa que uma determinada fonte de dados dinâmica ou estática é definida e, posteriormente ou mesmo imediatamente, executada propagando seus resultados através de um fluxo de dados e notificando todos os receptores.

Pode-se definir a programação reativa como um paradigma de programação baseado em eventos que podem ser aguardados em diferentes pontos do código servindo como gatilhos para a execução de lógicas específicas.

A programação reativa funcional surgiu como uma ideia no final dos anos 90 e inspirou Erik Meijer, então funcionário da Microsoft, a criar uma forma de se utilizar este paradigma dentro do mundo .NET. Surgiu assim a biblioteca Microsoft Rx (de Reactive eXtension), que permite ao desenvolvedor criar aplicações assíncronas e baseadas em eventos de forma simplificada.

Com a Microsoft Rx, pode-se criar Observables, realizar queries utilizando LINQ e gerenciar a concorrência facilmente com Schedulers.

Esta abordagem modifica a forma síncrona utilizada para a programação que visa o resultado através de chamadas a métodos e seu retorno. De maneira diferente, utilizando-se a Microsoft Rx, ao solicitar determinado recurso, assim que este estiver pronto, o objeto solicitante é notificado.

Em 2012, a Netflix constatou a necessidade de melhorias em seu sistema, o qual apresentava problemas de escalabilidade, devido à enorme expansão do serviço. A Netflix então optou por refazer a arquitetura do sistema, visando reduzir a quantidade de chamadas REST realizadas. Assim, em vez de realizar várias chamadas, seria preciso apenas uma, baseada na necessidade do cliente, o que possibilita a melhora do desempenho do sistema.

Para atingir este objetivo foi adotado o paradigma reativo e foi feita a portabilidade do sistema de Reactive Extensions da Microsoft para a Java Virtual Machine.

Nesse processo de troca de paradigmas, optou-se por focar não na linguagem Java, mas na JVM, buscando desenvolver uma ferramenta para possibilitar a programação reativa que pudesse ser utilizada por qualquer linguagem baseada na mesma JVM, como Scala, Groovy e, claro, Java.

Em fevereiro de 2013, Ben Christensen e Jafar Husain, engenheiros da Netflix, mostraram a biblioteca RxJava ao mundo em um post publicado no blog técnico da empresa (veja a seção Links).

Desde então, a RxJava vem recebendo muita atenção e sendo mantida pela comunidade de forma efetiva. Inclusive, após algum tempo de desenvolvimento, foi criada uma organização para manter os diversos ports das RXs para as mais diversas plataformas e linguagens, hoje mantida sobre o nome de Reactive Extensions (veja a seção Links).

A RxJava possui características interessantes como facilidade de controlar concorrência, de forma a melhorar o uso do poder de processamento dos seus servidores; facilidade na execução condicional de tarefas assíncronas; melhoria quanto a evitar o problema de uso de vários callbacks (evitar o uso excessivo do padrão Observer) e abordagem reativa.

Principais componentes da RxJava

Para fazer um bom uso da biblioteca RxJava, é necessário entender o que são e quais os papéis dos principais componentes que a compõem. Nesta seção, vamos conhecer os Observables, produtores de dados, e os Observers e Subjects, que possuem o papel de consumir e responder a esses dados.

Observable

Vamos imaginar o seguinte cenário: quando precisamos executar alguma tarefa assíncrona no Java, de baixa compl ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora