Transitioning From Java 7 to Java 9 (TT2179) Course Details:

Transitioning from Java 7 to Java 9 is a four-day, hands-on fast-track course geared for developers who have prior working knowledge of earlier versions of Java.  Throughout the course students learn the best practices for taking advantage of the functional programming constructs introduced in Java 8, the Java Module system introduced in Java 9, as well as other new features in this two major update to the Java programming language. Students who attend Transitioning From Java 7 to Java 9 will leave this course armed with the required skills to develop maintainable code that easily scales into multi-core environments. Geared for developers currently working in Java 9 who need to migrate their skills or applications to Java 9, this course will teach students everything they need to successfully master and implement the latest features and benefits of Java 9 and become an effective Java 9 developer.

    No classes are currenty scheduled for this course.

    Call (919) 283-1674 to get a class scheduled online or in your area!

Session: Evolving Interfaces

Lesson: Evolving Interfaces

  • Interfaces in Java 8
  • Default methods
  • Static methods
  • Multiple Inheritance?

Session: Lambda Expressions; Collections and Streams

Lesson: Introduction to Lambda Expressions

  • Functional vs OO Programming
  • Anonymous Inner-classes
  • Lambda Expression Syntax
  • Functional Interfaces
  • Method references
  • Constructor references

Lesson: Java 8 Collection Updates

  • Introduce the ConcurrentHashMap
  • Lambda expressions and Collections

Lesson: Streams

  • Processing Collections of data
  • The Stream interface
  • Reduction and Parallelism
  • Filtering collection data
  • Sorting Collection data
  • Map collection data
  • Find elements in Stream
  • Numeric Streams
  • Create infinite Streams
  • Sources for using Streams

Lesson: Collectors

  • Creating Collections from a Stream
  • Group elements in the Stream
  • Multi-level grouping of elements
  • Partitioning Streams

Session: Additional Java 8 Enhancements

Lesson: The new Date/Time API

  • Introduce the new Date/Time API
  • LocalDate, LocalDateTime, etc.
  • Formatting Dates
  • Working with time zones
  • Manipulate date/time values

Lesson: Optional

  • Introduce Optional
  • Implement Optional attributes
  • Lambda expressions and Optional

Lesson: Other new Java 8 features

  • StringJoiner
  • Repeating and Type Annotations
  • Parallel Array Sorting
  • Improved type inference
  • Method parameter reflection
  • Updated command line tooling

Lesson: Java 8 Concurrency Updates

  • The common thread pool
  • Atomic variables
  • LongAdder and LongAccumulator
  • CompletableFuture
  • Non-blocking asynchronous tasks

Session: Java 9

Lesson: Introduction to Java 9

  • Introduction to Java 9
  • Java Community Process (JCP)
  • JDK Enhancement Proposal (JEP)

Lesson: New in Java 9

  • 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

Lesson: Milling Project Coin

  • 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)

Lesson: Collection and Stream Updates

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

Session: The Java Module system (Jigsaw)

Lesson: Why JigSaw?

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

Lesson: Introduction to the Module System

  • 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

Lesson: The Module Descriptor

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

Lesson: Working with Modules

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

Session: JShell

Lesson: JShell

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

Session: More Java 9

Lesson: Concurrency Updates in Java 9

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

Lesson: Other New Java 9 Features

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

Lesson: Performance Optimizations

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

Lesson: Memory Management

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

*Please Note: Course Outline is subject to change without notice. Exact course outline will be provided at time of registration.

Working within in an engaging, hands-on learning environment, guided by our expert team, attendees will learn to:

  • Understand not only the fundamentals of the Java language, but also its importance, uses, strengths and weaknesses
  • What functional programming means and what it brings to the table
  • How Lambda expressions and functional interfaces can greatly enhance other aspects of Java
  • Explore the new ‘features’ of the Collection API
  • To use the new Stream constructs to work with Collections and Collectors
  • How to work with default methods and pass methods as arguments
  • How to use the new features to support concurrency in multi-code systems
  • To work with the new Date/Time API and other new features
  • Develop modular applications in Java
  • Migrate existing Java applications to the Java 9 platform
  • Utilize the tooling that is provided in Java 9 to migrate, monitor and optimize applications
  • Use the new JShell tool to quickly test java constructs
  • Improve implementations already using Java 8’s Stream API by utilizing the methods new in Java 9
  • Understand how the implementation of the String class has been updated to decrease the memory footprint
  • Use the enhancements made to the Concurrency API, working with CompletableFuture instance of Thread pools
  • Take the first step towards Reactive programming using Java’s Reactive Stream Flow API

Specific Java 8 features that are covered in the course include:

  • Functional programming
  • Anonymous functions
  • Lambda expressions and default methods
  • Streams and Collectors
  • New Date/Time API
  • StringJoiner and repeating annotations

Specific Java 9 features that are covered in the course include:

  • The Java Module System (project Jigsaw)
  • JShell
  • Updated try-with-resources
  • Performance enhancements in Java 9
  • Updates to Collection and Stream API

Attendees should have an working knowledge in developing basic Java 8 applications.

This is an intermediate level Java SE (JSE) developer course, designed for experienced Java 8 developers.

Ready to Jumpstart Your IT Career?

CONTACT US NOW!