Course Description

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

  • Advanced file handling, NIO2, and JDBC
  • Localization and resource bundles
  • Reflection
  • Sockets
  • Interfacing with native code using JNI
  • Multithreading and concurrency techniques and APIs
  • Tuning garbage collection
  • Implementing security
  • Utilizing Java 8 language features and API enhancements
  • Effective unit testing
  • Design patterns
  • Creating and consuming REST-based Web services
  • Implementing full-duplex client-server communications using Web sockets
  • Looking ahead to Java 9




5 days


Target Audience

Java developers.


Course Prerequisites

At least 6 months Java experience. Skills required can be learned by attending the following course as well as substantial working knowledge of Java.


Suggested Follow on Courses

There are a number of options of suitable follow-on courses, depending on your business needs. Please contact us for further details.


Course Content



  • NIO2: 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
  • Reflection: Dynamic retrieval of information using reflection; Creating instances of extensibility objects; Class fields, methods and constructors
  • Sockets: 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: 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


APPENDIX – if time allows we will present some of the following topics in lecture and demo-style only

  • Java EE Overview
  • JPA, Java Web services, Java Web apps (Overview)
  • Frameworks, e.g. Spring and Hibernate (Overview)

See more Java courses