Advanced Java Development

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.

Duration

5 days

 

Prerequisites

  • At least 6 months Java experience

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
  • Tuning garbage collection
  • Implementing security
  • Java 8 language features and APIs
  • Effective unit testing
  • Design patterns
  • REST-based Web services
  • Web sockets
  • Looking ahead to Java 9

Course details

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