O'Reilly logo
live online training icon Live Online training

What's New In Java

The quick guide to Java's newest features

Ken Kousen

In the fall of 2017, Oracle released Java 9 and adopted a six-month release schedule, addressing the language's reputation as old, mature, and unchanging. Now new features can be tried quickly, and if a feature isn't quite ready for the current release, the next release isn't that far away. While this helps the Java team, the situation is more difficult for Java users and adopters, because just as a company has stabilized on a particular version, the next one is right around the corner. In light of these developments, it's critical that Java developers be aware of what new features have been added to Java and, possibly more important, what is scheduled for removal.

What you'll learn-and how you can apply it

By the end of this live, online course, you’ll understand:

  • How the newest features of Java have been incorporated into the language
  • The intended use cases driving adoption
  • Where to find documentation and demos for the new features

And you’ll be able to:

  • Use the latest versions of Java
  • Evaluate features like functional programming, modularization, and local variable type inference in order to decide on adoption
  • Plan for future releases based on features in progress

This training course is for you because...

  • You're a Java developer who needs to know what new features have been added in the last few releases.
  • You need to maintain Java installations in a commercial environment and have to decide whether or not an upgrade is worth it.
  • You're a developer in another JVM-based language who wants to know how the underlying Java Virtual Machine has changed.

Prerequisites

  • A working knowledge of Java 7 or above

Recommended preparation:

Recommended follow-up:

About your instructor

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

Overview (15 minutes)

  • Lecture: The new release schedule for Java; differences between the Oracle JDK and the open source version; where to find the latest JSRs and discussions

Lambda expressions and method references (30 minutes)

  • Lecture: Functional programming concepts; syntax for lambdas; replacing anonymous inner classes; method reference syntax

Break (10 minutes)

Static and default methods in interfaces (30 minutes)

  • Lecture: Implementing default methods; new static methods in the standard library; overriding default methods; private methods in interfaces

Java Streams (30 minutes)

  • Lecture: The Stream interface; stream processing methods; map, filter, and reduce; using collectors

Break (10 minutes)

The Optional data type (15 minutes)

  • Lecture: Wrapping values in Optional<T>; processing Optional using orElse, orElseGet, and orElseThrow; differences between map and flatMap

The Java Platform Module System (30 minutes)

  • Lecture: Modularization; requiring and exporting modules; the Java library modules; modularization in the open source world

Break (10 minutes)

Local variable type inference (15 minutes)

  • Lecture: The new var "reserved type name"; rules for var usage; recommended practices

JShell: The interactive Java shell (15 minute)

  • Lecture: Using JShell; defining methods and properties; working with external editors; saving and restoring Java "scripts"

Miscellaneous changes (30 minutes)

  • Lecture: Try-with-resources; collection factory methods; the @Deprecated annotation; using @SafeVarargs; HTTP 2 client; upcoming features