Olsen Software Ltd.
Phone us +44 7989 401397
Email us info@olsensoft.com
home | training | services | content | code home > training > java > advprog Back to top
Advanced Java Development (5 days) print Download

course overview

This course is aimed at existing Java developers who wish to obtain a deeper understanding of advanced Java programming techniques, APIs, and development practices. The course also explores important additions in Java 8 and includes a preview of Java 9, as well as showing how to implement distributed systems using REST and Web Sockets.

what you'll learn


course details ShowHide


  • Overview of NIO2
  • Basic operations
  • File visitors
  • Directory watching
  • File attributes

Advanced JDBC Techniques

  • DataSources
  • Metadata
  • JDBC escape syntax
  • Transaction management
  • Additional techniques

Localization and Resource Bundles

  • Locales
  • Resource bundles
  • Locale-specific formatting and parsing


  • Dynamic retrieval of information using reflection
  • Creating instances of extensibility objects
  • Class fields, methods and constructors


  • Introduction to sockets
  • Implementing a socket server
  • Implementing a socket client

Java Native Interface (JNI)

  • Getting started with JNI
  • Defining native methods in Java
  • Implementing native code in C/C++

Multithreading Techniques

  • Java synchronization language features
  • Designing thread-safe classes
  • Recommendations for synchronizing resource access

Additional Multithreading Issues

  • Using concurrent collections
  • Using synchronizers and locks
  • Thread pooling techniques
  • Using the executor framework
  • Using pooling effectively

Tuning Garbage Collection

  • Essential concepts
  • Understanding object lifetimes
  • Generational collectors
  • Heap organization
  • Garbage collection options
  • Garbage collection monitoring and tuning


  • Security managers
  • Policy files
  • Sandboxing
  • Cryptographic random numbers

Java 8 Features

  • Lambda expressions
  • Method references
  • Constructor references
  • Interface changes in Java 8

Additional Java 8 Features

  • Streams
  • Collections and concurrency enhancements
  • New date/time API
  • IO/NIO additions

TDD and Unit Testing

  • Principles of unit testing
  • Using JUnit and Hamcrest effectively
  • Dependency injection and mocking

Design Patterns

  • Taxonomy of design patterns
  • Creational patterns
  • Behavioural patterns
  • Structural patterns

REST-Based Web Services

  • Overview of RESTful services
  • Creating a RESTful service
  • Consuming a RESTful service
  • Handling JSON data
  • Browser-based developer tools
  • Secure communications

Web Sockets

  • Overview of Web Sockets
  • Defining a Web Sockets server
  • Defining a Web Sockets web page client
  • Defining a Web Sockets Java client
  • Overview of SSE

Looking Ahead to Java 9

  • Summary of features expected in Java 9
  • Modularizing code
  • New Java compiler options
  • Tooling