Advanced Java

Advanced Java

Audience

This course takes a deeper look into some of the advanced techniques and APIs available in contemporary Java, focussing specifically on Java 8 through Java 12. You’ll learn all about the new modular approach introduced in Java 9, as well as a thorough investigation of functional programming techniques via lambdas, functional interfaces, and streams. The course also covers important parts of the API including concurrency, data manipulation, and security.

Prerequisites

Delegates should have at least 6 months of solid Java experience.

Duration

5 days. Hands-on.

Course Objectives

This course is aimed at existing Java developers who wish to obtain a deeper understanding of advanced Java programming techniques. The course also explores the features introduced in the latest releases of Java SE.

Delegates will learn:

  • Modular Java
  • Functional Programming Techniques
  • Effective Concurrency
  • Security
  • Localization

Course Content

Java Class Fundamentals 
Final classes
Overview of inner classes
Regular inner classes
Anonymous inner classes
Static nested classes
Enumerations

Lambda Expressions
What are Lambda expressions? 
Formal syntax for lambda expressions
Lambda expressions simple syntax
Lambda expressions that return a value
Lambda expressions with multiple arguments
Lambda expressions and scope
Common usage scenarios

Methods Enhancements
Method references
Constructor references
Default methods
Static methods in interfaces

Functional Interfaces
Function
UnaryOperator
BiFunction
BinaryOperator
Predicate
Consumer
Supplier
Additional new functional interfaces

Streams
Sequential vs. Parallel streams
Immediate vs. Terminal operations
Stream example
Lazy evaluation
A closer look at immediate and terminal operations
Primitive-specialized streams

Modular Programming in Java
Getting started with java modules 
Using the modular JDK
Creating a modular application
Creating a multi-module app
Modularized JARs

Going Further with Java Modules
Standalone applications
Services
The unnamed module
Automatic modules 
Migration strategies

Concurrency
Runnable and callable classes
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

File Handling
Overview of working with files
Reading and writing text files
Reading and writing binary files
Serialization
Overview of NIO2
Basic operations
File visitors
Directory watching
File attributes

Accessing Databases using JDBC
JDBC drivers and connections
Statements and results
Obtaining metadata
DataSources
Metadata
JDBC escape syntax
Transaction management
Additional techniques

Security
Security managers
Policy files
Sandboxing
Cryptographic random numbers

Localization and Resource Bundles
Locales
Resource bundles
Locale-specific formatting and parsing

Virtual Courses

ALL of our courses can be delivered virtually. And our Bath public schedule of courses are now available as live virtual sessions, using the popular Zoom Virtual Classroom and remote labs. Delegates can test their access at: www.zoom.us/test

Public Courses

There are no upcoming events

On-Site Courses

Can't attend one of our public classes? Booking for multiple people?

All our courses are available on your site! Delivered for your staff, at your premises.

Contact us to find out more...