Skip to content

1. Introduzione

Il codice PDF del documento è disponibile |QUI|.

Gli esempi del documento sono disponibili |QUI|.

1.1. Contexte

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

  1. Documentazione [Reactive Programming];
  2. Le funzioni lambda di Java 8;
  3. Learning Reactive Programming With Java 8;
  4. Java 8 in Action;

A differenza di altri documenti che ho scritto, questo si basa principalmente su esempi e approfondisce poco la teoria. Tuttavia, ogni esempio è accompagnato da una spiegazione e il documento segue un percorso logico.

ReactiveX è un insieme di librerie che facilitano la programmazione asincrona e l’utilizzo dei dati così ottenuti:

 
 
 

La libreria Rx è stata implementata in molti linguaggi:

 

In questa sede ci interessano le seguenti librerie:

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

I concetti della programmazione reattiva sono a prima vista complessi. Per questo motivo il presente documento non è, in linea di massima, destinato ai principianti. Tuttavia, mi sono impegnato a fondo per spiegare il codice utilizzato e anche un principiante alle prime armi potrà familiarizzare con la programmazione reattiva grazie a questo documento.

1.2. Gli strumenti utilizzati

Gli esempi che seguono sono stati testati con il seguente ambiente di lavoro:

  • computer con Windows 10 Pro a 64 bit;
  • JDK 1.8 (paragrafo 1);
  • Intellij IDEA Community Edition (paragrafo 10.4);

1.3. I codici degli esempi

I codici degli esempi che seguiranno sono disponibili |ICI| nella cartella [dvp/exemples].

 

La cartella [dvp/exemples] [2] è quella di un progetto Gradle contenente la maggior parte degli esempi presenti in questo documento. Può essere aperta da tutti gli ambienti di sviluppo che supportano il gestore di progetti Gradle. 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 [exemples] è 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 (le librerie da scaricare);
  • riga 19: la libreria necessaria per l'esempio Swing illustrato nel paragrafo 2;
  • riga 20: la libreria RxJava;
  • riga 21: una libreria jSON;
  • righe 9-12: le caratteristiche dell'archivio Jar generato dalla compilazione del progetto;

Per scaricare le dipendenze necessarie al progetto, procedere come segue [1-4]: