Skip to content

1. Introdução

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

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

1.1. Contexto

Este documento não se destina a principiantes, mas sim a utilizadores com sólida experiência em Java. Utiliza as seguintes fontes:

  1. Documentação sobre [Programação Reativa];
  1. Funções lambda do Java 8;
  2. Aprendendo Programação Reativa com Java 8;
  3. Java 8 em Ação;

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

O ReactiveX é um conjunto de bibliotecas que facilita a programação assíncrona e o processamento dos dados resultantes:

 
 
 

A biblioteca Rx foi implementada em várias linguagens:

 

Aqui, estamos a concentrar-nos nas seguintes bibliotecas:

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

Os conceitos da programação reativa são complexos à primeira vista. É por isso que este documento não se destina principalmente a principiantes. No entanto, fiz um grande esforço para explicar o código utilizado, e um novato pode familiarizar-se com a programação reativa utilizando este documento.

1.2. Ferramentas utilizadas

Os exemplos seguintes foram testados no seguinte ambiente:

  • Máquina com Windows 10 Pro de 64 bits;
  • JDK 1.8 (secção 1);
  • IntelliJ IDEA Community Edition (Secção 10.4);

1.3. Código de exemplo

O código para os exemplos a seguir pode ser encontrado |AQUI| na pasta [dvp/examples].

 

A pasta [dvp/examples] [2] é 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 proceder da seguinte forma:

O projeto [examples] é 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 (bibliotecas a descarregar);
  • linha 19: a biblioteca necessária para o exemplo Swing discutido na secção 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 para o projeto, siga estes passos [1-4]: