Skip to content

1. Introdução

O PDF do documento está disponível |AQUI|.

Os exemplos do documento estão disponíveis |AQUI|.

1.1. Contexte

Este documento não se destina a iniciantes, mas a usuários com sólida experiência em Java. Ele utiliza as seguintes fontes:

  1. Documentação [Reactive Programming];
  1. As funções lambda do Java 8;
  2. Java 8 in Action;

Ao contrário de outros documentos que já escrevi, este documento se baseia principalmente em exemplos e aborda a teoria de forma superficial. No entanto, cada exemplo é acompanhado de uma explicação e há uma progressão lógica ao longo do documento.

ReactiveX é um conjunto de bibliotecas que facilitam a programação assíncrona e o aproveitamento dos dados assim obtidos:

 
 
 

A biblioteca Rx foi implementada em várias linguagens:

 

Aqui, estamos interessados nas seguintes bibliotecas:

  • RxJava para o mundo Java;
  • RxAndroid, uma especialização de RxJava para o ambiente Android;
  • RxSwing, uma especialização de RxJava para o ambiente Swing;

Os conceitos da programação reativa são, à primeira vista, complexos. É por isso que este documento não se destina, a princípio, a iniciantes. No entanto, me esforcei bastante para explicar os códigos utilizados, e um iniciante poderá se familiarizar com a programação reativa por meio deste documento.

1.2. As ferramentas utilizadas

Os exemplos a seguir foram testados no seguinte ambiente de trabalho:

  • computador com Windows 10 Pro de 64 bits;
  • JDK 1.8 (parágrafo 1);
  • Intellij IDEA Community Edition (parágrafo 10.4);

1.3. Os códigos dos exemplos

Os códigos dos exemplos a seguir podem ser encontrados |ICI| na pasta [dvp/exemples].

 

A pasta [dvp/exemples] [2] é a de um projeto Gradle que contém a maioria dos exemplos deste documento. Ela pode ser aberta por qualquer IDE que suporte o gerenciador de projetos Gradle [http://gradle.org/]. O IntelliJ IDEA oferece suporte nativo a ele. Para o Eclipse ou o NetBeans, é necessário um plug-in. Com o IntelliJ IDEA Community Edition, pode-se proceder da seguinte maneira:

O projeto [exemples] é configurado pelo seguinte arquivo [build.gradle] [4]:


buildscript {
    repositories {
        mavenCentral()
    }
}

apply plugin: 'java'

jar {
    baseName = 'exemples-01'
    version = '0.0.1-SNAPSHOT'
}

repositories {
    mavenCentral()
}

dependencies {
    compile('io.reactivex:rxswing:0.25.0')
    compile('io.reactivex:rxjava:1.1.3')
    compile('com.fasterxml.jackson.core:jackson-databind:2.7.3')
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}
  • linhas 18-22: as dependências Gradle do projeto (as bibliotecas a serem baixadas);
  • linha 19: a biblioteca necessária para o exemplo Swing abordado no parágrafo 2;
  • linha 20: a biblioteca RxJava;
  • linha 21: uma biblioteca jSON;
  • linhas 9-12: as características do arquivo Jar gerado pela compilação do projeto;

Para baixar as dependências necessárias ao projeto, proceda da seguinte forma [1-4]: