Course Catalog
Intermediate Java Programming | New Features, Jigsaw, JShell, Concurrency & More
Code: TT2211
Duration: 3 Day
$2295 USD

OVERVIEW

Intermediate Java 11 and Beyond / Next Level Java is hands-on fast-track course geared for experienced developers who have prior working of basic Java who want to take advantage of the newest features of Java 11 that can help them improve performance and functionality of their Java applications. Students will explore and learn how to leverage Modules, scale applications into multi-core environments, improve performance, and become a more effective Java developer.

DELIVERY FORMAT

This course is available in the following formats:

Virtual Classroom

Duration: 3 Day
Classroom

Duration: 3 Day

CLASS SCHEDULE
Call 800-798-3901 to enroll in this class!

GOALS

This “skills-centric” course is about 50% hands-on lab and 50% lecture, designed to train attendees in advanced development skills, coupling the most current, effective techniques with the soundest industry practices. Students will leave this course armed with the required skills to improve their Java applications using sound coding techniques and best practices.

Working in a hands-on learning environment, guided by our expert team, attendees will learn to:

  • Develop modular applications in Java
  • Explore the Module service loader
  • Utilize the tooling that is provided in Java 11 to migrate, monitor and optimize applications
  • Use the new JShell tool to quickly test java constructs
  • Develop multi-threaded applications
  • Work with the CompletableFuture instances introduced in Java 8
  • Use JDBC to read, write and update records in a relational database
  • Use the HTTP Client API introduced in Java 11
  • Explore the Dependency Injection (CDI) and Persistence (JPA) API
  • Apply the Introspection and Reflection APIs
  • Understand the importance of Reference Objects
  • Utilize Project Lombok
OUTLINE

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: Accessing Resources

Lesson: Java Data Access JDBC API

  • Connecting to the Database
  • Statement and PreparedStatement
  • ResultSet
  • Executing Inserts, Updates, and Deletes
  • Controlling Transactions and Concurrency

Lesson: Introduction to Annotations

  • Annotations Overview
  • Working with Java Annotations

Lesson: The HTTP Client API

  • Making HTTP (Hypertext Transfer Protocol) requests
  • Explain Incubator Modules
  • HTTP2 Client API
  • Introduce WebSockets
  • Communicate with WebSocket endpoints

Lesson: Introduction to CDI

  • Context Dependency Injection (CDI)
  • The @Inject Annotation
  • The @Default Annotation
  • The @Alternative Annotation
  • The @Named Annotation

Lesson: Overview of JPA

  • Introduce the Java Persistence API (JPA)
  • Benefits of Using an ORM framework
  • Hibernate and JPA

Session: More Java

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

Lesson: Performance Optimizations

  • Ahead-Of-Time Compilation
  • Hotspot Diagnostic commands
  • Variable and Method Handles

Session: Multithreading and Concurrency

Lesson: Introduction to Multithreading and Concurrency

  • Principles of Multithreading
  • The Thread class and Runnable interface
  • Explore thread synchronization
  • Introduce the Java Concurrency API

Lesson: Concurrent Java

  • Thread management using Executors
  • The common thread-pool
  • Submitting and controlling asynchronous tasks
  • Explore the locking API

Lesson: Non-blocking asynchronous tasks

  • The CompletableFuture
  • Define non-blocking processes
  • Exception handling in multithreaded processes
  • The Fork-Join framework

Session: Reflection and References

Lesson: Introspection and Reflection

  • Reflection classes
  • Introspection
  • Dynamic invocation of methods
  • Using annotations
  • Type annotations
  • Receiver parameter

Lesson: Reference Objects

  • List the kinds of object references available in Java
  • Introduce Weak, Soft and PhantomReference
  • Explain the ReferenceQueue

Additional Topics: Time Permitting

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: Project Lombok

  • Introduce the Lombok Project
  • Configure the Lombok Annotation processor
  • Introduce some of the commonly used Lombok annotations

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: Accessing Resources

Lesson: Java Data Access JDBC API

  • Connecting to the Database
  • Statement and PreparedStatement
  • ResultSet
  • Executing Inserts, Updates, and Deletes
  • Controlling Transactions and Concurrency

Lesson: Introduction to Annotations

  • Annotations Overview
  • Working with Java Annotations

Lesson: The HTTP Client API

  • Making HTTP (Hypertext Transfer Protocol) requests
  • Explain Incubator Modules
  • HTTP2 Client API
  • Introduce WebSockets
  • Communicate with WebSocket endpoints

Lesson: Introduction to CDI

  • Context Dependency Injection (CDI)
  • The @Inject Annotation
  • The @Default Annotation
  • The @Alternative Annotation
  • The @Named Annotation

Lesson: Overview of JPA

  • Introduce the Java Persistence API (JPA)
  • Benefits of Using an ORM framework
  • Hibernate and JPA

Session: More Java

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

Lesson: Performance Optimizations

  • Ahead-Of-Time Compilation
  • Hotspot Diagnostic commands
  • Variable and Method Handles

Session: Multithreading and Concurrency

Lesson: Introduction to Multithreading and Concurrency

  • Principles of Multithreading
  • The Thread class and Runnable interface
  • Explore thread synchronization
  • Introduce the Java Concurrency API

Lesson: Concurrent Java

  • Thread management using Executors
  • The common thread-pool
  • Submitting and controlling asynchronous tasks
  • Explore the locking API

Lesson: Non-blocking asynchronous tasks

  • The CompletableFuture
  • Define non-blocking processes
  • Exception handling in multithreaded processes
  • The Fork-Join framework

Session: Reflection and References

Lesson: Introspection and Reflection

  • Reflection classes
  • Introspection
  • Dynamic invocation of methods
  • Using annotations
  • Type annotations
  • Receiver parameter

Lesson: Reference Objects

  • List the kinds of object references available in Java
  • Introduce Weak, Soft and PhantomReference
  • Explain the ReferenceQueue

Additional Topics: Time Permitting

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: Project Lombok

  • Introduce the Lombok Project
  • Configure the Lombok Annotation processor
  • Introduce some of the commonly used Lombok annotations
LABS

This hands-on course focuses on ‘learning by doing’, combining expert lecture, practical demonstrations and group discussions with plenty of machine-based real-world programming labs and exercises. Student machines are required.

This hands-on course focuses on ‘learning by doing’, combining expert lecture, practical demonstrations and group discussions with plenty of machine-based real-world programming labs and exercises. Student machines are required.

WHO SHOULD ATTEND

Java Developers, Application Developers, Full Stack Developers.

PREREQUISITES

This in an intermediate-level Java development course geared for students experienced with Java 8 or higher programming essentials who wish to quickly get up and running with advanced Java skills. This course does not cover Java programming fundamentals.