Skip to content

1. Introduzione

Il PDF del documento è disponibile |QUI|.

Gli esempi nel documento sono disponibili |QUI|.

1.1. Contesto

Questo documento non è destinato ai principianti, ma agli utenti con una solida esperienza in Java. Si avvale delle seguenti fonti:

  1. Documentazione su [Reactive Programming];
  1. funzioni lambda di Java 8;
  2. Imparare la programmazione reattiva con Java 8;
  3. Java 8 in azione;

A differenza di altri documenti che ho scritto, questo si basa principalmente su esempi e approfondisce solo brevemente la teoria. Tuttavia, ogni esempio è accompagnato da una spiegazione e c'è una progressione logica in tutto il documento.

ReactiveX è un insieme di librerie che facilitano la programmazione asincrona e l'elaborazione dei dati risultanti:

 
 
 

La libreria Rx è stata implementata in molti linguaggi:

 

In questa sede ci concentreremo sulle seguenti librerie:

  • RxJava per l'ambiente Java;
  • RxAndroid, una specializzazione di RxJava per l'ambiente Android;
  • RxSwing, una versione di RxJava pensata per l'ambiente Swing;

I concetti della programmazione reattiva sono complessi a prima vista. Ecco perché questo documento non è destinato principalmente ai principianti. Tuttavia, ho fatto un grande sforzo per spiegare il codice utilizzato, e un principiante può familiarizzare con la programmazione reattiva utilizzando questo documento.

1.2. Strumenti utilizzati

Gli esempi seguenti sono stati testati con il seguente ambiente:

  • Macchina Windows 10 Pro a 64 bit;
  • JDK 1.8 (sezione 1);
  • IntelliJ IDEA Community Edition (Sezione 10.4);

1.3. Codice di esempio

Il codice per i seguenti esempi è disponibile |QUI| nella cartella [dvp/examples].

 

La cartella [dvp/examples] [2] è un progetto Gradle contenente la maggior parte degli esempi presenti in questo documento. Può essere aperta da qualsiasi IDE che supporti il gestore di progetti Gradle [http://gradle.org/]. IntelliJ IDEA lo supporta in modo nativo. Per Eclipse o NetBeans è necessario un plugin. Con IntelliJ IDEA Community Edition, è possibile procedere come segue:

Il progetto [examples] è configurato dal seguente file [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'
}
  • righe 18–22: le dipendenze Gradle del progetto (librerie da scaricare);
  • riga 19: la libreria richiesta per l'esempio Swing discusso nella sezione 2;
  • riga 20: la libreria RxJava;
  • riga 21: una libreria JSON;
  • righe 9–12: le caratteristiche dell'archivio JAR prodotto dalla compilazione del progetto;

Per scaricare le dipendenze necessarie per il progetto, segui questi passaggi [1-4]: