Next Level Java 11 / 13 Programming | Intermediate Java 11/13

Next Level Java 11 | Intermediate Java 11 Programming is a three-day, hands-on fast-track course geared for developers who have prior working knowledge 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.

Retail Price: $2,495.00

Next Date: Request Date

Course Days: 3


Request a Date

Request Custom Course


Course Objectives: What You’ll Learn

 

This “skills-centric” course is about 50% hands-on lab and 50% lecture, designed to train attendees in basic OO coding and Java 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" application development experience into every classroom. Working within in an engaging, 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

 

Audience & Pre-Requisites: Who Should Attend

 

This is an intermediate level Java SE (JSE) developer course, designed for basic-level Java developers comfortable with Java 8 (or newer). Attendees should have a working knowledge in developing basic Java 8 applications.

Related Courses – Suggested Learning Path

Take Before: Students should have development skills at least equivalent to the following course(s) or should have attended as a pre-requisite:

  • TT2100-J11 Java Programming Fundamentals for OO Experienced Developers
  • TT2120-J11 Java 8 and OO Programming Essentials for Developers New to OO

Take After: Our core Java training courses provide students with a solid foundation for continued learning based on role, goals, or their areas of specialty. Our object oriented, Java developer learning paths offer a wide variety of follow-on courses such as:

  • Specialized or continued Java & JEE training: Spring, Hibernate; JSF, Struts, Design Patterns & more
  • Java Web Development, JEE Foundation training
  • Agile development, TDD / Test Driven Development, JUnit / Unit Testing training
  • Secure Java Coding / Java Security and secure application development training
  • Web Services, REStful Services, Microservices courses
  • Mobile developer / Android training
  • Please contact us for recommended next steps tailored to your longer-term education, project, role or development objectives.

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
  • Lab: Defining Modules

Lesson: The Module Descriptor

  • Define module requirements
  • Explain qualified exports
  • Open modules for reflection
  • Use ServiceLoader
  • The provides and uses keywords
  • Lab: Modules and the ServiceLoader
  • Lab: Using Reflection on modules

Lesson: Working With Modules

  • Being backwards compatible
  • The ModulePath and ClassPath
  • Unnamed Modules
  • Automatic Modules
  • The JLink tool
  • Lab: Migrating to modules

 

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
  • Lab: Working With JShell

 

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
  • Lab: Intro to JDBC

Lesson: Introduction to Annotations

  • Annotations Overview
  • Working with Java Annotations
  • Lab: Using Annotations

Lesson: The HTTP Client API

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

Lesson: Introduction to CDI

  • Context Dependency Injection (CDI)
  • The @Inject Annotation
  • The @Default Annotation
  • The @Alternative Annotation
  • The @Named Annotation
  • Lab: Introduction to CDI
  • Lab: Adding CDI Qualifiers

Lesson: Overview of JPA

  • Introduce the Java Persistence API (JPA)
  • Benefits of Using an ORM framework
  • Hibernate and JPA
  • Lab: Introduction to 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
  • Lab: Working with Native processes

Lesson: Performance Optimizations

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

 

Session: Multithreading and Concurrency

 

Lesson: Multithreading

  • Principles of Multithreading
  • Creating a Threaded Class
  • Basic Features of the Thread Class
  • Thread Scheduling
  • Thread Synchronization
  • Lab: Simple Thread Class
  • Lab: Simple Runnable Class

Lesson: Concurrent Java

  • Concurrent Locks are Explicit and Flexible
  • Executor Interfaces Provide Thread Management
  • Challenges for Concurrent Use of Collections
  • Concurrent Collections
  • Atomic Variables Avoid Synchronization
  • Lab: Working with Concurrent Java
  • Lab: Sleeping Threads
  • Lab: Safe Data Access
  • Lab: Producer/Consumer

Lesson: Completable Futures

  • Introducing the CompletableFuture
  • The common thread pool
  • Non-blocking asynchronous tasks
  • Defining task callback-handlers
  • Lab: CompletableFuture

Lesson: Working With CompletableFuture

  • Promises
  • Subclassing the CompletableFuture
  • The default Executor
  • New Factory methods
  • Dealing with time-outs
  • Handling Exceptions

 

Session: Reflection and References

 

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

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

Lab: Project Lombok



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