Understanding Reactive Operators Through Marble Diagrams
In-depth Learning of Reactive Operators Through Quizzes
Reactive programming , learn it easily and clearly!
What is reactive programming?
In a narrow sense, it can be said to be an API for asynchronous programming to effectively handle complex asynchronous requests.
In a broad sense, it can be said to be a paradigm of declarative programming, which is the opposite of imperative programming, which specifically states the actions to be performed.
Reactive programming is an essential programming model for reactive systems that are designed to respond immediately to client requests.
Reactive programming is widely used in most development languages and frameworks that require asynchronous communication. ex) Reactive extensions are widely used, such as RxJS in Angular, React, RxJava in Java, RxAndroid in Android, and Reactor and RxScala used in the Spring Framework.
Why should you learn reactive programming?
I told you that reactive programming is a development paradigm for effectively handling asynchronous requests.
Today's applications increasingly handle asynchronous requests rather than synchronous ones.
It is true that asynchronous programming using Java's threads is quite complex and has a high possibility of unexpected errors occurring.
Reactive programming solves the problems that arise when using threads directly and simplifies the complexity of asynchronous programming.
However, it takes some time to get used to the declarative programming style.
So it's true that there is a certain level of barrier to entry, but I don't think it's an insurmountable barrier.
I believe that reactive programming will not only help you improve your development skills to the next level , but will also be a great opportunity for you as a developer to experience a change in your way of thinking about development .
What can I learn in Part 1 of this lecture?
In Kevin's Easy to Understand RxJava Part 1, he first explains what reactive programming is with an easy example. I think it is very important to start learning any programming language by understanding its features within the big picture.
We have tried to explain in pictures as easily as possible how to view marble diagrams, which are essential in reactive programming, so that students can understand marble diagrams on their own.
[Capture of lecture material on how to read Marvel diagrams]
RxJava is an implementation of Reactive Streams, a specification for reactive programming. The flow of operations between Publishers and Subscribers defined in Reactive Streams is illustrated in a diagram to make it easier to understand.
[Capture of lecture material on the flow of operations between publisher and subscriber]
I will explain the crucial difference between Flowable and Observable, Back Pressure, as simply as possible.
[Capture of lecture material on the concept of back pressure]
Learn the basic concepts of functional programming used in RxJava. Functional interfaces and lambda expressions, newly introduced in Java 8, are programming techniques widely used in RxJava. We will explain the basic concepts in an easy-to-understand manner so that you can understand and move on.
We will explain the operator functions used in RxJava and conclude Part 1 of RxJava. It is no exaggeration to say that RxJava starts and ends with operator functions, as operator functions are the most important part of RxJava. In this lecture, we will understand various operator functions by type with a marble diagram, and we will understand what each operator function does and how it works by directly executing example code.
What are the features of our course?
We have tried to make the core concepts of reactive programming as easy to understand as possible for beginners.
It doesn't just stop at explaining the lecture materials, but also unconditionally follows each class with an explanation of the example code for that class. In other words, we tried to explain in detail with example code any parts that are not understood from the lecture materials alone, and to make it easier for you to understand by running the example code yourself and checking the results.
In chapters that require quizzes, we provide quizzes so that students have time to review and make the lecture their own.
All example codes used in the lecture are provided on github ( https://github.com/ITVillage-Kevin/rxjava ) so that students can directly type in the example codes and run the codes to check the results.
What should I prepare before attending the lecture?
Of course, you need to have JDK 1.8 or higher installed on your PC or laptop.
In our lecture, we used IntelliJ IDE as a development tool. Although we explain how to set up a practical environment based on IntelliJ in the lecture, those who are not familiar with IntelliJ can practice with the IDE they are currently using.
The most important thing you need to prepare to attend our lectures is none other than the will to learn new skills and the perseverance to never give up. ^^
Show me your will and perseverance, and I will do my best to help you overcome the barrier to entry of RxJava.
What are you curious about? (Q&A)
Q. Can non-majors also take the course? A. It doesn't matter whether you are a major or not. I think anyone with basic knowledge of Java can take the course. By the way, I also started out as a non-major. ^^
Q. What are the benefits of learning RxJava? A. As I mentioned in the introduction, learning RxJava can simplify complex asynchronous programming, and in addition, it can change the way you think about programming through declarative programming rather than imperative programming. Growing into a better developer is a bonus, right? ^^ After learning RxJava, you will be able to solidify the basics of reactive programming, so it will be much easier to learn RxJs, RxAndroid, Spring Reactor, etc.
Q. How are the lectures conducted? A. Most classes proceed in a way that students first understand the concepts through lecture materials → then directly confirm the concepts with their own eyes through example codes. For classes that require quizzes, quizzes are given before the end of the class so that students can make the content of the class their own by solving the quizzes themselves.
Q. Where can I download the original example code used in the lecture? A. All example codes explained in class are uploaded to GitHub and can be downloaded from the address below. • Original example source code:https://github.com/ITVillage-Kevin/rxjava
If you are creating a new project and typing in the example code yourself, please make sure to copy/paste the common package and utils package from the github example code and then write the code.
Q. Where can I download lecture materials? A. For each class in each section, we have attached the lecture materials used in the class. If you need them, you can download them and refer to them.
Q. Are there any reference materials you would recommend other than the lecture materials? A. Here are some sites that will help you learn reactive programming.
• http://reactivex.io/ This is the official site for reactive programming, and I think it's a really good site to refer to after learning the basics of reactive programming.
• https://github.com/reactive-streams/reactive-streams-jvm RxJava can be said to be an implementation that implements Reactive Streams. This is the official github material that defines the specifications of Reactive Streams.
• https://rxmarbles.com/ This is a well-organized marble diagram of operators, which are the core of reactive programming.
• http://reactivex.io/RxJava/2.x/javadoc/ Finally, here is the official javadoc documentation for RxJava. As of 2020, RxJava 3.0 has been released, but many new operator functions have been added in 3.0, so I think it would be better to simply think of it as a 2.x version that solidifies the concept and then move on to 3.0.
Recommended for these people
Who is this course right for?
For those who want to easily implement asynchronous programming in Java
For those who want to easily understand declarative programming
For those who want to overcome the barrier to entry that is reactive programming.
For those who want to solidify their understanding of the fundamentals of reactive programming to better utilize Reactor and WebFlux in Spring Boot.
For those who remember the [Kevin's Easy Java Developer Roadmap] lecture
Need to know before starting?
Java
The difference between synchronous and asynchronous programming
Hello This is
6,287
Learners
231
Reviews
107
Answers
4.8
Rating
6
Courses
- 주력 언어 또는 기술 : Java, Spring Framework, RxJava, Reactor, Spring WebFlux
- (주)코드스테이츠(https://www.codestates.com)에서 Senior Educational Software Engineer(Backend)로 활동 (From 2022.03 To 2024.01.31)
Hello! I am the instructor. This is my first time leaving a review after taking a class. ^^ Although I created the course, I took it all the way through, so I will leave an objective and subjective review regardless of the rating. I almost removed most of the noise from the microphone, but there was still some noise from my own speech. ^^; I will try to improve as I create new courses, so I would appreciate your generous understanding. In my personal opinion, I think this is a good course to learn the concept of reactive programming, and I think it is a good course to listen to in advance to use WebFlux in Spring, the trend in Java development. ^^ I will occasionally talk about Reactor and WebFlux in the [News] notice. See you again in class, students! ^^;;
This is a good lecture where you can practice using various operators used in Observable of reactiveJAVA with examples and actual usage. If you just learn the examples provided here well and build up references, you will be able to use them usefully in real life.
I've read a lot of other books to understand RxJava, but I couldn't understand the translated books at all, so I only studied through the documents..
This lecture is really well-structured. I think it's a great lecture to shorten the time for those who study while looking at the documents.!!
I wish there were more reinforced lecture content for RxKotlin!!
I'm glad to hear that it was helpful. I think that the concept of grasping the big picture is really important for any technology, so I tried my best to organize it so that it would be as easy to understand as possible. ^^ I think that the application after that is up to the students. I'm sure they'll do better than me. Thank you.
The lecture helped me a lot in understanding RxJAVA.
In each lecture, there is a beginning and end, an explanation of the next lecture, easy and core explanations and lecture materials, example codes, etc., so I thought that you prepared a lot while taking the lecture.
In particular, the explanation of the operator used virtual data that could actually occur, so it was very helpful to imagine in which situations the operator would be good to use.
I am still confused about why the producer and consumer have subscribe at the same time, so I will pay attention to that part when I watch the lecture again.
Thank you for providing a great lecture.
One of the biggest goals in making this course was to help you easily get started with reactive programming, and I'm so happy that you understand my intentions exactly. ^^;; I'm so glad it was helpful. In the real world, producers and consumers are mostly separated, but in the software world, it's natural that it's not familiar to subscribe and receive data through the producer's object. I'd like to tell you that this part will become a little clearer if you come across server/client communication using reactive programming. I'm so glad that you were able to take a step into reactive programming. See you again. Thank you~
Teacher! Thank you for the great lecture.
It was very helpful because you explained difficult content in an easy-to-understand way.
Thanks to you, I am learning a lot.