Rxjava vs Webflux
Contents
RxJava vs Spring Webflux
리액티브 프로그래밍 == 프로그래밍 패러다임. 객체 지향 프로그래밍, 함수형 프로그래밍, 절차형 (procedural) 프로그래밍처럼 리액티브 프로그래밍 역시 하나의 패러다임에 불과하다.
Reactive Stream은 specification. Reactive Stream은 4가지 인터페이스를 제공하는 API.
- Publisher: 길이에 제한이 없는 sequence element들의 공급자.
- Subscriber: publisher가 전달한 element를 수신하고 소비하는 주체
- Subscription: publisher-subscriber의 1대1 라이프사이클을 의미
- Processor: subscriber와 publisher가 계약을 맺는 processing stage를 대변.
이렇게 정의해 놓은 reactive stream을 구현하는 JVM 기반 프레임워크에는
- Akka Streams Framework
- Ratpack
- Vert.x
- ReactiveX (RxJava 2.x + Reactor)
- Java 1.9 Flow 클래스들
ReactiveX는 Observer, Iterator 패턴과 함수형 프로그래밍의 핵심 아이디어로부터 조합되어 탄생된 프레임워크. Observer 패턴의 연장선 상에서 데이터 / 이벤트들의 시퀀스나 시퀀스들을 명시적으로 합칠 때 low-level threading, synchronization, thread safety, non-blocking IO 에 대한 걱정 없이 사용할 수 있는 연산자를 지원한다.
RxJava 2.0과 Reactor는 ReactiveX 프로젝트에 기반한 결과물. 그리고 스프링 Webflux가 Reactor를 내부적으로 사용하는 것. 둘 다 Reactive Stream의 구현체인 것은 동일하다.
https://stackoverflow.com/questions/56461260/java-spring-webflux-vs-rxjava