반응형프로그래밍입문 1회 20161003

17
유유유 유유유 유유유유유 유유 (1 유 ) 1 2016.10.3

Transcript of 반응형프로그래밍입문 1회 20161003

Page 1: 반응형프로그래밍입문 1회 20161003

1

유동환 반응형 프로그래밍 입문 (1 회 )

2016.10.3

Page 2: 반응형프로그래밍입문 1회 20161003

2

오늘의 주제1. 반응형 프로그래밍이란 무엇인가 ?

2. 기존의 프로그래밍과 어떻게 다른가 ? ( 간단한 역사 )

3. RxJava 코드는 공부해야 하나 ?

Page 3: 반응형프로그래밍입문 1회 20161003

3

#1 반응형 프로그래밍• 위키 피디아 [링크]

In computing, reactive programming is a program-ming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model will automati-cally propagate changes through the data flow.

프로그래밍을 데이터의 흐름과 그 변화를 알려주는 통지(notification) 으로 바라보는 관점 (paradigm)

Page 4: 반응형프로그래밍입문 1회 20161003

4

#1 반응형 프로그래밍 ( 계속 )• 명령형 프로그래밍 (imperative programming) 의 반대말

C/C++ , Java 와 같은 객체 지향 언어에서는 제어문 (if, while, for 등 ) 을 가지고 동작의 순서를 기술한다 .

예를 들어 a = b + c 문장에서 덧셈의 결과가 a 에 할당된 후에는 b 와 c 각각이 변하여도 a 의 값은 변경되지 않는다 .

반응형 프로그래밍에서는 b 와 c 의 값이 변하면 a 가 자동으로 변경된다 . ( 마치 엑셀 cell 처럼 )

출처 : 위키피디아 https://en.wikipedia.org/wiki/Reactive_programming

Page 5: 반응형프로그래밍입문 1회 20161003

5

#1 반응형 프로그래밍 ( 계속 )• 원래 interactive 한 UI 를 단순화 하기 위해서 고안됨 . 하지만 일반적인 프로그래밍 패러다임 .

• 예 ) MVC 패턴에서 모델이 변경되면 그에 따르는 View가 함께 변경되고 , View 가 변경되면 모델에 바로 반영되도록 함

출처 : 위키피디아 https://en.wikipedia.org/wiki/Reactive_programming

Page 6: 반응형프로그래밍입문 1회 20161003

6

#1 반응형 프로그래밍 ( 계속 )• 접근법

1. 기존 명령형 언어 : C/C++ 등 ) 2. 객체 지향 언어 : Java, C#, JavaScript, Python 등3. 함수형 언어 : Scala 등 에서 모두 구현할 수 있음

[ 오해 #1] 함수형 언어에서만 반응형 프로그래밍을 할 수 있는 것은 아님

출처 : 위키피디아 https://en.wikipedia.org/wiki/Reactive_programming

Page 7: 반응형프로그래밍입문 1회 20161003

7

#2 ReactiveX

ReactiveX 는 Observer 패턴 , Iterator 패턴과 함수형 프로그래밍을 사용하여 반응형 프로그래밍을 구현한 오픈소스 라이브러리의 모음 RxJava, RxJS, Rx.NET( 원조 ), RxScala, RxClojure, RxSwift

출처 : reactivex.io

Page 8: 반응형프로그래밍입문 1회 20161003

8

#2 ReactiveX( 이하 Rx)

출처 : reactivex.io

Rx 의 공식 : 생성하고 , 조합하고 , 구독한다

Page 9: 반응형프로그래밍입문 1회 20161003

9

#2 ReactiveX( 이하 Rx)

출처 : reactivex.io

이제부터는 RxJava 에 대해서 다룹니다 .

Page 10: 반응형프로그래밍입문 1회 20161003

10

#3 RxJava 의 원조

출처 : RxJava Essentials

“ 함수형 반응형 프로그래밍 (functional reactive pro-gramming) 은 90 년대 후반에 생겨난 개념으로 , 컴퓨터 과학자인 에릭 마이어 (Erik Meijer) 는 FRP 에서 영감을 얻어 마이크로소프트의 Rx 라이브러리를 설계하고 개발했다 (22p)”

“Rx 는 마이크로소프트 .NET 의 Reactive Extension이다 . Rx 는 Observable Sequence 로 비동기와 이벤트 기반의 프로그램을 개발하는 손쉬운 방법을 제공한다(22p)”

Page 11: 반응형프로그래밍입문 1회 20161003

11

“2012 년 넷플릭스 (Netflix) 는 자신들의 설계가 자사가 보유한 사용자의 데이터를 처리하는데 어려움을 겪고 있다는 사실을 알게 됬다 . 넷플릭스는 REST 호출 횟수를 줄이기 위해 설계를 재구성하기로 결심했다 . (23p)”

“ 넷플릭스는 여러 REST 호출을 가지고 클라이언트에게 필요한 만큼의 데이터를 처리하도록 시키는 대신에 , 클라이언트의 필요에 기반을 둔 하나의 최적화된 REST 호출을 만들기로 했다 . (23p)”

“ 이러한 목표를 달성하기 위해 닷넷의 Rx 를 JVM 으로 이식 (23p)”

#3 RxJava 의 역사

출처 : RxJava Essentials

Page 13: 반응형프로그래밍입문 1회 20161003

13

build.gradle 에 다시 추가하기• Java8 을 사용하기 위해서는Jack 빌드를 enable시켜야 함 .

• 안하면 발생하는 에러

#4 RxJava 시작하기

출처 : https://brunch.co.kr/@yudong/34

Page 14: 반응형프로그래밍입문 1회 20161003

14

초간단 코딩

실행결과

#4 RxJava 시작하기

출처 : https://brunch.co.kr/@yudong/34

Page 17: 반응형프로그래밍입문 1회 20161003

17

마치며

2 회부터는 아래 코드의 세부 내용에 대해서 알아보겠습니다 .