Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Learning path: Java 9: Programming with Java 9
Rating: 4.0 out of 5(30 ratings)
213 students

Learning path: Java 9: Programming with Java 9

Incorporate the most recent version of Java by learning to code using Java 9
Last updated 7/2017
English

What you'll 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

Course content

2 sections55 lectures7h 39m total length
  • The Course Overview4:26

    This video provides an overview of the entire course.

  • Installation and Setup4:30

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

  • What Is Functional Programming?9:13

    What is functional programming and what are its origins?

  • Interfaces Get a Boost8:31

    What are the new capabilities of Java interfaces?

  • Some Interfaces Are More Functional Than Others6:01

    What is a functional interface?

  • Writing Your First Lambda Expression9:00

    What is the basic syntax for lambda expressions?

  • Typing Lambda Expressions7:29

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

  • Capturing Values12:04

    What variables can lambda expressions access?

  • Method References13:35

    What are method references?

  • Pre-Existing Functional Interfaces9:09

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

  • New Functional Interfaces12:01

    What functional interfaces were added to Java 8?

  • Functional Interfaces for Primitive Types6:43

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

  • Composing Functions10:57

    Can we implement a functional interface by composing simple objects?

  • Comparing Streams, Collections, and Iterators11:32

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

  • Creating a Stream9:00

    How can you create a stream?

  • Understanding Lazy Evaluation10:18

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

  • Streams as Monads11:23

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

  • Filtering Stream Elements14:53

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

  • Transforming and Rearranging Stream Elements9:00

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

  • Basic Terminal Operations13:48

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

  • Reductions and Collectors26:19

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

  • Streams of Primitive Types8:22

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

  • Recognizing and Avoiding Statefulness and Side Effects18:39

    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?

  • Using Parallel Streams10:15

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

  • Looking Under the Hood: The fork-join Framework7:06

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

  • 2D Collision Detection17:06

    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?

  • Two-Phase Collision Detection21:33

    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?

Requirements

  • Basic knowledge about Java and its previous versions is required to excel in this Learning Path.

Description

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 this course is for:

  • A programmer or an enthusiast wanting to learn all the new and updated aspects of the Java programming language.