BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Netflix traz o Reactive Extensions para Java, com código aberto

Netflix traz o Reactive Extensions para Java, com código aberto

O Netflix criou e abriu os fontes do RxJava, uma implementação em Java do Reactive Extensions (Rx) da MS Open Technologies, que foi projetada para uso com qualquer linguagem que roda na JVM. Além do próprio Java, Groovy, Clojure, Scala e JRuby são linguagens já suportadas por essa implementação.

A criação do RxJava surgiu da necessidade de simplificar a concorrência no lado do servidor. A ideia é permitir que o cliente realize uma única requisição
"pesada" a ser executada em paralelo no servidor.
Ben Christensen e Jafar Husain explicam como isso acontece:

A concorrência no lado do servidor é necessária para reduzir idas e vindas na rede de maneira efetiva. No entanto, sem paralelizar a execução no servidor, uma única requisição "pesada" do cliente talvez não seja muito melhor que várias requisições "leves", pois cada requisição vai geralmente estar executando em paralelo com outras requisições na rede. Se a execução, no servidor, de uma requisição pesada, que tenha sido quebrada em partes menores, não alcançar certo nível de paralelismo, a execução pode demorar mais que múltiplas requisições leves, mesmo levando em conta o tempo gasto com a latência de rede.

Outro ponto que Christensen e Husain destacam é sobre o uso de Programação Reativa Funcional (Functional Reactive Programming ou FRP). Eles defendem que a FRP é preferível ao uso da interface Future e de callbacks, pois seu uso "deixa a composição e a execução do código mais eficientes, uma vez que disponibiliza um conjunto de operadores capazes de filtrar, selecionar, transformar, combinar e compor os objetos Observable".

Todos os métodos da API da camada de serviço retornam um objeto do tipo Observable<T>. Assim, as aplicações que utilizam o serviço não correm o risco de quebrar caso algo mude em seus métodos. Por exemplo, atualmente os métodos são chamados assincronamente, mas podem ser alterados no futuro para fazer o retorno de maneira síncrona. E os métodos de serviço têm autonomia para optar por I/O bloqueante ou não-bloqueante, sendo que a primeira opção é mais utilizada quando os recursos são limitados.

O RxJava é compatível com "o Java 5 (para incluir suporte ao Android) e versões superiores, havendo a meta de construir uma versão compatível com as expressões Lambda do Java 8." Assim como o Rx original, o RxJava é distribuído sob a Licença Apache. Os códigos do projeto podem ser obtidos a partir do seu repositório no Github.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT