Fast Track to Core Java 17 Programming for OO Developers (TT2104)

Gain the latest skills, techniques and best practices required to create robust, well designed and efficient modern Java applications



4 Days

Course Overview


Fast Track to Java Programming for OO Developers is a four-day, fast-paced hands-on course that helps experienced object oriented developers (coming from C++, C#, etc.) quickly get up and running with programming in Java, using the latest coding skills. You’ll exit the course well-prepared to tackle real-world programming tasks, equipped with an in-depth knowledge of Java and a practical skill set to create robust, efficient, and secure Java applications.

Working in a skills-immersive, hands-on learning environment led by our expert instructor, you’ll explore the intricacies of the Java platform and the Java Standard Edition, working seamlessly with the Java Development Kit (JDK), and using the development environment (IDE) proficiently. The course emphasizes best practices in OO development, reinforcing core object-oriented principles such as inheritance, polymorphism, interfaces, and abstract classes, allowing you to design software applications, develop back-end systems, or contribute to enterprise-level projects.

The course centers around applying these skills to real-world challenges, ensuring you can leverage them in your role or project right after class. Throughout the course you'll build applications, create subclasses, and develop custom exception handling. You'll also gain proficiency in using Java's arrays, records, packages, and utility classes. The course also delves into the advanced features of Java programming, including working with generics, understanding functional programming with lambda expressions, and using the Collection API. You'll be proficient in the JDK, be able to navigate your course IDE, and will be able to develop complex Java programs.

You’ll exit this course equipped with the skills required to tackle a variety of programming challenges and create efficient, robust Java applications with ease.

NOTE: This course uses Java 21, which also covers the fundamental concepts and techniques in Java 11 and 17.  This course is suited for Java 11, Java 17 and Java 21 skills development. Earlier versions are available. Please inquire for options.


Learning Objectives

This course combines engaging instructor-led presentations and useful demonstrations with valuable hands-on labs and engaging group activities. Throughout the course you’ll:

  • Understand the fundamentals of the Java platform, its lifecycle, and the responsibilities of the Java Virtual Machine (JVM), enabling you to create efficient and reliable Java applications.
  • Gain proficiency in using the JDK, including navigating its file structure, utilizing the command-line compiler, and executing Java applications, ensuring a smooth development process.
  • Master the IDE, including its interface, project management, and module creation, to enhance productivity, collaboration, and overall development workflow.
  • Develop solid skills in writing Java classes, defining instance variables, creating object instances, and implementing main methods, forming a strong foundation in Java programming.
  • Acquire expertise in adding methods to Java classes, writing constructors, and leveraging the 'this' keyword, allowing you to create more sophisticated and customizable Java applications.
  • Comprehend and apply core object-oriented programming concepts, such as encapsulation, inheritance, and polymorphism, to create modular, maintainable, and reusable code.
  • Enhance your knowledge of Java language statements, including arithmetic, comparison, and logical operators, as well as loops and switch expressions, to develop more complex and efficient Java applications.
  • Learn to effectively handle exceptions, create custom exception classes, and use try/catch blocks to ensure the robustness and reliability of your Java applications, minimizing potential runtime issues.
  • Explore and understand the Java Modular System and its impacts on accessibility and visibility.
  • Gain proficiency in working with collections in Java, which includes learning about the different collection implementations (Set, List, and Queue), using iterators, and sorting collections. This will enable you to manage data effectively in your Java programs

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

  • Switch Expressions
  • Text blocks
  • Pattern matching for instanceof
  • Introduce records as carrier of immutable data

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

  • Sequenced Collections
  • Pattern matching in Switch statements
  • Record Patterns

If your team requires different topics, additional skills or a custom approach, our team will collaborate with you to adjust the course to focus on your specific learning objectives and goals.

Course Objectives


This course combines engaging instructor-led presentations and useful demonstrations with valuable hands-on labs and engaging group activities. Throughout the course you’ll:

  • Master the fundamentals of the Java platform and the Java Standard Edition. This foundation will empower you to make the most of these tools, and confidently navigate the Java ecosystem.
  • Get hands-on with the Java Development Kit (JDK) and become comfortable with the IDE / development environment. These are key tools that will become part of your everyday programming toolbox.
  • Understand and apply essential object-oriented principles such as inheritance, polymorphism, interfaces, and abstract classes. These are the building blocks of effective Java programming.
  • Engage in practical, real-world programming challenges through hands-on lab sessions. You'll become skilled in using arrays, records, packages, and utility classes, enhancing your ability to build robust and efficient Java applications.
  • Dive into advanced Java programming concepts, exploring the use of generics, lambda expressions, functional interfaces, and the Collection API. This will equip you to tackle complex programming tasks and take your coding skills to the next level.
  • Develop a deep understanding of exception handling in Java. Learn how to define your own exceptions, handle multiple exceptions, and use try/catch blocks. This will help you to create more reliable and fault-tolerant code.
  • Explore and understand the Java Modular System and its impacts on accessibility and visibility. You'll become adept at executing Java applications, defining modules, and dealing with dependencies.
  • Gain proficiency in working with collections in Java, which includes learning about the different collection implementations (Set, List, and Queue), using iterators, and sorting collections. This will enable you to manage data effectively in your Java programs.
  • Explore specific Java 17 features that are covered in the course including: Switch Expressions, Text blocks, Pattern matching for instanceof, Introduce records as carrier of immutable data


If your team requires different topics, additional skills or a custom approach, our team will collaborate with you to adjust the course to focus on your specific learning objectives and goals.

Course Prerequisites


This course is designed to quickly help experienced programmers transition their existing object oriented development skills (from C++, C# .Net, etc.) to Java. This course is not for non-OO developers, very new  or non-developers.



To ensure a smooth learning experience and maximize the benefits of attending this course, you should have prior hands-on programming experience in another OO programming language such as C# or C++. 

Course Agenda

Course Topics / Agenda

Please note that this list of topics is based on our standard course offering, evolved from typical industry uses and trends. We’ll work with you to tune this course and level of coverage to target the skills you need most. Topics, agenda and labs are subject to change, and may adjust during live delivery based on audience skill level, interests and participation.

  1. The Java Platform
  • Introduce the Java Platform
  • Explore the Java Standard Edition
  • Discuss the lifecycle of a Java Program
  • Explain the responsibilities of the JVM
  • Executing Java programs
  • Garbage Collection
  • Documentation and Code Reuse
  1. Using the JDK
  • Explain the JDK’s file structure
  • Use the command line compiler to compile a Java class
  • Use the command line Java interpreter to run a Java application class
  1. Using the IntelliJ IDE
  • Introduce the IntelliJ IDE
  • The Basics of the IntelliJ interface
  • IntelliJ Projects and Modules
  • Creating and running Java applications
  • Tutorial: Exploring your IDE ( with IntelliJ 2023.2 (Community Edition) or Eclipse IDE
  1. Writing a Simple Class
  • Write a Java class that does not explicitly extend another class
  • Define instance variables for a Java class
  • Create object instances
  • Primitives vs Object References
  • Implement a main method to create an instance of the defined class
  • Java keywords and reserved words
  1. Adding Methods to the Class
  • Write a class with accessor methods to read and write instance variables
  • Write a constructor to initialize an instance with data
  • Write a constructor that calls other constructors of the class to benefit from code reuse
  • Use the this keyword to distinguish local variables from instance variables
  1. Language Statements
  • Arithmetic operators
  • Operators to increment and decrement numbers
  • Comparison operators
  • Logical operators
  • Return type of comparison and logical operators
  • Use for loops
  • Switch Expressions
  • Switch Expressions and yield
  1. Using Strings and Text Blocks
  • Create an instance of the String class
  • Test if two strings are equal
  • Perform a case-insensitive equality test
  • Contrast String, StringBuffer, and StringBuilder
  • Compact Strings
  • Text Blocks
  • Unicode support
  • Lab: Fun with Strings
  • Lab: Using StringBuffers and StringBuilders
  1. Fields and Variables
  • Discuss Block Scoping Rules
  • Distinguish between instance variables and method variables within a method
  • Explain the difference between the terms field and variable
  • List the default values for instance variables
  • Final and Static fields and methods
  1. Specializing in a Subclass
  • Constructing a class that extends another class
  • Implementing equals and toString
  • Writing constructors that pass initialization data to parent constructor
  • Using instanceof to verify type of an object reference
  • Overriding subclass methods
  • Pattern matching for instanceof
  • Safely casting references to a more refined type
  1. Using Arrays
  • Declaring an array reference
  • Allocating an array
  • Initializing the entries in an array
  • Writing methods with a variable number of arguments
  1. Records
  • Data objects in Java
  • Introduce records as carrier of immutable data
  • Defining records
  • The Canonical constructor
  • Compact constructors
  1. Java Packages and Visibility
  • Use the package keyword to define a class within a specific package
  • Discuss levels of accessibility/visibility
  • Using the import keyword to declare references to classes in a specific package
  • Using the standard type naming conventions
  • Introduce the Java Modular System
  • Visibility in the Java Modular System
  1. Utility Classes
  • Introduce the wrapper classes
  • Explain Autoboxing and Unboxing
  • Converting String representations of primitive numbers into their primitive types
  • Defining Enumerations
  • Using static imports
  • Introduce the Date/Time API
  • LocalDate / LocalDateTime etc.
  • Apply text formatting
  • Using System.out.printf
  1. Inheritance and Polymorphism
  • Write a subclass with a method that overrides a method in the superclass
  • Group objects by their common supertype
  • Utilize polymorphism
  • Cast a supertype reference to a valid subtype reference
  • Use the final keyword on methods and classes to prevent overriding
  1. Interfaces and Abstract Classes
  • Define supertype contracts using abstract classes
  • Implement concrete classes based on abstract classes
  • Define supertype contracts using interfaces
  • Implement concrete classes based on interfaces
  • Explain advantage of interfaces over abstract classes
  • Explain advantage of abstract classes over interfaces
  1. Sealed Classes
  • Introduce sealed classes
  • The sealed and permits modifier
  • Sealed interfaces
  • Sealed classes and pattern matching
  1. Pattern Matching
  • Pattern Matching in switch statements
  • Pattern Matching and sealed classes
  • Record Patterns
  1. Introduction to Exception Handling
  • Introduce the Exception architecture
  • Defining a try/catch blocks
  • Checked vs Unchecked exceptions
  1. Exceptions
  • Defining your own application exceptions
  • Automatic closure of resources
  • Suppressed exceptions
  • Handling multiple exceptions in one catch
  • Enhanced try-with-resources
  • Helpful NullPointerException(s)
  1. Building Java Applications
  • Explain the steps involved in building applications
  • Define the build process
  • Introduce build scripts
  • Explain the standard folder layout
  • Resolving project dependencies
  • Tutorial: Importing code Using Maven
  1. Introduction to Generics
  • Generics and Subtyping
  • Bounded Wildcards
  • Generic Methods
  1. Introducing Lambda Expressions and Functional Interfaces
  • Understanding the concept of functional programming
  • Understanding functional interfaces
  • Lambda's and type inference
  1. Collections
  • Provide an overview of the Collection API
  • Review the different collection implementations (Set, List and Queue)
  • Explore how generics are used with collections
  • Examine iterators for working with collections
  1. Using Collections
  • Collection Sorting
  • Comparators
  • Using the Right Collection
  • Lambda expressions in Collections
  • Sequenced Collections


Bonus Topics / Time Permitting


  • Understanding the problem with collections in Java
  • Thinking of program solutions in a declarative way
  • Use the Stream API to process collections of data
  • Understand the difference between intermediate and terminal stream operations
  • Filtering elements from a Stream
  • Finding element(s) within a Stream
  • Collecting the elements from a Stream into a List


  • Using different ways to collect the items from a Stream
  • Grouping elements within a stream
  • Gathering statistics about numeric property of elements in a stream

Course Materials

Setup Made Simple!

All applicable course software, digital courseware files or course notes, lab environment, data sets and solutions, live coaching support channels and rich extended learning and post training resources are provided for you in our “easy access, no install required” online Learning Experience Platform (LXP). We’ll collaborate with you to ensure your team is set up and ready to go well in advance of the class. Please inquire about set up details and options for your specific course of interest.

Raise the bar for advancing technology skills

Attend a Class!

Live scheduled classes are listed below or browse our full course catalog anytime

Special Offers

We regulary offer discounts for individuals, groups and corporate teams. Contact us

Custom Team Training

Check out custom training solutions planned around your unique needs and skills.

EveryCourse Extras

Exclusive materials, ongoing support and a free live course refresh with every class.

Mix, Match & Master!
2FOR1: Two Courses, One Price!

Enroll in *any* two public courses (for 2023 *OR* 2024 dates!) by December 31, for one price!  Learn something new, or share the promo!

Click for Details & Additional Offers

Learn. Explore. Advance!

Extend your training investment! Recorded sessions, free re-sits and after course support included with Every Course
Trivera MiniCamps
Gain the skills you need with less time in the classroom with our short course, live-online hands-on events
Trivera QuickSkills: Free Courses and Webinars
Training on us! Keep your skills current with free live events, courses & webinars
Trivera AfterCourse: Coaching and Support
Expert level after-training support to help organizations put new training skills into practice on the job

The voices of our customers speak volumes

Special Offers
Limited Offer for most courses.

SAVE 50%

Learn More