
리액티브 시스템은 반응형 시스템이라고도 불립니다.
즉, 다시말해서 클라이언트의 요청에 즉각적으로 응답합으로써 지연 시간을 최소화 한다고 볼 수 있습니다.

리액티브 선언문 설계원칙
리액티브 선언문은 크게 수평으로 2개의 점선과 수직으로 세 개의 점선으로 구성되어 있습니다.
Means
Form
Value
리액티브 프로그래밍은 리액티브 시스템을 구축하는데 필요한 프로그래밍 모델입니다.
리액티브 시스템에서의 비동기 메시지 통신방식은 Non-Blocking I/O를 사용합니다.
Non-Blocking I/O는 동기화된 I/O와는 달리 I/O 작업이 완료되지 않더라도 다른 작업을 수행할 수 있는 방식입니다.
결론적으로 리액티브 프로그래밍은 비동기 메시지 기반 통신을 통해서 리액티브 시스템을 구축하는데 필요한 프로그래밍 모델입니다.
in computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change.
declarative programming은 선언형 프로그래밍이라는 의미입니다.
즉, 실행할 동작을 구체적으로 구체적으로 명시하지 않고 이러이러한 동작을 하겠다는 목표만 선언하는 프로그래밍 방식입니다.
data streams는 데이터의 흐름, 즉 데이터가 지속적으로 발생한다는 것을 의미합니다.
the propagation of change는 변화의 전파라는 의미입니다.
즉, 데이터의 흐름이 지속적으로 발생하고 데이터의 흐름이 지속적으로 발생하면서 데이터의 변화가 전파된다는 것을 의미합니다.
public class ImperativeProgramming {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += i;
}
System.out.println(sum);
}
}
public class DeclarativeProgramming {
public static void main(String[] args) {
int sum = IntStream.range(0, 10).sum();
System.out.println(sum);
}
}
우리가 리액티브 프로그래밍 코드는 크게 Publisher, Subscriber, Data Source, Operator로 구성됩니다.
Publisher는 데이터를 발행하는 역할을 합니다.
Subscriber는 데이터를 구독하는 역할을 합니다.
데이터를 소비하는 관점에서 소비자라고도 합니다.
Data Source는 데이터를 발행하는 원천적인 역할을 합니다.
Data Source를 리액티브 프로그래밍에서는 Date Stream 라고도 합니다.
Operator는 데이터를 가공하는 역할을 합니다.
리액티브 프로그래밍은 Operator로 데이터 필터링, 데이터 변환, 데이터 집계 등 다양한 데이터 가공을 할 수 있습니다.
리액티브 시스템의 설계
리액티브 프로그래밍의 특징
리액티브 프로그래밍 코드의 구성요소