• Design applications to take advantage of the module system and its more reliable configuration, improved security and performance, and more easily scalable applications.
• Migrate existing applications to a modular applications in a step-by-step manner, choosing which parts of the application to migrate first.
• Deal with common problems encountered in migrating an application, including, cyclic dependencies and split packages.
• Use services to make modularized applications more robust and easily extensible.
• Create multi-release JAR files that can be run on different Java releases.
• Use convenience methods to reduce code that seems verbose, inefficient or boilerplate, and increase readability.
• Use JShell to quickly run small code experiments and test new APIs.
Benefits To You
By enrolling in this course, you'll learn how to use the module system to design applications with explicit dependencies and encapsulation at the JAR level, ensuring more reliable configuration, improved security and enhanced performance. You'll also get a chance to experiment with new features that ease development. These include convenience methods that make your code more readable and succinct, and JShell, an easy way to test code snippets and APIs.
• JAR Files and Distribution Issues
• Levels of a Typical Application
• Module System
• Class Level Unit of Reuse (Java SE 8)
• Classes, Subclasses, Interfaces
• How Does Java SE 8 Address Maintainability and Reliability?
Working with the Module System
• The Effects of Exporting
• Creating a Truly Modular Project
• Readability Between Modules
• Compiling Modular JAR Files
• What Is Readable from the competition Module?
• Projects Before Modularization
• module-info.java: Introduction
• Accessibility Between Classes
• Java SE Modules
• Modules in JDK 9
• The Modular JDK
• The JDK
• Finding the Right Platform Module
• Modular Development in JDK 9
• The Module Graph of Java SE
• The Base Module
Creating Custom Runtime Images
• Link Time
• jlink Resolves Transitive Dependencies
• Advantages of a Custom Runtime Image
• Footprint of a Custom Runtime Image
• Modules Resolved in a Custom Runtime Image
• What Is a Custom Runtime Image?
• Using jlink to Create a Custom Runtime Image
• JIMAGE Format
• The Unnamed Module
• The League Application
• Typical Application Modularized
• Check Dependencies
• Run the Application
• Top-Down Migration
• Typical Application
• Choosing a Provider Class
• TeamGameManager Application with Additional Services
• Designing a Service Type
• Module Dependencies
• Service Relationships
• Expressing Service Relationships
• Module Dependencies and Services
• Using the Service Type in competition
Multi-release JAR files
• Search Process in an MRJAR
• The Solution: A Multi-Release JAR file
• Structure of a JAR File
• Structure of a Multi-Release JAR File
• What Is a Multi-Release JAR File?
• Packaging an Application for Different JDK Versions
• Creating a Multi-Release JAR File
• Packaging an Application for Different JDKs
Private Interface Methods
• Implementing Methods in Interfaces
• Java SE 7 Interfaces
• Inheritance Rules of default Methods
• Interfaces Don't Replace Abstract Classes
• Implementing Java SE 7 Interface Methods
• Private Methods in Interfaces
• What About the Problems of Multiple Inheritance?
Enhancements to the Stream API
• Changing a Java Interface
• takeWhile Provides a Solution
• An Unordered List
• Why Enhance the Stream API?
• One More Benefit of Default Methods
• The Effects and Benefits of takeWhile
• filter vs takeWhile
• An Ordered List
• A Million Test Classes and Main Methods
• Declaring Traditional Variables
• Code Snippets
• Getting Started with JShell and REPL
• Comparing Normal Execution with REPL
• Scratch Variables
• Has This Happened to You?
• JShell Provides a Solution
Convenience Methods for Collections
• Key Collections Interfaces
• What Are Convenience Methods?
• ofEntries Method for Maps
• Many Convenience Methods in Java SE 9
• Why Overload the of Method?
• Growing a Collection
• Overloading the of Convenience Method
Convenience Methods for Arrays
• Working with DNA Strands by Using a for Loop
• Equating Subsequences of DNA
• DNA Subsequences
• Working with DNA Strands
• Convenience Methods in the Arrays Class
• Equating DNA Strands
• Modeling DNA Strands
Enhanced Deprecations for APIs
• What Is Enhanced Deprecation?
• How Do You Deprecate an API?
• Enhancements to the @Deprecated Annotation in JDK 9
• Notifications and Warnings
• What Is Deprecation?
• Using @deprecated
• Using the @Deprecated Annotation
• Compiler Deprecation Warnings
J2EE Developer, Java EE Developers, Project Manager, Java Developers
• Familiarity with JDK 8 features
• Familiarity with NetBeans or similar IDE
• Familiarity with Object-oriented programming concepts
• Familiarity with Java Collections and Enumerators
• Develop applications using the Java programming languages
• Ability to use object-oriented programming techniques
• Ability to use classes commonly found in Java programs
• Administer operating systems from the command line
• Java SE 8 Fundamentals
• Java SE 8 Programming