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.

Audience

Application developers.

Approach

This course is part lecture, part hands-on.

Prerequisites

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

Duration

5 days

Objectives

On completion of this course, you will:

Course Outline

Introduction

  • 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

Testing

  • 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

Statics

  • Static Variables and Methods

Assignments

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

Exceptions

  • 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

Generics

  • 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

Threads

  • 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

Wrap-Up