Java Programming

Java is one of the most popular programming languages in the world (source: TIOBE index), and with Java 7 released and Java 8 on the horizon, the language continues to evolve. Widely used for server-side applications as well as for Android, it has an extremely rich ecosystem of organisations, tools, tutorials, documentation and libraries that provide a strong platform for application development.

This course is a full introduction to Java and explores the whole language with practical exercises at each step. Its purpose is to make you fully effective in developing Java applications within your organisation.


Application developers.


This course is part lecture, part hands-on.


Delegates must have some previous programming experience in a language such as C, Ruby or Python.


5 days


On completion of this course, you will:

Course Outline


  • Why Java?
  • Java in the Real World
  • The Java success story: The JVM
  • The Java Ecosystem
  • Integration across the Enterprise

Getting Started with Java

  • Anatomy of a Java Program
  • Setting Up a Bare Bones Development Environment
  • Compiling and Running Your First Program

Language Basics - 1

  • Legal Identifiers
  • Code Conventions
  • Types of Data - Primitive Types and Objects
  • Literals
  • Operators and Expressions
  • Declaring Variables
  • Declaring Constants
  • Flow Control

Language Basics - 2

  • Calling Methods
  • Creating a Method
  • Method Arguments
  • Returning from a Method
  • Overloading Methods
  • Getting Keyboard Input
  • Command-line Arguments
  • Using an IDE


  • Introducing Junit
  • Test-Driven Development

Introducing Objects

  • (Almost) Everything is an Object
  • Objects as a Way to Represent Real-World Things
  • Creating a New Object - Three Steps
  • A Hierarchy of Objects
  • The Object object
  • A Tour of the Java API
  • Packages
  • Classpath

Object Construction

  • Constructors
  • Overloaded Constructors
  • Constructor Chaining
  • Superclass Constructors

Object-Oriented Programming

  • Encapsulation
  • Inheritance
  • Polymorphism
  • Abstract Classes
  • Interfaces

Development Topics

  • Debugging using an IDE
  • JavaDoc
  • Packaging Java Applications in JAR files

Access Control

  • Access Modifiers on Classes
  • Access Modifiers on Members


  • Static Variables and Methods


  • The Stack and The Heap
  • Basic Assignments
  • Casting
  • Initialisation
  • Initialisation Blocks
  • Using Wrappers
  • Boxing
  • Garbage Collection


  • Checked and Unchecked Exceptions
  • Dealing with Exceptions
  • Declaring and Catching Exceptions
  • Creating your own Exceptions

Working with Strings and I/O

  • The String and StringBuilder and StringBuffer classes
  • File I/O
  • Dates, Numbers and Currencies
  • Serialisation

Collections Framework

  • Core Collection Types
  • Common Collection Classes
  • Sorting and Searching
  • Utility Classes


  • Why Generics?
  • Using Generic Classes
  • Declaring and Assigning Variables of Generic Types
  • Declaring Methods that take Generic Types
  • Compile-time versus Run-time
  • Generics and Legacy Code


  • Why use Threads?
  • Defining, Instantiating & Starting a new Thread
  • Thread States
  • Putting a Thread to Sleep
  • Concurrency Issues
  • Thread Synchronisation
  • Thread Interaction

GUI Programming

  • Swing
  • Using a GUI Builder