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 ...
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