Course Outline

Introduction to Java

  • History and evolution of Java
  • Overview of Java versions and updates
  • What’s new in Java 17
  • Setting up Java Development Kit (JDK 17) and IDE

Java Program Structure

  • Writing a simple Java program
  • Java syntax overview
  • Compiling and running Java applications

Data Types and Variables

  • Primitive data types and wrapper classes
  • Declaring variables and constants
  • Type conversion and casting

Operators in Java

  • Arithmetic, relational, logical, and bitwise operators
  • Operator precedence and associativity

Control Flow Statements

  • Conditional statements (if-else, switch)
  • Looping constructs (for, while, do-while)
  • Enhanced switch expressions (Java 17 feature)

Introduction to OOP Concepts

  • Classes and Objects
  • Encapsulation, Inheritance, Polymorphism, and Abstraction

Creating Classes and Objects

  • Declaring and initializing objects
  • The this keyword
  • Constructors (default and parameterized)

Inheritance

  • Extending classes (extends keyword)
  • Method overriding and super keyword
  • Abstract classes and methods

Polymorphism

  • Compile-time vs. runtime polymorphism
  • Method overloading and overriding

Interfaces

  • Defining and implementing interfaces
  • Functional interfaces and default methods

Record Classes (Java 17 feature)

  • Understanding records in Java 17
  • How records simplify data encapsulation

Generics in Java

  • Understanding type parameters
  • Generic classes, methods, and interfaces
  • Bounded types and wildcards

Exception Handling

  • Types of exceptions (checked and unchecked)
  • Try-catch-finally blocks
  • Throwing and catching exceptions
  • Creating custom exceptions

Java Collections Framework

  • List, Set, Map, and Queue interfaces
  • Popular implementations: ArrayList, HashMap, HashSet
  • Iterators and enhanced for loops

Lambda Expressions and Functional Programming

  • Introduction to lambda expressions
  • Syntax and usage
  • Functional interfaces

Stream API

  • Overview of Java Streams
  • Stream operations (filtering, mapping, reducing)
  • Parallel streams and performance considerations

Sealed Classes

  • Defining and using sealed classes
  • Permitted subclasses and restrictions

Pattern Matching for instanceof (Java 17 feature)

  • Simplifying type checks with pattern matching

Text Blocks

  • Working with multi-line text blocks in Java
  • Comparison with traditional string handling

Records and Serialization Improvements

  • Serialization and backward compatibility
  • How records enhance code readability and maintenance

Deprecation and Removal of Features

  • Deprecated APIs in Java 17
  • Removal of outdated features

Switch Expression Enhancements

  • Pattern matching in switch
  • Using switch expressions for cleaner code

Foreign Function & Memory API (Incubator)

  • Overview of the incubator module
  • Working with native code in Java

Java Module System (Project Jigsaw)

  • Introduction to modules in Java
  • Creating and using modules
  • Module descriptors and module-info.java
  • Advantages of modularization

Concurrency and Multithreading

  • Introduction to threads and multithreading
  • Runnable interface and Callable interface
  • Synchronization, locks, and thread safety

Asynchronous Programming with CompetableFuture

  • Writing asynchronous code
  • Using CompetableFuture for non-blocking operations

Deploying Java Applications

  • Creating and executing JAR files
  • Packaging and distributing Java applications
  • Introduction to GraalVM (optional)

Best Practices and Code Optimization

  • Writing efficient and maintainable Java code
  • Common performance pitfalls and how to avoid them
  • Code refactoring techniques

Summary and Next Steps

Requirements

  • Basic knowledge in programming

Audience

  • Software developers
  • Programmers
 35 Hours

Related Categories