BEST
개발 · 프로그래밍

/

프로그래밍 언어

Kevin의 알기 쉬운 RxJava 1부

리액티브 프로그래밍이라는 진입 장벽을 넘고 싶으신가요? Kevin의 알기 쉬운 RxJava가 그 벽을 넘을 수 있는 힘을 키워드리겠습니다.

(4.9) 수강평 48개

수강생 710명

Thumbnail

초급자를 위해 준비한
[프로그래밍 언어] 강의입니다.

이런 걸
배워요!

  • 리액티브 프로그래밍의 확실한 기본기

  • 선언형 프로그래밍의 이해

  • RxJava를 사용한 비동기 프로그래밍

  • Java 함수형 인터페이스와 람다 표현식

  • 마블 다이어그램을 통한 리액티브 연산자 이해하기

  • 퀴즈를 통한 리액티브 연산자 심화 학습

리액티브 프로그래밍, 알기 쉽고 확실하게 배워보세요!

 

리액티브 프로그래밍이란 무엇일까요?

  • 좁은 의미로는 복잡한 비동기식 요청을 효과적으로 처리하기 위한 비동기 프로그래밍을 위한 API라고 할 수 있습니다.
  • 넓은 의미로는 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍 방식과 반대되는 개념인 선언형 프로그래밍의 패러다임이라고 할 수 있습니다.
  • 리액티브 프로그래밍은 클라이언트의 요청에 즉각적으로 반응하도록 설계된 리액티브 시스템에 빼놓을 수 없는 프로그래밍 모델입니다.
  • 리액티브 프로그래밍은 비동기 통신이 필요한 대부분의 개발 언어 및 프레임워크에서 폭넓게 사용을 하고 있습니다.
    ex) Angular, React 등에서의 RxJS, Java에서의 RxJava, Android 에서의 RxAndroid, Spring Framework에서 사용하는 Reactor, RxScala 등 리액티브 확장이 광범위하게 사용되고 있습니다.

 

리액티브 프로그래밍을 왜 배워야 할까요?

  • 리액티브 프로그래밍은 비동기 요청을 효과적으로 처리하기 위한 개발 패러다임이라고 말씀을 드렸습니다.
  • 오늘날의 애플리케이션은 동기적인 요청보다 비동기적인 요청을 처리하는 비중이 점점 더 높아지고 있습니다.
  • Java의 쓰레드를 사용한 비동기 프로그래밍은 복잡도가 상당히 높으며, 예상치 못한 에러가 발생할 가능성 역시 높은 것이 사실입니다.
  • 리액티브 프로그래밍은 이렇게 쓰레드를 직접적으로 사용하면서 발생하는 문제를 대신 해결해주고, 비동기 프로그래밍에 대한 복잡도를 단순화해줍니다.
  • 하지만 선언형 프로그래밍 방식에 적응하기 위한 일정 수준의 시간이 필요합니다.
  • 그래서 어느 정도의 진입 장벽이 있는 것 또한 사실입니다. 하지만 여러분들이 넘지 못할 장벽은 아니라고 생각합니다.
  • 결정적으로 리액티브 프로그래밍을 통해 여러분의 개발 스킬이 한단계 향상됨은 물론이고, 개발자로서 개발에 대한 사고 방식의 전환을 경험할 수 있는 훌륭한 계기가 될 것이라고 생각합니다. 

 

1부 강의에서는 어떤 것들을 배울 수 있을까요?

  • Kevin의 알기 쉬운 RxJava 1부에서는 제일 먼저 리액티브 프로그래밍이란 무엇인가에 대해서 쉬운 예를 들어 설명을 합니다. 어떤 프로그래밍 언어이든지 간에 해당 언어의 큰 틀 안에서의 특징을 이해하고 학습을 시작하는것은 대단히 중요하다고 생각합니다.
  • 리액티브 프로그래밍에서 빼놓을 수 없는 마블 다이어그램을 보는 방법을 그림으로 최대한 쉽게 설명을 하여 수강생들이 혼자서도 마블 다이어그램을 이해할 수 있도록 노력하였습니다.

 

[마블 다이어그램 보는 법 강의 자료 캡쳐]

 

  • RxJava는 리액티브 프로그래밍의 스펙인 Reactive Streams의 구현체인데요. 이 Reactive Streams에서 정의한 Publisher와 Subscriber 간의 동작 흐름을 그림을 통해 쉽게 이해할 수 있도록 했습니다.

 

[Publisher와 Subscriber간의 동작 흐름 강의 자료 캡쳐]

 

  • Flowable과 Observable의 결정적인 차이점인 배압(Back Pressure)에 대해서 최대한 쉽게 설명합니다.

 

