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 principiantes, mas sim a utilizadores com uma sólida experiência em Java. Utiliza as seguintes fontes:

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

Ao contrário de outros documentos que já escrevi, este documento baseia-se sobretudo em exemplos e aprofunda pouco a teoria. No entanto, cada exemplo é acompanhado por uma explicação e existe uma progressão lógica ao longo do documento.

ReactiveX é um conjunto de bibliotecas que facilitam a programação assíncrona e a exploração 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 priori, a principiantes. No entanto, esforcei-me bastante para explicar os códigos utilizados e um principiante poderá familiarizar-se com a programação reativa através deste documento.

1.2. As ferramentas utilizadas

Os exemplos que se seguem foram testados com o 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 que se seguem 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. Pode ser aberta por qualquer IDE que suporte o gestor de projetos Gradle [http://gradle.org/]. O IntelliJ IDEA suporta-o nativamente. Para o Eclipse ou o NetBeans, é necessário um plugin. Com o IntelliJ IDEA Community Edition, pode-se proceder da seguinte forma:

O projeto [exemples] é configurado pelo seguinte ficheiro [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 descarregar);
  • linha 19: a biblioteca necessária para o exemplo Swing analisado no parágrafo 2;
  • linha 20: a biblioteca RxJava;
  • linha 21: uma biblioteca jSON;
  • linhas 9-12: as características do arquivo Jar produzido pela compilação do projeto;

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