A Programação Reativa baseia-se em fluxos de dados e na propagação de mudanças, com o modelo de execução de uma linguagem de programação repercutindo automaticamente alterações através do fluxo de dados. Com a popularidade de arquiteturas orientadas a eventos, escaláveis e interativas, tanto do lado do cliente quanto do servidor, o conceito de "reatividade" está ganhando cada vez mais atenção.
O InfoQ já vem acompanhando esse paradigma há alguns anos. Algumas semanas atrás o grupo de pesquisa Gartner incluiu os termos "Programação Reativa" e "Web orientada a eventos" em sua publicação "Hype Cycle for Application Development, 2013", na seção "On the rise" (Em crescimento).
Recentemente, Bruce Eckel, autor de vários livros sobre programação, e Jonas Boner, criador do Akka e CTO da Typesafe, publicaram o "Manifesto Reativo", o qual visa definir o que são aplicações reativas.
Segundo os autores, essas aplicações devem ser capazes de:
- Reagir a eventos - a natureza de ser orientada a eventos permite as demais qualidades;
- Reagir a cargas - foco na escalabilidade ao invés de performance voltada a um usuário apenas;
- Reagir a falhas - ser resiliente com a capacidade de recuperação em todos os níveis;
- Reagir aos usuários - combinar as características acima para proporcionar uma experiência de usuário interativa.
Seguindo a publicação desse manifesto, Martin Odersky, criador do Scala, Erik Meijer, criador do Reactive Extensions e Roland Kuhn, líder técnico do Akka, anunciaram um curso gratuito chamado "Princípios de Programação Reativa", no Coursera.
O intuito do curso é ensinar os princípios de Programação Reativa, uma disciplina emergente que combina sistemas concorrentes, sistemas orientados a eventos e sistemas assíncronos. É essencial para a escrita de qualquer sistema distribuído ou baseado em web services; também é de extrema importância para muitos sistemas concorrentes de alto desempenho. A Programação Reativa pode ser vista como uma extensão da programação funcional mais abstrata voltada a sistemas concorrentes que lidam com estado distribuído, coordenando e orquestrando cadeias de dados assíncronos trocadas pelos atores.
Uma empresa que tem utilizado muito a Programação Reativa é o Netflix. Inclusive contribuiu com o porte do Rx para o Java:
A Programação Reativa Funcional tem possibilitado aos desenvolvedores do Netflix elevar a concorrência do lado do servidor sem as típicas preocupações com sincronização ou thread-safety. A implementação da camada de serviços da API tem total controle sobre os detalhes específicos da concorrência. Isso nos permite procurar cada vez mais por melhorias no desempenho sem o receio de quebrar o código do cliente. O RxJava é eficaz no servidor e está cada vez mais presente em nosso código.
O Facebook também lançou recentemente a biblioteca React JavaScript, para construção de interfaces com usuários sofisticadas. Stoyan Stefanov, engenheiro do Facebook, explica o principal conceito por trás do React:
O React permite construir aplicações utilizando componentes capazes de renderizar dados. Quando os dados mudam, os componentes são automaticamente atualizados de maneira muito eficiente e apenas quando necessário. Todo o trabalho de vincular e desvincular gerenciadores de eventos fica por conta do React. Também de maneira eficiente - usando delegação.
A Programação Reativa já está chamando a atenção da comunidade de desenvolvedores de front-end. Tal interesse iniciou no ano de 2009 com o paper Flapjax [PDF], e contribuiu com diversas bibliotecas que implementaram os princípios da Programação Reativa, tais como Bacon.js, Knockout, Meteor, React.js, Reactive.coffe e RxJS.
No QCon de San Francisco de 2013, haverá uma grande cobertura do paradigma Reativo por toda as tendências de TI e inovação, tanto em tutoriais e em tracks regulares.