Learning path: Java 9: Programming with Java 9
4.0 (1 rating)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
63 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learning path: Java 9: Programming with Java 9 to your Wishlist.

Add to Wishlist

Learning path: Java 9: Programming with Java 9

Incorporate the most recent version of Java by learning to code using Java 9
4.0 (1 rating)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
63 students enrolled
Created by Packt Publishing
Last updated 7/2017
Current price: $12 Original price: $200 Discount: 94% off
3 days left at this price!
30-Day Money-Back Guarantee
  • 7.5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion

Training 5 or more people?

Get your team access to Udemy's top 2,000 courses anytime, anywhere.

Try Udemy for Business
What Will I Learn?
  • Learn the functional aspects of Java 9 programming
  • Learn about the Reactive aspects of Java 9 programming
  • Learn about the latest Lambda expressions
  • Learn about the new Stream operators
View Curriculum
  • Basic knowledge about Java and its previous versions is required to excel in this Learning Path.

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.

Who is the target audience?
  • A programmer or an enthusiast wanting to learn all the new and updated aspects of the Java programming language.
Compare to Other Java Courses
Curriculum For This Course
55 Lectures
Functional Programming with Streams in Java 9
27 Lectures 05:02:53

This video provides an overview of the entire course.

Preview 04:26

This video covers downloading and installing the required software and setup.

Installation and Setup

What is functional programming and what are its origins?

What Is Functional Programming?

What are the new capabilities of Java interfaces?

Interfaces Get a Boost

What is a functional interface?

Some Interfaces Are More Functional Than Others

What is the basic syntax for lambda expressions?

Preview 09:00

What is type inference and how does it apply to lambda expressions?

Typing Lambda Expressions

What variables can lambda expressions access?

Capturing Values

What are method references?

Method References

What are the functional interfaces that were already present in Java 7?

Preview 09:09

What functional interfaces were added to Java 8?

New Functional Interfaces

Are there functional interfaces whose arguments and return types are primitive types?

Functional Interfaces for Primitive Types

Can we implement a functional interface by composing simple objects?

Composing Functions

What is a stream? How does it relate to collections and iterators?

Preview 11:32

How can you create a stream?

Creating a Stream

What do we mean by “lazy operations” and “lazy evaluation”?

Understanding Lazy Evaluation

What is a monad? In what sense are streams monads?

Streams as Monads

How can we select or discard specific elements from a stream?

Preview 14:53

How can I manipulate stream elements? How can I sort a stream?

Transforming and Rearranging Stream Elements

How can I terminate a stream? How can I summarize a stream into a single object?

Basic Terminal Operations

What if standard terminal operations do not fit my needs? How can I define a custom terminal operation?

Reductions and Collectors

Can we avoid wrapping and unwrapping operations when dealing with primitive types?

Streams of 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?

Preview 18:39

How do different stream sources and operations behave under parallel execution?

Using Parallel Streams

How are parallel streams implemented under the hood? What are the functionalities of the fork-join framework?

Looking Under the Hood: 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?

Preview 17:06

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?

Two-Phase Collision Detection
Reactive Java 9
28 Lectures 02:36:23

This video gives overview of the entire course.

Preview 03:49

Why do we need reactive programming? What problems is it trying to solve? What are the benefits?

Installing R

In this video we're going to introduce reactive programming and understand what it is.

What is Reactive Programming?

Why do we need reactive programming? What problems is it trying to solve? What are the benefits?

Benefits of Reactive Programming

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 Explained in a Simple Way

Reactive programming is a broad term, that's why Reactive Streams comes to standardize the way different implementations should communicate between them.

Reactive Streams

Java 9 comes with a bunch of new features. Do you want to know what is new and what has been deprecated?

Preview 09:26

In this video we're going to learn how Java 9 supports reactive programming natively and see our first Reactive Programming example.

Flow API

Have you heard of functional reactive programming? What does it mean? How are reactive and functional programming related to each other?

Functional Programming

In this video we're going to introduce RxJava so you know a bit more about it.

Preview 02:25

How does Back Pressure affect us in RxJava 2.0? How can we deal with it?

Back Pressure

In this video we're going to learn how RxJava 2.0 implements the Reactive Streams specifications. How does it affect RxJava1.x?

Reactive Streams Implementation

What is an operator? How we can use them? Why do we need Marble Diagrams?

Marble Diagrams

What operators can we use in RxJava 2.0?

Operators 1/2

What operators can we use in RxJava 2.0?

Preview 03:47

In this video we're going to see the different ways we have to create Sources of Information in RxJava 2.0

Creating Sources

It's time to talk about how we can observe sources of information in RxJava 2.0.

Observing Sources

The aim of this video is to add a video with autoplay in the background.

Preview 05:01

How can we unit-test our reactive code? What tools do we have available?

Unit Testing

In this video we're going to introduce Akka and Akka Streams.

Preview 04:02

How can we use Akka for are active application? In this video we show the entities we have available.

Reactive Concepts

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?

Error Handling

In this video, we're going to cover the basics of RESTful web services, Spring and Jersey.

Preview 05:17

New to JAX-RS? Let's create a simple Hello World web application.

Importing Libraries and the Project Setup

Let's start coding complex logic. It's time to communicate with external APIs and handle it with RxJava.

Communicating with External APIs

We got the information we needed from an external API. How can we respond to the client with the information they need?

Responding to the Client

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!

Unit Testing
About the Instructor
Packt Publishing
3.9 Average rating
8,274 Reviews
59,266 Students
687 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.