Java SE: Exploiting Modularity and Other New Features (D99947) – Outline

Detailed Course Outline

Why Modules?

  • Module System
  • Levels of a Typical Application
  • How Does Java SE 8 Address Maintainability and Reliability?
  • Classes, Subclasses, Interfaces
  • Class Level Unit of Reuse (Java SE 8)
  • Packages
  • JARs
  • JAR Files and Distribution Issues
Working with the Module System
  • Projects Before Modularization
  • module-info.java: Introduction
  • Creating a Truly Modular Project
  • Compiling Modular JAR Files
  • Accessibility Between Classes
  • Readability Between Modules
  • What Is Readable from the competition Module?
  • The Effects of Exporting
Modular JDK
  • Modular Development in JDK 9
  • The JDK
  • The Modular JDK
  • Modules in JDK 9
  • Java SE Modules
  • The Module Graph of Java SE
  • The Base Module
  • Finding the Right Platform Module
Creating Custom Runtime Images
  • What Is a Custom Runtime Image?
  • Link Time
  • Using jlink to Create a Custom Runtime Image
  • Modules Resolved in a Custom Runtime Image
  • Advantages of a Custom Runtime Image
  • JIMAGE Format
  • Footprint of a Custom Runtime Image
  • jlink Resolves Transitive Dependencies
Migration
  • Typical Application
  • The League Application
  • Run the Application
  • The Unnamed Module
  • Top-Down Migration
  • Dependencies
  • Check Dependencies
  • Typical Application Modularized
Services
  • Module Dependencies
  • Service Relationships
  • Expressing Service Relationships
  • Using the Service Type in competition
  • Choosing a Provider Class
  • Module Dependencies and Services
  • Designing a Service Type
  • TeamGameManager Application with Additional Services
Multi-release JAR files
  • Packaging an Application for Different JDKs
  • Packaging an Application for Different JDK Versions
  • The Solution: A Multi-Release JAR file
  • What Is a Multi-Release JAR File?
  • Structure of a JAR File
  • Structure of a Multi-Release JAR File
  • Search Process in an MRJAR
  • Creating a Multi-Release JAR File
Private Interface Methods
  • Private Methods in Interfaces
  • Java SE 7 Interfaces
  • Implementing Java SE 7 Interface Methods
  • Implementing Methods in Interfaces
  • What About the Problems of Multiple Inheritance?
  • Inheritance Rules of default Methods
  • Interfaces Don't Replace Abstract Classes
Enhancements to the Stream API
  • One More Benefit of Default Methods
  • Changing a Java Interface
  • Why Enhance the Stream API?
  • An Ordered List
  • takeWhile Provides a Solution
  • The Effects and Benefits of takeWhile
  • An Unordered List
  • filter vs takeWhile
JShell
  • Has This Happened to You?
  • A Million Test Classes and Main Methods
  • JShell Provides a Solution
  • Comparing Normal Execution with REPL
  • Getting Started with JShell and REPL
  • Scratch Variables
  • Declaring Traditional Variables
  • Code Snippets
Convenience Methods for Collections
  • What Are Convenience Methods?
  • Many Convenience Methods in Java SE 9
  • Key Collections Interfaces
  • Overloading the of Convenience Method
  • Why Overload the of Method?
  • Growing a Collection
  • ofEntries Method for Maps
  • Immutability
Convenience Methods for Arrays
  • Arrays
  • Modeling DNA Strands
  • Working with DNA Strands
  • Working with DNA Strands by Using a for Loop
  • Convenience Methods in the Arrays Class
  • Equating DNA Strands
  • DNA Subsequences
  • Equating Subsequences of DNA
Enhanced Deprecations for APIs
  • What Is Deprecation?
  • What Is Enhanced Deprecation?
  • How Do You Deprecate an API?
  • Using @deprecated
  • Enhancements to the @Deprecated Annotation in JDK 9
  • Using the @Deprecated Annotation
  • Notifications and Warnings
  • Compiler Deprecation Warnings