Session: Introduction
Lesson: Java Versioning
- Introduce the new release cycle of Java versions
- Explain LTS versions
Lesson: Milling Project Coin
- Overview of changes made to the language throughout the years
- 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)
Session: Survey of Java 9 Updates
Lesson: Survey of Java 9 Changes
- Introduce some of the changes in Java
- Java versioning
- The JDK/JRE file structure
- Deprecation
- The jdeprscan tool
- Multi-Release JAR Files
- HTML 5 compliant Javadoc
Lesson: Collection and Stream Updates
- Factory methods for Immutable Collection types
- The takeWhile and dropWhile methods
- The Stream Iterate and ofNullable methods
Lesson: Java 9 Concurrency Updates
- 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 Features
- Enhancements on the Optional class
- Improvements made in the Process API
- The Stack-Walking API
- The HTTP2 Client
- The Multi-Resolution API
Session: The Java Module system (Jigsaw)
Lesson: Why JigSaw?
- Problems with Classpath
- Encapsulation and the public access modifier
- 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: Survey of Java 10 updates
Lesson: Survey of Java 10 Changes
- Docker Awareness and Support
- Unmodifiable Collections
- Garbage Collection Enhancements
- Application Class Data Sharing
- Ahead-of-Time Compilation
Lesson: Local-Variable Type Inference
- Type inference
- Infering Types of Local Variables
- The var Reserved Type name
- Benefits of Using var
- Backward Compatibilty
Session: Survey of Java 11 updates
Lesson: Survey of Java 11 Changes
- Provide an overview of some of the new features introduced in Java 11
- The Java versioning scheme
- Local-Variable Syntax in Lambdas
- Using Regular expression patterns with Predicate
- The Collection toArray Method
- Unicode 10 Standard
- HTTP Client API
- Launch Single-File Source-Code Programs
Lesson: Using Strings in Java 11
- Working with Strings
- Discuss the definition of whitespace in Java
- Introduce the new 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
Lesson: Java 11: Removed Features and Options
- Provide an overview of tools and APIs removed
- Java EE modules are no longer available in Java 11
Session: HTTP Client API
Lesson: The HTTP Client API
- Making HTTP (Hypertext Transfer Protocol) requests
- Explain Incubator Modules
- HTTP2 Client API
- Introduce WebSockets
- Communicate with WebSocket endpoints
Session: Additional Topics
Lesson: Memory Management
- Understand memory management in Java
- Discuss the various garbage collectors
- The Garbage-First (G1) Garbage Collector
- The No-Op and ZGS Garbage Collectors
Lesson: Performance Optimizations
- Ahead-Of-Time Compilation
- Hotspot Diagnostic commands