Transitioning to Java 9

Live Classroom
Duration: 5 days
Live Virtual Classroom
Duration: 5 days
Pattern figure


During this two day course, participants get familiarized with the most effective practices for new functional programming constructs in Java as well as new features in Java 9. Designed for developers using Java 8 currently, the course helps participants achieve the essential skills for applying the latest features and advanced capabilities of Java 9, and become an expert developer.

What You'll Learn

  • Fundamentals of Java language
  • Importance, uses, capabilities and limitations of Java
  • How to migrate existing Java applications to Java 9
  • Build modular expressions with Java
  • How to use the tools provided in Java 9 to migrate, monitor and optimize applications
  • Apply new JShell tool to test Java constructs quickly and efficiently
  • Enhance implementation of applications already using Java 8’s Stream API by utilizing the new methods in Java 9
  • Implementation of String class to decrease the memory footprint
  • Use the enhancements made to the Concurrency API, operating with CompletableFuture instead of Thread Pools


  • Introduction to Jav a9
  • Java community process (JCP)
  • JDK enhancement proposal (JEP)

  • Introduce some of the ‘smaller’ Java 9 topics
  • Java versioning
  • The JDK/JRE file structure
  • Deprecation
  • The jdeprscan tool
  • Multi-release JAR files
  • HTML 5 compliant JavaDoc

  • Changes made to the language since Java 6
  • Multi-catch
  • Using effectively final variables in try-with-resources
  • Suppressed Exceptions
  • Binary literals
  • Reserved underscore (Java 9)
  • Type inference in anonymous classes (Java 9)
  • @SafeVargs (updates in Java 9)
  • Default and static methods in interfaces (Java 8)
  • Private methods in interfaces (Java 9)

  • Factory methods for Immutable Collection types
  • takeWhile and dropWhile methods
  • The Stream Iterate and ofNullable methods

  • Problems with Classpath
  • Encapsulation and the public access modifier
  • Application memory footprint
  • Java 8’s compact profiles
  • Using internal JDK APIs

  • Introduce Project Jigsaw
  • Classpath and Encapsulation
  • The JDK internal APIs
  • Java 9 Platform modules
  • Defining application modules
  • Define module dependencies
  • Implicit dependencies
  • Implied Readability
  • Exporting packages

  • Define module requirements
  • Explain qualified exports
  • Open modules for reflection
  • Use ServiceLoader
  • This provides and uses keywords

  • Being backwards compatible
  • The ModulePath and ClassPath
  • Unnamed Modules
  • Automatic Modules
  • The JLink tool

  • Introduction to JShell
  • Running Expressions in JShell
  • Importing packages
  • Defining methods and types
  • Using the JShell editor
  • Save and loading state

  • Brief overview of Concurrency in Java
  • Overview of CompletableFuture
  • Subclassing the CompletableFuture
  • The default Executor
  • New Factory methods
  • Dealing with time-outs

  • Enhancements on the Optional class
  • Improvements made in the Process API
  • The Stack-Walking API
  • The HTTP2 Client
  • The Multi-Resolution API
  • The Reactive Flow API

  • Performance in Java 9
  • Compact Strings
  • String deduplication
  • Ahead-Of-Time Compilation
  • Hotspot Diagnostic commands
  • The G1 Garbage collector
  • Variable and Method Handles

  • Understand memory management in Java
  • Discuss the various garbage collectors
  • The Garbage-First (G1) Garbage Collector
Ripple wave

Who should attend

This is an intermediate-level Java developer course, and is highly recommended for experienced Java programmers.


Participants need to have a working knowledge of developing basic Java 8 applications.

Interested in this Course?

    Ready to recode your DNA for GenAI?
    Discover how Cognixia can help.

    Get in Touch
    Pattern figure
    Ripple wave