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