Upgrade your skills with 'Migrating from Java 8 to Java 17', designed for developers eager to master Java’s latest features and create scalable, maintainable applications.
Understand the differences between Java 8 and Java 17 features.
Implement key Java 17 features such as records, sealed classes, and switch expressions.
Leverage modularization and new Java tooling for efficient applications.
Enhance code maintainability and performance using updated Java APIs.
There have been a lot of changes in the Java programming language since the release of Java 8 in March of 2014. This two day courses focusses on the changes that will be most noticable for Java developers who will make the transition from Java 8 to Java 17. It not only covers the changes to the programming language like the new var keyword, records and sealed classes, it will also cover the Java modular system, introduced in Java 9 and the tooling that has been developed since then to allow the creation of self-contained Java applications.
No upcoming dates. Please check back later.
Overview of Java versions since Java 8
(Non) LTS releases
Preview features
Java Language Specifications
Java Specification Requests
Java Enhancement Proposals
Lab: Setup IntelliJ for using Maven
Data objects in Java
Introduce records as carrier of immutable data
Defining records
The Canonical constructor
Compact constructors
Lab: Records
Discuss the definition of whitespace in Java
Introduce the strip() methods of the String class
The isBlank() and repeat() methods introduced in Java 11
Using the lines() method to construct a Stream instance using a String
Compact strings
Introducing Text Blocks
Indentation in text blocks
Lab: Text Blocks
Switch Expressions
Using yield
Discuss switch fall through
Lab: Switch Expressions
Pattern Matching for instanceof
Scope of variable when using pattern matching
Refining Patterns in switch
Dominance of pattern labels
Lab: Pattern Matching
Introduce sealed classes
The sealed and permits modifier
Sealed interfaces
Sealed classes and pattern matching
Lab: Sealed Classes
Enhanced try-with-resources
Helpful NullpointerExceptions
Excluding parameter names in error messages
Lab: Helpful Nullpointers
Introduce the Java Modular System
Platform modules
The java.base Module
Modular Development
(Not) using Internal APIs
The module descriptor module-info.java
Defining module dependencies
Readability and Accessibility
Transitive dependencies and implied readability
Exports and Accessibility
Qualified exports
Validity of the Module system
Lab: Introduction to Modules
Open modules for reflection
Encapsulation and loose coupling
Utilizing the ServiceLoader
The 'provides' and 'with' reserved words
Lab: Modules and the ServiceLoader
Lab: Modules Reflection
Module Path vs Class Path
Unnamed modules
Using jdpes to discover class and module dependencies
Using jlink to create Self-Contained Java Applications
Using jpackage to Create Native Java App Installers
Lab: Creating Applications
Introduce enhancements to the Collection API
Unmodifiable Collections
Introduce new functionality of the Stream API
Explain new intermediate Stream operations (takeWhile, dropWhile)
Collecting Stream elements into list using the new toList method
Lab: Collection and Stream updates
Explain type inference
Infering types of local variables
The var reserved type name
Benefits of using var
Backward compatibility
Lab: Variable type inference
private methods in interfaces
The forRemoval and since attributes of the Deprecated annotation
Multi-release JAR files
Javadoc updates
Class-Data Sharing
Application Class-Data
CompactNumberFormat
Lab: Application Class-Data sharing
Lab: MrJar files
Your team deserves training as unique as they are.
Let us tailor the course to your needs at no extra cost.
Trusted by Engineers at:
and more...
Aaron Steele
Casey Pense
Chris Tsantiris
Javier Martin
Justin Gilley
Kathy Le
Kelson Smith
Oussama Azzam
Pascal Rodmacq
Randall Granier
Aaron Steele
Casey Pense
Chris Tsantiris
Javier Martin
Justin Gilley
Kathy Le
Kelson Smith
Oussama Azzam
Pascal Rodmacq
Randall Granier