Course Description

This course includes a short review of basic Java concepts, and then moves on to a comprehensive coverage of more advanced topics in Java and OO programming to provide participants with a strong grounding in using Java in a sophisticated and productive manner. This course covers important topics such as composition, inheritance, polymorphism, interfaces and exceptions, which are all key to creating well-structured OO systems using Java. Then the course moves on to more advanced topics such as JDBC (for database access), the Java Collections Framework – including the generics capabilities introduced in Java 5, Java I/O, assertions, inner classes, and the reflection API. Finally it covers useful tools for day-to-day programming such as ant, JUnit and various logging frameworks. This course covers far more than an introductory course, and provides participants with a comprehensive understanding of how to use Java’s advanced capabilities in a more sophisticated manner. It teaches a number of useful techniques that enhance productivity and good system design – which Java programmers may otherwise take years to absorb on their own.



5 days


Target Audience

This course is suitable for programmers with experience working in java environments and OO programming.


Course Prerequisites

This course is suitable for programmers with some previous experience in working with Java (course below) and Object-Oriented (OO) programming.

If you have any questions or doubts as to whether you meet the pre-requisites for this course, or indeed are wondering which course best suits you, please consult with us to discuss your suitability for course attendance.


Suggested Follow on Courses

Please contact us for further details.


Course Content

1. Getting Started

A Simple Applications Class

Compiling HelloWorld

Java Source and Java Bytecode

Life Cycle of a Java Program

Java Programs Insulated From Environment

Java is Dynamic – The Runtime Process

2. Class and Object

Defining Classes

The Class in Java

Storing Data in Objects

Behavior and Methods

Pretty Pictures

About Java Primitive Data Types


Working with Methods and Data

Local Variables

Overlooking Methods

Encapsulation and Access Control


Other Capabilities

3. Review – Flow of Control, String and Array

Flow of Control

The Comparison Operators

The Logical Operators


Strings – Using and Classes

Arrays – Types

4. Review – Packages

Packages – Importing

Resolving Naming Conflicts

Creating a Package

Finding Classes

Organizing Files and Packages

5. Composition and Inheritance


Benefits/Problems of



Inheritance and Polymorphism

Class Object


Abstract Classes

6. Interfaces

Interface Types


Implementing Extended Interfaces

Interfaces are Abstract

Multiple Interfaces

7. Exceptions

Exception Hierarchy

Handling Exceptions

Program Flow with Exceptions


JDBC Basics

JDBC Architecture and API

Database Connections

Issuing Statements and Processing Data

Extracting Data from a ResultSet

SQL -> Java Type Mappings

9. Collections and Generics

Collections Framework

Collection Interfaces

Generics and Autoboxing

Other Collection Types

Creating and Using HashMap


Inheritance with Generic Types

Wildcard Parameter Types

10. Additional Language Features


Type-Safe Enums (5.0)

Advanced enum Features

Annotations (5.0)

The Issue

Annotations – The Solution

11. I/O Streams

Readers and Writers

Filter Streams

InputStreams and OutputStreams

Converting between Streams and Readers/Writers

New I/O (NIO) APIs

12. Nested / Inner Classes

Why Use Inner Classes?

Named Inner Classes

Static Inner Classes

Anonymous Inner Classes

13. Reflection

The Class called Class

Finding Fields, Methods and


Accessing Fields, Invoking


Examining Arrays

14. Introduction to ant

What is an ant?

Installing and Running ant

ant Basics

Creating Build Files

15. Working with Paths and Resource Collections


Resource Collections


16. ant Tasks

<javac> and <java> Tasks in


Creating Java Archives

File Related Tasks

Other Useful Tasks

17. ant Modularity

Properties Files

Modularizing Build Files

Buildfile Imporing Another


18. JUnit Basics

JUnit Overview

Writing JUnit Tests

Running the Tests

The Result and Failure Classes

19. Organizing Tests with JUnit

Fixtures and Suites

<junit> ant task

20. Introduction to Logging & log4j

Loggers, Levels, Appenders

Configuring Logger Levels

Working with Appenders

Pattern Layouts

Other Logging Frameworks


See more Architecture courses