
This video provides an overview of the entire course.
This video covers downloading and installing the required software and setup.
What is functional programming and what are its origins?
What are the new capabilities of Java interfaces?
What is a functional interface?
What is the basic syntax for lambda expressions?
What is type inference and how does it apply to lambda expressions?
What variables can lambda expressions access?
What are method references?
What are the functional interfaces that were already present in Java 7?
What functional interfaces were added to Java 8?
Are there functional interfaces whose arguments and return types are primitive types?
Can we implement a functional interface by composing simple objects?
What is a stream? How does it relate to collections and iterators?
How can you create a stream?
What do we mean by “lazy operations” and “lazy evaluation”?
What is a monad? In what sense are streams monads?
How can we select or discard specific elements from a stream?
How can I manipulate stream elements? How can I sort a stream?
How can I terminate a stream? How can I summarize a stream into a single object?
What if standard terminal operations do not fit my needs? How can I define a custom terminal operation?
Can we avoid wrapping and unwrapping operations when dealing with primitive types?
How can we create a parallel stream? What is a stateless function and how does it help achieve correct and efficient parallel execution of stream pipelines?
How do different stream sources and operations behave under parallel execution?
How are parallel streams implemented under the hood? What are the functionalities of the fork-join framework?
How do 2-dimensional games detect collisions between game objects? How can we exploit functional-style programming to improve the performance of collision detection algorithms?
How can we further speed up collision detection? How can we build a stream of collisions from a stream of shapes? Is it beneficial to turn every stream into a parallel stream?
This video gives overview of the entire course.
Why do we need reactive programming? What problems is it trying to solve? What are the benefits?
In this video we're going to introduce reactive programming and understand what it is.
Why do we need reactive programming? What problems is it trying to solve? What are the benefits?
In this video, we're going to see the different elements involved in reactive programming, the principles of it and how we can use it in Java.
Reactive programming is a broad term, that's why Reactive Streams comes to standardize the way different implementations should communicate between them.
Java 9 comes with a bunch of new features. Do you want to know what is new and what has been deprecated?
In this video we're going to learn how Java 9 supports reactive programming natively and see our first Reactive Programming example.
Have you heard of functional reactive programming? What does it mean? How are reactive and functional programming related to each other?
In this video we're going to introduce RxJava so you know a bit more about it.
How does Back Pressure affect us in RxJava 2.0? How can we deal with it?
In this video we're going to learn how RxJava 2.0 implements the Reactive Streams specifications. How does it affect RxJava1.x?
What is an operator? How we can use them? Why do we need Marble Diagrams?
What operators can we use in RxJava 2.0?
What operators can we use in RxJava 2.0?
In this video we're going to see the different ways we have to create Sources of Information in RxJava 2.0
It's time to talk about how we can observe sources of information in RxJava 2.0.
The aim of this video is to add a video with autoplay in the background.
How can we unit-test our reactive code? What tools do we have available?
In this video we're going to introduce Akka and Akka Streams.
How can we use Akka for are active application? In this video we show the entities we have available.
After knowing how we can use Akka in a reactive environment, how can we make it more powerful with endless possibilities?
Once we know how to use Akka in a reactive way, we need to cover errors to make our code rock solid. What can we do with it?
In this video, we're going to cover the basics of RESTful web services, Spring and Jersey.
New to JAX-RS? Let's create a simple Hello World web application.
Let's start coding complex logic. It's time to communicate with external APIs and handle it with RxJava.
We got the information we needed from an external API. How can we respond to the client with the information they need?
We have our web application up and working but it's not covered with unit tests. Let's add some tests covering reactive code in this video!
If you’re a programmer who wants to stay updated according to the industry standards, then this Learning Path is for you.
Java 9 is the most recent update to the list of Java languages. Java 9 is the successor of Java 8 and this version is making a lot of developers happy due to a variety of reasons. Java 9 incorporates a plethora of new changes like the Java platform module system, restructuring the JDKs and JREs runtime modules, defining a new URI scheme for naming modules, classes, and so on.
In this Learning Path, you will learn functional and reactive programming using Java 9. functional programming includes the introduction to functional Programming and installation.
Application development with Java 9 can be summarized in these words:
More Power; Less Code.
Under reactive programming, you will get to learn about the basics of reactive programming and understand the Flow API. You will also get to learn about the various operators, and learn about the unit and concurrency testing used in reactive programming. You will also learn about Lambda expressions, Stream operations, sequential data processing and parallel streams.
By the end of this Learning Path, you will be able to successfully write powerful functional and reactive programs with the help of Java 9.
About the Author:
For this course, we have combined the best works of this esteemed author:
Marco Faella is a professor of Computer Science at the University of Naples "Federico II", Italy. He has taught classes on Java programming, compiler construction, and software engineering to undergraduate and graduate students since 2005. He is the author of over 50 scientific publications in international conferences and journals. He has also developed scientific software in C++, OCaml, Python, and Java. Marco is fluent in C, C++, OCaml, Python, and Java and has contributed to the Parma Polyhedra Library, a well-known scientific library for the symbolic manipulation of polyhedra.
Manuel Vicente Vivo is a Senior Associate Software Engineer at Capital One. He is involved in all kind of decisions regarding the Mobile product. He had an opportunity to do some API and Mobile development (both Android and iOS) and automation testing and also wrote few articles about RxJava (1 and 2) that are quite popular. He is interested in functional programming. Manuel has spoken in conferences about Rx Java. He always looks for perfection, and he believes that having an application that is well tested and with a really defined structure makes a huge difference.