New Features in Java (JVA501)
Course Length: 2 days
Delivery Methods:
Available as private class only
Course Overview
This course provides in-depth coverage of the important new features in Java 11 and Java 17.
Course Benefits
- Understand the new Java release cycle and Long Term Support (LTS) releases.
- Be familiar with significant deprecated and removed features, and how to work around them.
- Create and use Java modules, understanding module descriptors, modular JARs, exports and dependencies, and the
modulepath
. - Understand the structure and behavior of the modular JDK, how it supports modular applications as well as legacy
classpath
-based code, and the implications of strong encapsulation on each. - Migrate
classpath
-based applications to Java 11/17, understanding the stages of migration and options available. - Recognize the issues with 3rd party libraries in a migration effort, and how to work with them on the modulepath and
classpath
. - Use local-variable type inference with
var
, includinglambda
parameters. - Gain a practical working knowledge of the JShell REPL tool, including working with code snippets and variables, configuration, and using external libraries.
- Use the HTTP Client to access HTTP resources from Java, as well as understand the other options available.
- Work with various HTTP request and response types, using both synchronous and asynchronous techniques.
- Outline the new factory methods in Java Collections and understand native immutable collections.
- Describe the motivation for multi-release JAR files (MR-JARs), understand their structure, and how to create them.
- Understand the runtime behavior of MR-JARs in both legacy and modern JVMs, and principles and strategies for working with them effectively.
- Outline the principles of Reactive Programming and how it differs from traditional synchronous invocation models.
- Describe Reactive Streams and the role of the Flow API that defines the Java platform’s support for them.
- Understand the characteristics and benefits of custom runtime images.
- Use
jdeps
to analyze application dependencies, and create custom runtimes withjlink
, for both modular andclasspath
-based applications. - Explore some of the more important additional features and APIs, including new features for interfaces, the Process API, new JDK tools and command line options.
Course Outline
- Introduction to Modules
- Motivation and Overview
- Types of Modules
- Modular JDK
- Our Approach
- Working with Java Modules
- Defining and Using Modules
- Services
- Compatibility and Migration
- Conclusion
- Type Inference
- Local-Variable Type Inference
- Brief Overview of Lambdas
- Local-Variable Syntax for Lambdas
- JShell
- Introduction to JShell
- Working with Code
- Using Libraries (Modules, Jars, etc.)
- Http Client
- Overview
- API
- Usage and Features
- Other New Features
- Collection Factory Methods
- Multi-Release JARs
- Reactive Programming
- Miscellaneous
- Custom Runtime Images
- Application-Specific Runtimes
- Benefits
- Creating Runtime Images with
jlink
Class Materials
Each student will receive a comprehensive set of materials, including course notes and all the class examples.
Class Prerequisites
Experience in the following is required for this Java class:
- Working knowledge of Java programming, including use of inheritance, interfaces, and exceptions.
Prerequisite Courses
Courses that can help you meet these prerequisites:
Follow-on Courses
Live Private Class
- Private Class for your Team
- Live training
- Online or On-location
- Customizable
- Expert Instructors