Advanced Java 8 Programming

The Advanced Java 8 Programming is a comprehensive hands-on advanced Java training workshop geared for experienced developers who wish to explore specific advanced programming APIs and techniques. This course explores common ‘next-level’ Java development tasks beyond a core knowledge base, exploring new features in Java 8 and how to harness and apply them to improve application development efforts and performance.

Retail Price: $2,195.00

Next Date: Request Date

Course Days: 5


Request a Date

Request Custom Course


Learning Objectives

Students who attend Advanced Java 8 Programming will leave this course armed with the required skills to improve their Java applications using sound coding techniques and best practices. 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. Throughout the course students will be led through a series of progressively advanced topics, where each topic consists of lecture, group discussion, comprehensive hands-on lab exercises, and lab review.

 

Our engaging instructors and mentors are highly experienced practitioners who bring years of current "on-the-job" experience into every classroom. Working in a hands-on learning environment, guided by our expert team, attendees will learn to:

  • Understand functional programming means and what it brings to the table
  • Understand how Lambda expressions and functional interfaces can greatly enhance other aspects of Java
  • Use the new Stream constructs to work with Collections and Collectors
  • Become familiar with the methods of the Collection API introduced in Java 8
  • Work with default methods
  • Use the new features to support concurrency in multi-core systems
  • Understand and work with the JavaScript engine Nashorn
  • Explore the Java Virtual Machine (JVM)
  • Work Java and JEE’s version of dependency injection (CDI)
  • Implement a WebSocket endpoint
  • Use Java Bean validation

 

Specific Java 8 features that are covered in the course include:

  • Lambda Expressions
  • Streams
  • Collectors
  • Interface methods
  • Lambda expressions and Collections

 

Audience & Pre-Requisites

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

 

Take Before: Students should have practical skills equivalent to or should have received training in the following topic(s) as a pre-requisite:

  • TT2100-J8: Introduction to Java 8 Programming for OO Experienced Developers

Outline

Session: Java 8 Review

Lesson: Evolving Interfaces

  • Interfaces in Java 8
  • Default methods
  • Static methods
  • Multiple Inheritance?
  • Lab: Interfaces

 

Session: Lambda Expressions; Collections and Streams

Lesson: Introduction to Lambda Expressions

  • Functional vs OO Programming
  • Anonymous Inner classes
  • Lambda Expression Syntax
  • Functional Interfaces
  • Method references
  • Constructor references

 

Lesson: Java 8 Collection Updates

  • Introduce the ConcurrentHashMap
  • Lambda expressions and Collections
  • Lab: Functional Collections

 

Lesson: Streams

  • Processing Collections of data
  • The Stream interface
  • Reduction and Parallelism
  • Filtering collection data
  • Sorting Collection data
  • Map collection data
  • Find elements in Stream
  • Numeric Streams
  • Create infinite Streams
  • Sources for using Streams
  • Lab: Working with Streams

 

Lesson: Collectors

  • Creating Collections from a Stream
  • Group elements in the Stream
  • Multi-level grouping of elements
  • Partitioning Streams
  • Lab: Collecting

 

Session: Additional Java 8 Enhancements

Lesson: Optional

  • Introduce Optional
  • Implement Optional attributes
  • Lambda expressions and Optional
  • Lab: Optional

 

Lesson: Other new Java 8 features

  • StringJoiner
  • Repeating and Type Annotations
  • Parallel Array Sorting
  • Improved type inference
  • Method parameter reflection
  • Updated command line tooling

 

Lesson: Java 8 Concurrency Updates

  • The common thread pool
  • Atomic variables
  • LongAdder and LongAccumulator
  • CompletableFuture
  • Non-blocking asynchronous tasks
  • Lab: CompletableFuture

 

Lesson: Nashorn JavaScript Engine

  • Working with JavaScript and Java
  • Accessing Nashorn
  • Executing JavaScript from Java
  • Executing Java from JavaScript
  • Implementing a Java Interface
  • Alternatives to Nashorn
  • Lab: Using JavaScript

 

Session: Best Practices and Performance

Lesson: Java Virtual Machine

  • Architecture of the JVM
  • Application Execution

 

Lesson: Introspection and Reflection

  • Reflection classes
  • Introspection
  • Dynamic invocation of methods
  • Using annotations
  • Type annotations
  • Receiver parameter
  • Lab: Introspection and Reflection
  • Lab: Reflection Server

 

Lesson: Reference Objects

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

 

Session: Java 8 Performance

Lesson: Performance and Java 8

  • Performance Across Java Versions
  • Tiered Compilation
  • Nashorn versus Java 7's JavaScript Engine
  • Lambda Expressions versus Inner Classes
  • Impact of Streams versus Collections
  • Date/Time Classes
  • I/O Stream Recommendations
  • Encoding/Decoding
  • Strings and Spring Interning

 

Session: Contexts and Dependency Injection (CDI)

Lesson: Introduction to CDI

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

 

Lesson: Using CDI

  • Qualifiers
  • @PostConstruct and @PreDestroy
  • The @Produces Annotation
  • Lab: Using Qualifiers

 

Session: Java API for WebSocket

Lesson: Introduction to WebSocket

  • Java API for WebSocket Overview
  • Using WebSocket in Java EE
  • Endpoint Instances

 

Lesson: Implementing WebSocket Endpoint

  • Annotated Endpoints
  • Receiving messages
  • Send Response to Client(s)
  • JavaScript to Setup a WebSocket Connection
  • Lab: Implementing a WebSocket

 

Lesson: Extending WebSockets

  • Manage Client State
  • Encoding and Decoding Messages
  • Handling Errors
  • Lab: Encoding and Decoding Messages

 

Session: Java Bean Validation (JSR 349)

Lesson: Introduction to Bean Validation

  • Bean Validation
  • Define Constraints on Object Models
  • Core Validation Annotations
  • Validate Objects and Object Graphs
  • Lab: Bean Validation

 

Lesson: Bean Validation

  • Validate Parameters and Return Values
  • Develop Custom Constraints
  • Lab: Creating Constraints


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