Programação Reativa: Introdução ao RxJava

Edilson Ngulele
GDG Maputo
Published in
3 min readFeb 27, 2018

A cada dia que passa a internet vai crescendo e com ela a demanda por informação em tempo real. Para nós desenvolvedores, isso significa adoptar uma programação dinâmica e assíncrona. Uma das maneiras de fazer isso é através da programação reativa, que tem ganhado grande popularidade nos últimos tempos.

Este é o artigo introdutório à série (não esperes ver algum código 😁 ) e vamos perceber o que é afinal a programação reativa e vamos dar uma breve introdução ao RxJava.

Durante a série iremos cobrir temas como RxJava, RxAndroid e por fim RxKotlin.

Vamos começar por perceber algumas bases.

Programação Reativa

Programação reativa é um paradigma de programação baseado em fluxos de dados (streams) e na propagação de mudanças nesses fluxos.

source: giphy.com

Por exemplo…

Usando a forma tradicional de desenvolvimento, ao preparar um bolo chamamos o método prepararTrigo(trigo) e o método prepararAcucar(acucar), assim que tivermos isso pronto chamamos o método baterClaras(ovos), de seguida o método misturarTudo() e por fim o método meterForno(). Perfeito, o bolo estará delicioso!

Mas, imagina se não tivermos os ovos? Bom, o sistema falha assim que o método baterClaras(ovos) é invocado e não temos bolo nenhum.

Na programação reativa o cenário é um bocado diferente. Os eventos ocorrem de forma paralela sem precisar seguir nenhuma ordem cronológica e linear. Por exemplo, na programação reativa o sistema não irá travar, ele reconhece que é possível continuar sem os ovos e executa outras tarefas em paralelo enquanto espera pelo ovos.

Podemos definir programação reativa como um paradigma de programação baseado em eventos que podem ser aguardados em diferentes pontos do códigos que são chamados para execução de lógicas específicas.

O RxJava è uma implementação desse conceito para a linguagem de programação java.

O que é o RxJava

O RxJava é uma biblioteca que possibilita o uso da programação reativa para a linguagem de programação java. O Rx significa Reactive Extensions (Reactivex), que é um projecto que fornece a implementação da programação reativa para diferentes linguagens de programação (ex: RxJs, RxSwift, Rx.Net e etc..)

Componentes principais do RxJava

O RxJava é composto por:

  • observables: Emitem os dados.
  • subscribers (ou observers): Respondem aos dados emitidos.
  • conjunto de metodos para modificar e criar dados.

Um observable emite dados; o subscriber consome esses dados.

Observables

São a fonte de dados, começam a emitir dados assim que tiverem um subscriber inscrito. Isto é, os observables representam uma fonte de dados cujo o seu estado possa ser de interesse para outros objectos (subscribers). Esses objectos são notificados quando o estado do observable é alterado.

O ciclo de vida de um observable é composto por:

  • onNext(): É chamado sempre que ocorre algum evento no observable. Este é o método em que são realizadas algumas acções em cada evento.
  • onCompleted(): É chamado quando os eventos associados ao observable são concluidos. Assim que este método é chamado, não devemos esperar mais nenhuma actividade vinda do método onNext().
  • OnError(): Este método serve para notificar ao Observable sobre a ocorrência de algum erro.

Subscribers

Consomem os dados emitidos pelo observable. Pra tal efeito, o subscriber precisa estar inscrito à um observable. Um subscriber inscreve-se à um observable através do método subscribe(), a partir desse momento o subscriber reage a qualquer dado emitido pelo observable.

Em suma…

  • Um observable pode ter varios subscribers;
  • Quando o observable emite algum dado (onNext()), todos os subscribers inscritos recebem uma notificação.
  • Assim que o observable chama o método onCompleted() o subscriber deixa de estar inscrito ao observable.

É isso!

Chegamos ao fim de mais um artigo, espero que tenha sido util para ti. Como dito no início, esta foi apenas um breve introduçao. Os próximos serão mais práticos. Espero que tenham percebido os conceitos aqui apresentados porque serão importantes para os próximos artigos da série.

No próximo artigo vamos aprender como implementar o RxJava.

Se tiver alguma questão ou sugestão deixe aí nos comentários e não hesite em contactar-me pelo email: edilsonngulele@gmail.com ou twitter: @edilson_ngulele.

Obrigado e até a próxima!

--

--

Edilson Ngulele
GDG Maputo

Just a regular guy who loves coding and writing about Google Technologies | Project Manager @ MozDevz