Migrating to Java 17 | Java 17 New Features & Skills
Course Objectives
This course combines expert lecture, real-world demonstrations and group discussions with machine-based practical labs and exercises. Working in a hands-on learning environment led by our expert instructor, you will learn:
- The difference between LTS and non-LTS versions
- The (dis)advantages of preview features
- How to implement data objects using the new record type
- How to improve memory consumption through the use of compact Strings
- The use of the new strip and inBlank methods of the String class
- To define and use multi-line text blocks
- To use switch expressions to assign value
- To appy the yield keyword in a switch statement
- The concept of pattern matching
- How to apply pattern matching for instanceof
- All about sealed classes and interfaces
- Enhancements made to the try-with-resources construct
- To use the new Helpfull Nullpointer exceptions
- The thoughts behind the Java Modular system
- How to define and use modules
- How to use the ServiceLoader mechanism
- How to use the jdeps, jlink and jpackage tools to define self-contained Java applicaitons
- Methods added to the Collection and Stream API since Java 8
- The use of the var keyword and local variable type inference
- Private methods in interfaces
- The updated Deprecated method
- CompactNumberFormat
Course Prerequisites
This is an intermediate- level Java programming course, designed for experienced Java 8 developers who wish to get up and running with Java 11 immediately. Attendees should have a working knowledge of developing Java 8 applications.
Take Before: Students sholuld have incoming skills equivalent to or should have attended this course as a pre-requsite:
• TT2104-J8 Fast Track to Java 8 Programming for OO Experienced Developers
Course Agenda
Session: Introducing Java 17
Lesson: Versions and Features
- Overview of Java versions since Java 8
- (Non) LTS releases
- Preview features
- Java Language Specifications
- Java Specification Requests
- Java Enhancement Proposals
Lesson: Records
- Data objects in Java
- Introduce records as carrier of immutable data
- Defining records
- The Canonical constructor
- Compact constructors
Lesson: String and Text Blocks
- 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
Lesson: Switch Expressions
- Switch Expressions
- Using yield
- Discuss switch fall through
Lesson: Pattern Matching
- Pattern Matching for instanceof
- Scope of variable when using pattern matching
- Refining Patterns in switch
- Dominance of pattern labels
Lesson: Sealed Classes
- Introduce sealed classes
- The sealed and permits modifier
- Sealed interfaces
- Sealed classes and pattern matching
Lesson: Exception Handling
- Enhanced try-with-resources
- Helpful NullpointerExceptions
- Excluding parameter names in error messages
Session: Java Modular System
Lesson: Introducing the Java Modular System
- Introduce the Java Modular System
- Platform modules
- The java.base Module
- Modular Development
- (Not) using Internal APIs
Lesson: The Module Descriptor
- 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
Lesson: Working with Modules
- Open modules for reflection
- Encapsulation and loose coupling
- Utilizing the ServiceLoader
- The 'provides' and 'with' reserved words
Lesson: jdeps, jlink and jpackage
- 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
Session: Working with Java 17
Lesson: Updates to Collections and Streams
- 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
Lesson: Local Variable Type Inference
- Explain type inference
- Infering types of local variables
- The var reserved type name
- Benefits of using var
- Backward compatibilty
Lesson: More Updates
- private methods in interfaces
- The forRemoval and since attributes of the Deprecated annotation
- CompactNumberFormat
- Enhanced Pseudo-Random Number Generators
Sorry! It looks like we haven’t updated our dates for the class you selected yet. There’s a quick way to find out. Contact us at 502.265.3057 or email info@training4it.com
Request a Date