ABOUT ME

Developer를 위한 Reference 블로그 입니다.

Today
Yesterday
Total
  • 리액티브(Reactive) 프로그래밍 개요
    BackEnd/RxJava 2023. 7. 1. 07:00
    반응형

    리액티브 프로그래밍(Reactive Programming)

    In computing, reactive programming is a declarative programming

    paradigm concerned with data streams and the propagation of change.

    - wikipedia -

    • declarative programming: 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍과 달리 선언형 프로그래밍은 단순히 목표를 선언합니다.
    • data streams and the propagation of change: 데이터가 변경될 때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달합니다.

     

    명령형 프로그래밍 vs 선언형 프로그래밍

    package com.itvillage.chapter01.chapter0101;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class ImperativeProgramming {
        public static void main(String[] args){
            // List에 있는 숫자들 중에서 6보다 큰 홀수들의 합계를 구하세요.
            List<Integer> numbers = Arrays.asList(1, 3, 21, 10, 8, 11);
            int sum = 0;
    
            for(int number : numbers){
                 if(number > 6 && (number % 2 != 0)){
                     sum += number;
                 }
            }
    
            System.out.println("# 명령형 프로그래밍 사용: " + sum);
        }
    }
    package com.itvillage.chapter01.chapter0101;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class DeclarativePrograming {
        public static void main(String[] args){
            // List에 있는 숫자들 중에서 6보다 큰 홀수들의 합계를 구하세요.
            List<Integer> numbers = Arrays.asList(1, 3, 21, 10, 8, 11);
    
            int sum = numbers.stream()
                    .filter(number -> number > 6 && (number % 2 != 0))
                    .mapToInt(number -> number)
                    .sum();
    
            System.out.println("# 선언형 프로그래밍 사용: " + sum);
        }
    }

     

    Push 방식 vs Pull 방식

    • Push 방식: 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 데이터를 보내주는 방식. 예) RTC(Real Time Communication), 소켓 프로그래밍, DB Trigger, Spring의 ApplicationEvent, Angular의 데이터 바인딩, 스마트폰의 Push 메시지
    • Pull 방식: 변경된 데이터가 있는지 요청을 보내 질의하고 변경된 데이터를 가져오는 방식. 예) 클라이언트 요청 & 서버 응답 방식의 애플리케이션, Java와 같은 절차형 프로그래밍 언어

     

    리액티브 프로그래밍 핵심 요소

    • Observable: 데이터 소스
    • 리액티브 연산자(Operators): 데이터 소스를 처리하는 함수
    • 스케쥴러(Scheduler): 스레드 관리자
    • Subscriber: Observable이 발행하는 데이터를 구독하는 구독자
    • 함수형 프로그래밍: RxJava에서 제공하는 연산자(Operator) 함수를 사용

     

    마블 다이어그램

      리액티브 프로그래밍을 통해 발생하는 비동기적인 데이터의 흐름을 시간의 흐름에 따라 시각적으로 표시한 다이어그램입니다. 리액티브 연산자의 기능이 시각화 되어 있어 이해하기 쉽습니다. 다음은 Map 연산자의 마블 다이어그램입니다. 다른 연산자는 공식 문서를 참고하시면 됩니다.

    https://reactivex.io/documentation/operators/map.html

     

    [참고 자료]

     

    반응형

    'BackEnd > RxJava' 카테고리의 다른 글

    Flowable/Observable 생성 연산자  (0) 2023.07.02
    Single, Maybe, Completable  (0) 2023.07.02
    Flowable과 Observable  (0) 2023.07.02
    Reactive Streams  (0) 2023.07.01
    RxJava 프로젝트 환경 구축  (0) 2023.07.01

    댓글

Designed by Tistory.