[배압의 개념에 대한 강의 자료 캡쳐]

 

  • RxJava에서 사용되는 함수형 프로그래밍에 대한 기본적인 개념을 배워봅니다. Java 8에서 새롭게 도입된 함수형 인터페이스와 람다 표현식은 RxJava에서 광범위하게 사용되는 프로그래밍 기법으로 그 개념을 꼭 이해하고 넘어갈 수 있도록 기본적인 개념을 쉽게 설명합니다.
  • RxJava에서 사용되는 연산자(Operator)함수에 대해서 설명을 하고 RxJava 1부를 마무리합니다. RxJava는 연산자 함수로 시작해서 연산자 함수로 끝난다고해도 과언이 아닐 정도로 연산자 함수는 RxJava에서 가장 중요한 부분입니다. 이번 강의에서 연산자 함수의 유형별로 다양한 연산자 함수를 마블 다이어그램 함께 이해하고, 예제 코드를 직접 실행시켜보면서 각각의 연산자 함수들이 어떤 기능을 하고 어떤식으로 동작하는지 이해시켜 드릴 생각입니다.

 

저희 강의의 특징은 무엇일까요?

  • 초급자의 눈높이에 맞춰서 리액티브 프로그래밍의 핵심 개념을 최대한 쉽게 이해시키고자 노력하였습니다.
  • 단순히 강의 자료의 설명만으로 그치지 않고, 수업마다 해당 수업의 예제 코드에 대한 설명이 무조건적으로 뒤따라옵니다. 다시 말해서 강의 자료만으로 이해되지 않는 부분은 예제 코드로 구체적으로 설명하고, 예제 코드를 직접 실행해서 결과를 확인하여 이해할 수 있도록 노력하였습니다.
  • 퀴즈가 필요한 chapter에는 퀴즈를 제공하여 수강생들이 해당 강의를 복습하면서 자신의 것으로 만들 수 있는 시간을 가질 수 있도록 하였습니다.
  • 강의에서 사용한 모든 예제 코드를 github(https://github.com/ITVillage-Kevin/rxjava)에 제공하여 수강생들이 예제 코드를 직접 타이핑하고 코드를 실행하여 결과를 확인하는데 참고할 수 있도록 하였습니다.

 

강의를 듣기 전에 무엇을 준비해야 할까요?

  • 당연한 이야기이겠지만 사용하시는 PC나 노트북에 JDK 1.8 이상이 설치되어있어야 합니다.
  • 저희 강의에서는 개발 툴로 IntelliJ IDE를 사용하였습니다. 강의에서 IntelliJ를 기반으로 한 실습 환경 구축을 설명드리기는하지만 IntelliJ에 익숙하지 않으신 분들은 기존에 사용하고 계시는 IDE로 실습을 하셔도 상관은 없습니다.
  • 저희 강의를 듣기 위해서 여러분들이 준비해야하는 가장 중요한 준비물은 다름 아닌 새로운 기술을 배우고자 하는 의지와 결코 포기하지 않는 끈기입니다. ^^

여러분들의 의지와 끈기를 저에게 보여주세요. 여러분들이 RxJava의 진입장벽 위에 올라설 수 있도록 저도 최선을 다해서 도와드리겠습니다.

 

여러분들은 어떤 것들이 궁금하신가요?(Q&A)

Q. 비전공자도 들을 수 있나요?
A. 전공/비전공과는 무관합니다. Java에 대한 기본 지식이 있다면 누구나 수강 가능하다고 생각합니다. 참고로 저도 처음 시작은 비전공자였습니다. ^^

Q. RxJava를 배우면 무엇이 좋은가요?
A. 앞서 소개글에서도 말씀드렸지만 RxJava를 배우면 복잡한 비동기 프로그래밍을 단순화할 수 있으며, 덧붙여서 명령형 프로그래밍 방식이 아닌 선언형 프로그래밍을 통해 프로그래밍에 대한 사고의 전환을 할 수 있습니다. 더 나은 개발자로 성장하는것은 덤이겠죠?^^ RxJava를 학습하고 나면 리액티브 프로그래밍의 기본기를 확실히 다질 수 있기 때문에 RxJs, RxAndroid, Spring Reactor 등을 학습하기가 훨씬 수월해집니다.

Q. 강의는 어떤 방식으로 진행이 되나요?
A. 대부분의 수업이 강의 자료를 통한 개념 이해 → 예제 코드를 통해 개념을 눈으로 직접 확인하는 방식으로 진행이 되고, 퀴즈가 필요한 수업에는 수강생들이 직접 퀴즈를 풀어서 해당 수업의 내용을 자신의 것으로 만들 수 있도록 수업이 끝나기 전에 퀴즈를 제시했습니다.

Q. 강의에서 사용된 원본 예제 코드는 어디에서 다운로드받을 수 있나요?
A. 수업에서 설명하는 예제 코드는 모두 github에 올라가있으며 아래 주소에서 다운로드 받으실 수 있습니다.
• 예제 원본 소스 코드:
https://github.com/ITVillage-Kevin/rxjava

새 프로젝트를 만들어서 예제코드를 직접 타이핑 해보시는 분들은 github 예제 코드에서 common 패키지와 utils 패키지를 꼭 복사/붙여넣기 하신 후, 코드를 작성 하시길 부탁 드리겠습니다.

Q. 강의 자료는 어디에서 다운로드받을 수 있나요?
A. 각 섹션의 수업마다 수업에 사용한 강의 자료를 첨부 파일로 등록해 두었으니 필요하신 분은 다운로드 받아서 참고하시면 되겠습니다.

Q. 강의 자료 이외에 추천해주실 만한 참고 자료가 있을까요?
A. 리액티브 프로그래밍을 학습하는 데 있어 도움이 될만한 사이트는 아래에서 확인하시면 되겠습니다.

http://reactivex.io/ 
리액티브 프로그래밍의 공식 사이트로 리액티브 프로그래밍의 기본기를 다지고 난 후에 참고하기 정말 좋은 사이트라고 생각합니다.

https://github.com/reactive-streams/reactive-streams-jvm
RxJava는 Reactive Streams를 구현한 구현체라고 할 수 있는데요. 이 Reactive Streams의 스펙을 정의해 둔 github 공식 자료입니다.

https://gist.github.com/casamia918/93b8db69beb9ee06b92a96b2a234d48e
리액티브 프로그래밍에 대해서 한국어로 잘 번역된 github 자료인데요. 한국어로 번역해주셔서 너무 감사하다는 말씀 전하고 싶네요.

https://rxmarbles.com/
리액티브 프로그래밍의 핵심중에 핵심이라고 할 수 있는 연산자(Operator)들을 마블 다이어그램으로 잘 정리해 놓은 자료입니다.

http://reactivex.io/RxJava/2.x/javadoc/
마지막으로 RxJava의 공식 javadoc 문서입니다. 2020년 현재 RxJava 3.0이 릴리즈되었기는 하나 3.0에서는 새로운 연산자 함수들이 많이 추가되었다고 단순하게 생각하시고 2.x 버전으로 개념을 확실히 잡은 다음에 3.0으로 넘어가는 게 좋을 것이라고 생각됩니다.

 

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • Java의 비동기 프로그래밍을 쉽게 구현하고 싶은 분들

  • 선언형 프로그래밍 방식을 쉽게 이해하고 싶은 분들

  • 리액티브 프로그래밍이라는 진입 장벽을 넘어보고 싶은 분들

  • Spring Boot에서 Reactor, WebFlux를 더 잘 활용하기 위해 리액티브 프로그래밍의 기본기를 확실히 다지고 싶은 분들

  • [Kevin의 알기 쉬운 Java 개발자 로드맵 이야기] 강의를 기억해주시는 분들

선수 지식,
필요할까요?

  • Java

  • 동기 프로그래밍과 비동기 프로그래밍의 차이

안녕하세요
Kevin입니다.

- 주력 언어 또는 기술 : Java, Spring Framework, RxJava, Reactor, Spring WebFlux

- (주)코드스테이츠(https://www.codestates.com)에서 Senior Educational Software Engineer(Backend)로 활동
(From 2022.03 To 2024.01.31)

- 프리랜서 개발자 및 강사로 활동(From 2024.02)

- 저서

안녕하세요? Kevin이라고 합니다. ^^

인프런에서 이렇게 강사로서 여러분들을 만나게 되어서 너무 반갑습니다.

어떤 분야든 마찬가지겠지만 특히나 소프트웨어 개발자는 끊임없이 변화하는 트렌드에 뒤처지지 않도록 항상 자기 자신을 갈고 닦는것이 개발자로써 살아남는 유일한 방법이라고 생각하며 항상 배우는 자세로 즐겁게 소프트웨어 개발을 하고 있는 개발자 중 한 명입니다.

제가 가지고 있는 지식과 경험이 다른 분들에게 조금이나마 도움이 되기를 바라면서 인프런에서 강좌를 시작하였습니다.

앞으로 수강생분들에게 현실적으로 도움이 되는 다양한 강좌로 꾸준히 찾아뵙도록 하겠습니다. 감사합니다.

 

질문이나 의견은 언제든지 환영하니, 이메일(it.village.host@gmail.com)로 편하게 얘기해주세요.

 

커리큘럼

전체

18개 ∙ (7시간 30분)

수업 자료

가 제공되는 강의입니다.

  • 리액티브 스트림즈(Reactive Streams)란?

    17:53

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!