8280  Reviews star_rate star_rate star_rate star_rate star_half

Intermediate & Advanced Java (Java 11+)

This is a modern, fast-paced course suitable for developers with some previous experience in working with Java and Object-Oriented (OO) programming. The course can also be delivered to developers...

Read More
Duration 5 days
Course Code TP2989
Available Formats Classroom

Overview

This is a modern, fast-paced course suitable for developers with some previous experience in working with Java and Object-Oriented (OO) programming. The course can also be delivered to developers experienced in other OO languages (Python, C++, C#) but with limited Java exposure, as well as used as an advanced Java course for more experienced developers. There are numerous optional parts allowing you to tailor the coverage to your group.

Skills Gained

  • Solidify Java foundational knowledge, including the important contracts of class Object
  • Understand the uses and consequences of inheritance and composition, and reinforce the role of interfaces
  • Reinforce fundamental OO principles such as cohesion, coupling, and polymorphism
  • Use the JUnit testing framework and become fluent in writing assertions to verify correct program behavior
  • Familiarity with UML modeling in class diagrams and sequence diagrams
  • Use advanced techniques for object creation, including factories and singletons
  • Use established design patterns for object composition, including Strategy, Decorator, and Facade
  • Write and use generic classes and methods
  • Learn the use cases for inner classes and refactor existing code to use them when appropriate
  • Create and use custom annotations
  • Be familiar with reflection and how to use it
  • Understand the role of functional interfaces
  • Understand lambda expressions and method references, and use them to pass behavior (methods)
  • Use the Stream API to perform complex processing of collections and other input sources
  • Create and use Java modules, understanding module descriptors, modular JARs, exports and dependencies, and the modulepath
  • Understand the structure and behavior of the modular JDK, and how it supports modular applications as well as legacy classpath-based code
  • Migrate classpath-based applications to Java 11, understanding the stages of migration and options available

Prerequisites

Working knowledge of Java programming, including use of inheritance, interfaces, and exceptions

Course Details

Course Outline

  • Java State of the Union
    • Java Release Cycle
    • New Java Versions
  • Review - Basics
    • Java Environment
    • Classes and Objects
    • Instance Variables, Methods, Constructors, Static Members
    • OO Principles: Data Encapsulation, Cohesion
    • Object Contracts: toString(), equals() and hashCode(), Comparable and Comparator
    • Packages, Enums, Arrays
    • Exceptions
    • Date and Time API
    • New Language Features
  • Review (Inheritance and Interfaces)
    • UML Overview
    • Inheritance
    • Definition and IS-A Relationship
    • Method Overriding, @Override
    • OO Principles: Principle of Substitutability, Polymorphism and Encapsulation of Type, Coupling, Open-Closed Principle
    • Constructor Chaining
    • Interfaces
    • Defining and Implementing, Interface Types
    • Interface Inheritance
    • New Interface Features (Java 8+)
    • Default Methods, Static Methods
    • Functional Interfaces
    • Guidelines
  • JUnit
    • Overview
    • Tests, Assertions, and Fixtures
    • Writing and Running Tests
    • Assertions
    • Test Fixtures, @Before and @After, @BeforeClass and @AfterClass
    • Testing for Exceptions
    • Best Practices and Test-Driven Development Overview (TDD)
  • Collections and Generics
    • Collections Overview
    • Generics and Type-Safe Collections
    • Diamond Operator
    • Lists, Sets, and Maps
    • Interfaces and Contracts
    • Iteration and Autoboxing
    • Utility Classes - Collections and Arrays
    • Writing Generic Classes
    • Inheritance with Generic Types
    • Wildcard Parameter Types
    • Type Erasure
  • Techniques of Object Creation
    • Design Patterns Overview
    • Controlling Object Creation
    • Limitations of new Operator, Alternative Techniques
    • Singleton Pattern
    • Simple Factory
    • Factory Method Pattern
    • Other Techniques
    • Named Objects, JNDI
    • Dependency Injection Frameworks
  • Using Composition and Inheritance Effectively
    • Inheritance and Composition - Pros and Cons
    • Composition and Delegation
    • HAS-A, USES Relationships
    • Strategy Pattern
    • Decorator Pattern
    • Façade and Other Patterns
    • Façade, Proxy, Template Method
  • Inner Classes
    • Overview and Motivation
    • Stronger Encapsulation, Rules and Caveats
    • Defining and Using Inner Classes
    • Member-Level, Method-Local, Anonymous Classes
    • Static Nested Classes
    • Nested Classes, Nested Interfaces, Nested Enums
  • Annotations
    • Using Annotations
    • Target and Retention Policy
    • Annotation Parameters, Parameter Shortcuts
    • Writing Custom Annotations
    • Syntax, Using the Meta-Annotations
    • Using a Custom Annotation
  • Reflection
    • Overview and API
    • The Class Called Class
    • Obtaining and Inspecting Class Objects
    • Working with Objects Reflectively
    • Creating Instances, Invoking Methods, Setting Field Values
  • Lambda Expressions
    • Functional Interfaces and Lambdas
    • Target Context
    • Using Lambda Expressions
    • Syntax, Lambda Compatibility
    • Variable Capture
    • Type Inference
    • Method References
    • Three Types of Method References
    • Refactoring Lambdas into Method References
  • Streams
    • Streams vs. Collections
    • Anatomy of a Stream
    • Understanding the Stream API
    • Intermediate Operations and Stream Pipeline
    • Java 8 Functional Interfaces: Predicate, Comparator, Function
    • Stream Processing
    • Filtering, Sorting, Mapping
    • Terminal Operations
    • Collectors
    • Concepts
    • Partitioning and Grouping
  • Introduction to Modules
    • Motivation and Overview
    • Types of Modules
    • Modular JDK
    • Our Approach
  • Working with Modules
    • Defining and Using Modules
    • Services
    • Compatibility and Migration
    • Conclusion

Schedule

FAQ

Does the course schedule include a Lunchbreak?

Classes typically include a 1-hour lunch break around midday. However, the exact break times and duration can vary depending on the specific class. Your instructor will provide detailed information at the start of the course.

What languages are used to deliver training?

Most courses are conducted in English, unless otherwise specified. Some courses will have the word "FRENCH" marked in red beside the scheduled date(s) indicating the language of instruction.

What does GTR stand for?

GTR stands for Guaranteed to Run; if you see a course with this status, it means this event is confirmed to run. View our GTR page to see our full list of Guaranteed to Run courses.

Does Ascendient Learning deliver group training?

Yes, we provide training for groups, individuals and private on sites. View our group training page for more information.

What does vendor-authorized training mean?

As a vendor-authorized training partner, we offer a curriculum that our partners have vetted. We use the same course materials and facilitate the same labs as our vendor-delivered training. These courses are considered the gold standard and, as such, are priced accordingly.

Is the training too basic, or will you go deep into technology?

It depends on your requirements, your role in your company, and your depth of knowledge. The good news about many of our learning paths, you can start from the fundamentals to highly specialized training.

How up-to-date are your courses and support materials?

We continuously work with our vendors to evaluate and refresh course material to reflect the latest training courses and best practices.

Are your instructors seasoned trainers who have deep knowledge of the training topic?

Ascendient Learning instructors have an average of 27 years of practical IT experience and have also served as consultants for an average of 15 years. To stay current, instructors spend at least 25 percent of their time learning new, emerging technologies and courses.

Do you provide hands-on training and exercises in an actual lab environment?

Lab access is dependent on the vendor and the type of training you sign up for. However, many of our top vendors will provide lab access to students to test and practice. The course description will specify lab access.

Will you customize the training for our company’s specific needs and goals?

We will work with you to identify training needs and areas of growth.  We offer a variety of training methods, such as private group training, on-site of your choice, and virtually. We provide courses and certifications that are aligned with your business goals.

How do I get started with certification?

Getting started on a certification pathway depends on your goals and the vendor you choose to get certified in. Many vendors offer entry-level IT certification to advanced IT certification that can boost your career. To get access to certification vouchers and discounts, please contact info@ascendientlearning.com.

Will I get access to content after I complete a course?

You will get access to the PDF of course books and guides, but access to the recording and slides will depend on the vendor and type of training you receive.

How do I request a W9 for Ascendient Learning?

View our filing status and how to request a W9.

Reviews

Great instructor, clear and concise course. Labs were easy to follow and worked perfectly.

Sean is the very good instructor. I would like to take his class again in the future.

Great training it covered the most importan topics if GitHub copilot with good explanation and good labs.

This was effective way to provide a ton of information in a short time period.

Instructor, Training material & span of the training is neatly planned.