Java Programming for Developers
This training course covers the core components of the Java Programming Language. The training course is designed to teach programmers of other languages the skills needed to learn how to write robust, industry standard, platform independent Java applications leveraging the power and flexibility of the Java platform. The course can be delivered with a variety of IDEs including IntelliJ, VisualStudio Code, or Eclipse as the development environment.
Objectives
- Understand the Java runtime environment and the role of the virtual machine
- Identify and use the Java primitive datatypes
- Use the Java flow control constructs
- Understand the difference between classes and objects
- Implement instance data, methods, constructors, and method overloading
- Understand and implement the concept of inheritance
- Define the role of an interface, and be able to create and use one
- Understand the concept of static data and methods
- Understand the concept of polymorphism and be able to take advantage of it using Java
- Be able to implement the Java Collections API using Generics
- Build error handling blocks into applications
- Understand the need for Enums and be able to create an Enum using Java
- Working with Lambda Expressions
Prerequisites
- The training course assumes that delegates are already programmers. They will already understand the need for flow control, variables, operators and functions, and indeed have used them in other language contexts.
- It assumes no knowledge of the object-oriented paradigm as object oriented theory is also covered in the content of the training course.
Contents
Introduction to Java
- What is Java?
- The Java Virtual Machine
- The Java Runtime
Java - the basics
- Variable types in Java
- Java syntax
- Java operators
Looping and Branching
- if / else constructs
- switch case blocks
- while and for loops
- The 'for each' loop
Introduction to Object Orientation
- Classes and objects
- Definition of Encapsulation
- Definition of Inheritance
- Definition of Polymorphism
Introduction to Objects in Java
- Defining variables and methods in classes
- Object references
- The null reference
- Garbage collection
Working with Arrays
- Creating arrays
- Initialising arrays
- Array initialisers
- Variable argument lists
More on Java classes
- Constructors
- Static variables and methods
- Method overloading
- Static imports
Working with Strings
- The String class
- The String methods
- The StringBuilder class
- Formatting text
- The printf Methods
Packaging Java Classes
- Using import
- Defining packages
- Understanding the classpath
- Compiler flags
- IDE package support
Inheritance and Abstraction in Java
- Inheritance in Java
- Abstract classes and methods
- Method overriding
- Using @Override
- Polymorphism and inheritance
Interfaces
- The theory of interfaces
- Defining and using interfaces
- Polymorphism with interfaces
- Default methods
Enums
- Life without Enums
- Defining a basic Enum
- Adding properties, methods and private constructors
Inner Classes
- Nested Classes
- Member Classes
- Local Classes
- Anonymous Classes
- Using inner classes
The Collections API and Generics
- Working with Lists
- Working with Sets
- Working with Maps
- Working with Generic collections
- Working with Iterators
- The Comparator and Comparable interfaces
Lambda Expressions
- The purpose of Lambda Expressions
- Lambda expressions as Comparators
- Lambda expressions as Runnables
- Lambda expressions with looping constructs
Error Handling in Java
- Exception handling in Java
- The Error and Exception classes
- Defining custom exception classes
- Introduction to Java logging APIs
- Logging Best Practices
Multithreading in Java
- What is multithreading
- How to create additional threads in Java
- Synchronization with multithreading


