Skip to content

1. Wprowadzenie

Plik PDF dokumentu jest dostępny pod nazwą |TUTAJ|.

Przykłady z dokumentu są dostępne pod numerem |TUTAJ|.

1.1. Contexte

Niniejszy dokument nie jest przeznaczony dla początkujących, lecz dla użytkowników posiadających solidne doświadczenie w zakresie języka Java. Wykorzystuje on następujące źródła:

  1. Dokumentacja [Reactive Programming];
  1. Funkcje lambda w Javie 8;
  2. „Java 8 in Action”;

W przeciwieństwie do innych dokumentów, które napisałem, niniejszy dokument opiera się głównie na przykładach i w niewielkim stopniu zagłębia się w teorię. Jednak każdy przykład jest opatrzony objaśnieniem, a dokument ma logiczną strukturę.

ReactiveX to zbiór bibliotek ułatwiających programowanie asynchroniczne oraz wykorzystanie uzyskanych w ten sposób danych:

 
 
 

Biblioteka Rx została zaimplementowana w wielu językach:

 

W tym miejscu skupiamy się na następujących bibliotekach:

  • RxJava dla środowiska Java;
  • RxAndroid, specjalizacja biblioteki RxJava przeznaczona dla środowiska Android;
  • RxSwing, specjalizacja biblioteki RxJava przeznaczona dla środowiska Swing;

Koncepcje programowania reaktywnego wydają się na pierwszy rzut oka skomplikowane. Dlatego niniejszy dokument nie jest z założenia przeznaczony dla początkujących. Niemniej jednak dołożyłem wszelkich starań, aby wyjaśnić zastosowany kod, dzięki czemu nawet osoba z niewielkim doświadczeniem będzie mogła zapoznać się z programowaniem reaktywnym na podstawie tego dokumentu.

1.2. Wykorzystane narzędzia

Poniższe przykłady zostały przetestowane w następującym środowisku pracy:

  • komputer z systemem Windows 10 Pro 64-bitowym;
  • JDK 1.8 (akapit 1);
  • IntelliJ IDEA Community Edition (punkt 10.4);

1.3. Kody przykładów

Kody poniższych przykładów można znaleźć w folderze [dvp/exemples].

 

Folder [dvp/exemples] [2] zawiera projekt Gradle z większością przykładów z niniejszego dokumentu. Można go otworzyć w każdym środowisku programistycznym IDE obsługującym menedżera projektów Gradle [http://gradle.org/]. IntelliJ IDEA obsługuje go natywnie. W przypadku Eclipse lub NetBeans wymagana jest wtyczka. W przypadku IntelliJ IDEA Community Edition można postępować w następujący sposób:

Projekt [exemples] jest skonfigurowany za pomocą następującego pliku [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'
}
  • wiersze 18–22: zależności Gradle projektu (biblioteki do pobrania);
  • wiersz 19: biblioteka niezbędna do przykładu Swing omówionego w akapicie 2;
  • wiersz 20: biblioteka RxJava;
  • wiersz 21: biblioteka jSON;
  • wiersze 9–12: charakterystyka archiwum Jar wygenerowanego w wyniku kompilacji projektu;

Aby pobrać zależności niezbędne dla projektu, wykonaj następujące czynności: [1-4]: